Macro : Transformer certaines lettres en majuscules
Fermé
lenovo
-
22 juin 2015 à 13:53
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 22 juin 2015 à 19:17
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 22 juin 2015 à 19:17
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
- Macro word - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
- Macro logiciel - Télécharger - Organisation
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
4 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
22 juin 2015 à 14:43
22 juin 2015 à 14:43
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
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
22 juin 2015 à 15:54
22 juin 2015 à 15:54
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
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
22 juin 2015 à 19:17
22 juin 2015 à 19:17
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