Macro : Transformer certaines lettres en majuscules
lenovo
-
cs_Le Pivert Messages postés 7904 Date d'inscription Statut Contributeur Dernière intervention -
cs_Le Pivert Messages postés 7904 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Dans mon tableau Excel, j'ai une colonne qui contient dans chaque cellule la couleur d'un objet en français et en anglais comme ceci :
Gris Foncé / Dark Grey
Bleu Ciel / Sky Blue
J'ai utilisé ce code pour mettre des majuscules en début de mot :
Mais ça ne convient pas car je voudrais que mes cellules aient cette forme (des majuscules sur la première lettre de la cellule et sur la lettre après le /) :
Gris foncé / Dark Grey
Bleu ciel / Sky blue
Je ne sais vraiment comment m'y prendre... Si vous avez une idée n'hésitez pas!
Merci d'avance
Dans mon tableau Excel, j'ai une colonne qui contient dans chaque cellule la couleur d'un objet en français et en anglais comme ceci :
Gris Foncé / Dark Grey
Bleu Ciel / Sky Blue
J'ai utilisé ce code pour mettre des majuscules en début de mot :
Sheets("Feuil3").Range("T5").Select
ActiveCell.Value = StrConv(ActiveCell.Value, vbProperCase)
For I = 1 To 400
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = StrConv(ActiveCell.Value, vbProperCase)
Next I
Mais ça ne convient pas car je voudrais que mes cellules aient cette forme (des majuscules sur la première lettre de la cellule et sur la lettre après le /) :
Gris foncé / Dark Grey
Bleu ciel / Sky blue
Je ne sais vraiment comment m'y prendre... Si vous avez une idée n'hésitez pas!
Merci d'avance
A voir également:
- Dans le texte, un seul mot a réellement été écrit en lettres capitales (majuscules). quel est ce mot ?
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro maker - Télécharger - Divers Utilitaires
- Macro word - Guide
4 réponses
Bonjour Lenovo, bonjour le forum,
Essaie comme ça :
Essaie comme ça :
Sub Macro1() Dim O As Worksheet 'déclare la variable O (Onglet) Dim TC As Variant 'déclare la variable TC (Tableau de Cellules) Dim I As Integer 'déclare la variable I (Incrément) Dim P As Byte 'déclare la variable P (Position) Set O = Sheets("Feuil3") 'définit l'onglet O TC = O.Range("T5:T" & O.Cells(Application.Rows.Count, 20).End(xlUp).Row) 'définit le tableau de cellules TC For I = 1 To UBound(TC, 1) 'boucles sur toutes les lignes I du tableau de cellules TC TC(I, 1) = LCase(TC(I, 1)) 'met la valeur de TC(I,1) en minuscule Mid(TC(I, 1), 1, 1) = UCase(Mid(TC(I, 1), 1, 1)) 'Met la premiere lettre en majuscules P = InStr(1, TC(I, 1), Split(TC(I, 1), " / ")(1), vbTextCompare) 'calcule la position de la première lettre après Slash + Espace ( / ) Mid(TC(I, 1), P, 1) = UCase(Mid(TC(I, 1), P, 1)) 'met cette lettre en majuscule Next I 'prochaine ligne de la boucle O.Range("T5").Resize(UBound(TC, 1), 1).Value = TC 'renvoie le tableau TC dans la cellule T5 End Sub
Merci de prendre le temps de me répondre.
Lorsque je compile votre code (en changeant juste I par A, ayant déjà une variable de ce nom), j'obtiens une erreur d'exécution "Argument ou appel de procédure incorrect" sur la ligne suivante :
Lorsque je compile votre code (en changeant juste I par A, ayant déjà une variable de ce nom), j'obtiens une erreur d'exécution "Argument ou appel de procédure incorrect" sur la ligne suivante :
Mid(TC(A, 1), 1, 1) = UCase(Mid(TC(A, 1), 1, 1)) 'Met la premiere lettre en majuscules
Bonjour Lenovo, bonjour le forum,
Je ne comprends pas. Chez moi ça fonctionne :
Regarde la pièce jointe :
http://www.cjoint.com/c/EFwn1MDHngI
Je ne comprends pas. Chez moi ça fonctionne :
Sub Macro1() Dim O As Worksheet 'déclare la variable O (Onglet) Dim TC As Variant 'déclare la variable TC (Tableau de Cellules) Dim A As Integer 'déclare la variable A (incrément) Dim P As Byte 'déclare la variable P (Position) Set O = Sheets("Feuil3") 'définit l'onglet O TC = O.Range("T5:T" & O.Cells(Application.Rows.Count, 20).End(xlUp).Row) 'définit le tableau de cellules TC For A = 1 To UBound(TC, 1) 'boucles sur toutes les lignes I du tableau de cellules TC TC(A, 1) = LCase(TC(A, 1)) 'met la valeur de TC(I,1) en minuscule Mid(TC(A, 1), 1, 1) = UCase(Mid(TC(A, 1), 1, 1)) 'Met la premiere lettre en majuscules P = InStr(1, TC(A, 1), Split(TC(A, 1), " / ")(1), vbTextCompare) 'calcule la position de la première lettre après Slash + Espace ( / ) Mid(TC(A, 1), P, 1) = UCase(Mid(TC(A, 1), P, 1)) 'met cette lettre en majuscule Next A 'prochaine ligne de la boucle O.Range("T5").Resize(UBound(TC, 1), 1).Value = TC 'renvoie le tableau TC dans la cellule T5 End Sub
Regarde la pièce jointe :
http://www.cjoint.com/c/EFwn1MDHngI
Bonjour,
Une autre méthode avec split:
Une autre méthode avec split:
Dim chaine, chaine1, chaine2 As String Dim x As Integer Dim Tableau() As String Dim I As Integer For x = 1 To 10 ' a adapter a la plage de cellule chaine = Cells(x, 1).Value 'valeur cellule chaine = LCase(chaine) 'tout en minuscule 'découpe la chaine en fonction des " / " 'le résultat de la fonction Split est stocké dans un tableau Tableau = Split(chaine, " / ") 'boucle sur le tableau pour visualiser le résultat For I = 0 To UBound(Tableau) 'Le résultat s'affiche dans la fenêtre d'execution de l'éditeur de macros 'Debug.Print Tableau(I) chaine1 = Tableau(0) chaine1 = UCase(Left(chaine1, 1)) & Mid(chaine1, 2) '1ère lettre majuscule chaine2 = Tableau(1) chaine2 = UCase(Left(chaine2, 1)) & Mid(chaine2, 2) '1ère lettre majuscule Next I chaine = chaine1 & " / " & chaine2 'reforme la chaine Cells(x, 1).Value = chaine 'modifie la cellule Next x