Formater le texte sélectionné en Majuscules ou Minuscules, Excel VBA

Formater le texte sélectionné en Majuscules ou Minuscules, Excel VBA

Voici une explication détaillée du code VBA pour formater le texte sélectionné en Majuscules ou Minuscules dans Excel.
Objectif
Nous souhaitons créer une macro VBA qui permet à l’utilisateur de modifier le texte des cellules sélectionnées pour les convertir soit en Majuscules, soit en Minuscules.
Code VBA étape par étape
1. Ouvrir Excel et accéder à l’éditeur VBA :

  • Ouvrez Excel.
  • Appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.

2. Créer un nouveau module :

  • Dans l’éditeur VBA, faites un clic droit sur n’importe quel élément dans le panneau « Explorateur de projet ».
  • Sélectionnez Insérer > Module. Cela crée un nouveau module où vous pouvez écrire votre code.

3. Écrire le code VBA :

Sub FormatTextUpperLower()
    ' Déclarer les variables
    Dim selectedRange As Range
    Dim cell As Range
    Dim choice As Integer
    ' Demander à l'utilisateur de choisir le format
    choice = MsgBox("Voulez-vous convertir le texte en Majuscules ? " & _
                    "Cliquez sur Oui pour les Majuscules, Non pour les Minuscules.", _
                    vbYesNoCancel + vbQuestion, "Choisissez le format du texte")
    ' Quitter si l'utilisateur annule
    If choice = vbCancel Then
        Exit Sub
    End If
    ' Obtenir la plage de cellules sélectionnées
    Set selectedRange = Selection
    ' Parcourir chaque cellule de la plage sélectionnée
    For Each cell In selectedRange
        ' Vérifier si la cellule contient du texte
        If cell.HasFormula = False And Not IsEmpty(cell.Value) Then
            If choice = vbYes Then
                ' Convertir le texte en Majuscules
                cell.Value = UCase(cell.Value)
            ElseIf choice = vbNo Then
                ' Convertir le texte en Minuscules
                cell.Value = LCase(cell.Value)
            End If
        End If
    Next cell
End Sub

Explication détaillée du code
Passons maintenant à une explication détaillée de chaque partie du code.
1. Déclaration des variables :

  • selectedRange As Range : Cette variable va contenir la plage de cellules que l’utilisateur a sélectionnée. Cela nous permet d’appliquer la mise en forme uniquement aux cellules sélectionnées.
  • cell As Range : Représente chaque cellule individuelle dans la plage sélectionnée. Nous allons parcourir chaque cellule pour appliquer la mise en forme.
  • choice As Integer : Cette variable va stocker le résultat de la boîte de message (choix de l’utilisateur : Oui, Non, ou Annuler). En fonction de ce choix, nous déciderons de convertir le texte en Majuscules ou en Minuscules.

2. Affichage de la boîte de message :

  • La fonction MsgBox est utilisée pour afficher une boîte de dialogue à l’utilisateur, lui demandant s’il souhaite convertir le texte en Majuscules. La boîte propose trois options : « Oui », « Non » et « Annuler ».
  • vbYesNoCancel est une constante qui fournit trois boutons : Oui, Non et Annuler. Si l’utilisateur clique sur « Oui », le texte sera converti en Majuscules. Si l’utilisateur clique sur « Non », le texte sera converti en Minuscules. Si l’utilisateur clique sur « Annuler », la macro s’arrêtera et ne fera rien.

3. Sortir si l’utilisateur choisit « Annuler » :

  • Si l’utilisateur clique sur « Annuler », choice = vbCancel est vérifié. Si cette condition est vraie, la commande Exit Sub est exécutée, ce qui arrête immédiatement l’exécution de la macro.

4. Obtenir la plage de cellules sélectionnées :

  • Set selectedRange = Selection : Cette ligne définit selectedRange comme la plage de cellules que l’utilisateur a sélectionnée dans la feuille Excel. L’objet Selection fait référence aux cellules actuellement sélectionnées.

5. Parcourir chaque cellule de la plage :

  • Nous utilisons la boucle For Each cell In selectedRange pour parcourir chaque cellule de la plage sélectionnée. Cela nous permet d’appliquer la mise en forme à chaque cellule individuellement.

6. Vérifier si la cellule contient du texte :

    • If cell.HasFormula = False And Not IsEmpty(cell.Value) Then : Cette condition permet de s’assurer que nous n’appliquons la mise en forme qu’aux cellules contenant du texte.
      • cell.HasFormula = False : Vérifie si la cellule ne contient pas de formule. Si la cellule contient une formule, elle est ignorée et ne sera pas modifiée.
      • Not IsEmpty(cell.Value) : Vérifie que la cellule n’est pas vide. Si la cellule est vide, elle est ignorée.

7. Convertir en Majuscules ou Minuscules :

  • UCase(cell.Value) et LCase(cell.Value) sont des fonctions VBA permettant de convertir le texte en Majuscules ou Minuscules, respectivement.
    • UCase : Convertit tout le texte d’une chaîne en Majuscules.
    • LCase : Convertit tout le texte d’une chaîne en Minuscules.
  • En fonction du choix de l’utilisateur dans la boîte de message (vbYes pour Majuscules et vbNo pour Minuscules), le texte de la cellule est converti.

8. Fin de la boucle :

  • Après avoir converti le texte pour chaque cellule, la boucle passe à la cellule suivante dans la plage.

Comment exécuter le code
1. Fermez l’éditeur VBA et retournez dans Excel.
2. Sélectionnez une plage de cellules contenant du texte que vous souhaitez formater.
3. Appuyez sur Alt + F8, sélectionnez la macro FormatTextUpperLower et cliquez sur Exécuter.
4. Une boîte de message apparaîtra. Choisissez si vous souhaitez convertir le texte sélectionné en Majuscules ou Minuscules en cliquant sur Oui ou Non. Si vous cliquez sur Annuler, l’opération sera arrêtée.
Remarques supplémentaires

  • Gestion des erreurs : Ce code ne contient pas de gestion des erreurs pour les entrées invalides ou des situations inattendues (par exemple, des valeurs non textuelles comme des nombres ou des dates). Si vous souhaitez améliorer cela, vous pouvez ajouter des vérifications supplémentaires pour vous assurer que la cellule contient bien du texte avant de procéder à la conversion.
  • Spécificité du formatage : Le code actuel ne gère que les valeurs de texte. Il ne prend pas en compte des valeurs comme des dates ou des nombres d’une manière spécifique. Si nécessaire, vous pouvez le modifier pour traiter différemment les valeurs non textuelles.
  • Performance : Ce code traite chaque cellule individuellement dans une boucle. Pour une très grande plage de cellules, cela peut être un peu lent. Il est possible d’optimiser le code pour des plages plus larges.
Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x