Macro : Transformer certaines lettres en majuscules
Fermé
lenovo
-
22 juin 2015 à 13:53
cs_Le Pivert Messages postés 7883 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 18 mars 2023 - 22 juin 2015 à 19:17
cs_Le Pivert Messages postés 7883 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 18 mars 2023 - 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 ?
- Comment trouver les mots écrits en majuscules sur Word ? ✓ - Forum Word
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ? ✓ - Forum Python
- Trouver le mot réellement écrit en lettres capitales PIX - Forum Word
- MAJUSCULE / minuscules dans WORD ✓ - Forum Word
- Comment savoir si l'on écrit en majuscules ? - Forum Bureautique
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
7883
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
18 mars 2023
724
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