[Excel] Macro majuscule lettre initial
Résolu/Fermé
A voir également:
- [Excel] Macro majuscule lettre initial
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Si et excel - Guide
- É majuscule - Guide
- Word et excel gratuit - Guide
5 réponses
Bonjour je cherche a faire un macro qui me premaitrai pour chaque mot plus long que 4 caracteres mettre la premiere lettre en Majuscule et les suivante en minuscules.
Ex:
YAMAHA YFS 200 BLASTER
deviendrai
Yamaha YFS 200 Blaster
et non pas
Yamaha yfs 200 blaster
Je vous remercie par avance
Cordialement
Ex:
YAMAHA YFS 200 BLASTER
deviendrai
Yamaha YFS 200 Blaster
et non pas
Yamaha yfs 200 blaster
Je vous remercie par avance
Cordialement
Utilisateur anonyme
3 mai 2006 à 20:20
3 mai 2006 à 20:20
Bonjour,
voici un exemple :
Lupin
voici un exemple :
Sub Transforme() Dim Valeur As String Dim Plage, Cellule As Range ' Ici spécifier la plage à couvrir ! Set Plage = Range("A1:C3") For Each Cellule In Plage Valeur = Mid(Cellule.Value, 2) Valeur = LCase(Valeur) Valeur = UCase(Mid(Cellule.Value, 1, 1)) & Valeur Cellule.Value = Valeur Next Cellule End Sub
Lupin
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
3 mai 2006 à 23:58
3 mai 2006 à 23:58
Salut Lupin et Simon,
contiennent tous plusieurs lignes chacune en faisant alt+entrée
normalement c'est chr(10)
la première lettre de chaque ligne soit en majuscule...
Je ne crois pas que c'est ça qu'il veut simon.
Avec ton code si dans la cells(1,1) j'ai
ccm
simon
lupin
armojax
jdvo
(donc passage à la ligne avec Alt+Enter)
j'obtiens
Ccm
simon
lupin
armojax
jdvo
Moi j'ai compris qu'il veut obtenir
Ccm
Simon
Lupin
Armojax
Jdvo
Je ne suis pas un expert en VBA, donc sûrement toi ou Jdvo ou Armojax, vous trouverez une solution meilleure.
P.S. La macro mets en forme la cells(1,1) uniquement. Il faut adapter en fonction des besoins.
contiennent tous plusieurs lignes chacune en faisant alt+entrée
normalement c'est chr(10)
la première lettre de chaque ligne soit en majuscule...
Je ne crois pas que c'est ça qu'il veut simon.
Avec ton code si dans la cells(1,1) j'ai
ccm
simon
lupin
armojax
jdvo
(donc passage à la ligne avec Alt+Enter)
j'obtiens
Ccm
simon
lupin
armojax
jdvo
Moi j'ai compris qu'il veut obtenir
Ccm
Simon
Lupin
Armojax
Jdvo
Je ne suis pas un expert en VBA, donc sûrement toi ou Jdvo ou Armojax, vous trouverez une solution meilleure.
Sub maj() Dim l As Long, i As Long Dim sTmp As String, sRes As String, sStr As String sStr = Cells(1, 1) l = Len(sStr) For i = 1 To l sRes = sRes & Mid(sStr, i, 1) If (Mid(sStr, i, 1) = Chr(10)) Then sRes = Mid(sRes, 1, i) & UCase(Mid(sStr, i + 1, 1)) i = i + 1 End If Next Cells(1, 1) = UCase(Left(sRes, 1)) & Mid(sRes, 2, l + 1) End Sublami20j
P.S. La macro mets en forme la cells(1,1) uniquement. Il faut adapter en fonction des besoins.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
4 mai 2006 à 00:38
4 mai 2006 à 00:38
Re,
Petites corrections :
1.
La variable sTmp ne sers à rien (c'était pour tester)
Au lieu de
Dim sTmp As String, sRes As String, sStr As String
Ecrire
Dim sRes As String, sStr As String
2.
Au lieu de jdvo
Lire jvdo
Désolé.
lami20j
Petites corrections :
1.
La variable sTmp ne sers à rien (c'était pour tester)
Au lieu de
Dim sTmp As String, sRes As String, sStr As String
Ecrire
Dim sRes As String, sStr As String
2.
Au lieu de jdvo
Lire jvdo
Désolé.
lami20j
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
4 mai 2006 à 03:43
4 mai 2006 à 03:43
Bonjour,
merci lamivinj , je n'avais pas fais la nuance. Toute les solutions sont bonnes si le travail est fait, alors voici j'ai reconstruis une autre version avec l'explication du [ Set Plage = ] ainsi que la structure [ For Each Cellule In Plage ], le inputbox bien sur ..., et l'aide de lamivinj :-)
Lupin
merci lamivinj , je n'avais pas fais la nuance. Toute les solutions sont bonnes si le travail est fait, alors voici j'ai reconstruis une autre version avec l'explication du [ Set Plage = ] ainsi que la structure [ For Each Cellule In Plage ], le inputbox bien sur ..., et l'aide de lamivinj :-)
Sub Transforme() Dim Cellule As Range, Plage As Range Dim sStr As String, sRes As String Dim Cmpt As Long, Ptr As Long Set Plage = Application.InputBox( _ "Sélectionner la plage à couvrir", _ "Plage:", _ ActiveWindow.Selection.Address(0, 0), _ Type:=8) If Not (Plage Is Nothing) Then For Each Cellule In Plage sStr = UCase(Left(Cellule.Value, 1)) & _ LCase(Mid(Cellule.Value, 2)) Ptr = Len(sStr) For Cmpt = 1 To Ptr sRes = Mid(sStr, Cmpt, 1) If (sRes = Chr(10)) Then sStr = (Mid(sStr, 1, Cmpt)) & _ UCase(Mid(sStr, Cmpt + 1, 1)) & _ Mid(sStr, Cmpt + 2) End If Next Cmpt Cellule.Value = sStr Next Cellule End If End Sub
Lupin
13 déc. 2006 à 17:08
2 avril 2009 à 22:50
j'ai essayé la fonction PROPER que tu propose sur le site, mais ca ne marche pas -> il s'agit de la meme structure qu'une fonction nompropre, ou concatener, Non? (est une fonction pour exel parametré en anglais?)
Merci
a+