Visual Basic For Applications
La première lettre en majuscule !
Une solution en VBA pour que tous les textes commencent par une majuscule dans vos fichiers Excel.
Maîtriser la casse
Convertir des majuscules en minuscules ou vice versa est possible de plusieurs manières :
- Grâce aux formules (vous pouvez consulter l’article correspondant).
- Avec du VBA comme nous allons le voir dans cet article.
Lorsque votre fichier contient beaucoup de colonnes ou lignes à traiter, il peut être plus rapide de passer par une macro que par les formules.
La macro
La macro à la fin de cet article tranforme tous les textes pour mettre la première lettre en majuscule et que le reste du texte soit en minuscules. Le code ignore cependant toutes les cellules contenant autre chose que du texte.
Les contrôles de type de valeur
Le code est conçu pour ne pas traiter les nombres et les cellule contenant des formules et doit donc effectuer quelques contrôles. Ces vérifications sont faîtes grâce à des fonctions et propriétés.
La fonction Isnumeric
La fonction Isnumeric() permet de renvoyer VRAI si la valeur est numérique ou FAUX si elle ne l’est pas.
La fonction IsEmpty
IsEmpty(), comme la fonction précédente, renvoie VRAI si la valeur est vide et FAUX si elle n’est pas.
La propriété .HasFormula
Le troisème controle s’effectue grâce est à la propriété .HasFormula qui donne VRAI si la cellule contient une formule et FAUX si elle contient une valeur fixe ou vide.
Le code
Pour l’utiliser, il suffit de copier le code dans votre éditeur VBA puis, lorsque vous avez sélectionné la feuille que vous souhaitez traiter, de lancer la macro. Le code va traiter l’ensemble de votre feuille.
Pensez à vérifier que des cellules vides ne soient pas actives afin de faire diminuer le temps d’exécution de la macro.
La macro utilise deux types de fonctions conditionnelles. Nous vous invitons à lire notre article sur le sujet pour en apprendre plus sur la fonction If et Case.
'Auteur : www.Indexmatch.fr 'Date : 10/2017 Option Explicit Sub premiere_lettre_majuscule() Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Dim compteur As Date Dim compteur2 As Date Dim ControlValue As String Dim Cell As Range Dim Adresse As String Dim AdresseColumn As Integer Dim AdresseRow As Integer Adresse = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Address 'recherche la dernière cellule active de votre feuille. AdresseColumn = Range(Adresse).Column AdresseRow = Range(Adresse).Row For Each Cell In Range(Cells(1, 1), Cells(AdresseRow, AdresseColumn)) If IsNumeric(Cell.Value) = True Then ControlValue = 1 If IsNumeric(Cell.Value) = False Then ControlValue = 2 If Cell.HasFormula = True Then ControlValue = 3 If IsEmpty(Cell.Value) = True Then ControlValue = 4 Select Case ControlValue Case 1 Cell.Value = Cell.Value Case 2 Cell.Value = UCase(Left(Cell.Value, 1)) & LCase(Right(Cell.Value, Len(Cell.Value) - 1)) Case 3 Cell.Value = Cell.Formula Case 4 Cell.Value = Cell.Value End Select Next Cell Application.Calculation = xlCalculationAutomatic End Sub |