Macro Excel majuscule

Résolu/Fermé
Evedll Messages postés 74 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 26 septembre 2023 - 14 août 2011 à 18:42
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 - 14 août 2011 à 21:22
Bonjour,
En utilisant cette macro qui me permet de mettre en majuscule (ou seulement la première lettre en majuscule) je constate un disfonctionnement.
J'aimerai mettre en majuscule les valeurs des cellules B3, et I8:I11. Seulement, les données des cellules I8 à I11 sont remplacées par les valeurs de la cellule B3.
Cela marchait bien en utilisant seulement l'adresse B3 mais quand j'ai voulu modifier pour adapter aux autres adresses, cela ne marche plus.
Etant donné que je n'ai que très peu de connaissances en macro, je récupère des lignes afin de mieux les comprendre et je les adapte ensuite pour les utiliser. Peut-être ai-je mal interpreté celle ci ?
Si quelqu'un veut bien avoir l'amabilité de m'aider et surtout de m'expliquer mon erreur.
Je vous remercie d'avance

Range("B3,I8,I9,I10,I11").Select
Dim caracmaj As String
caracmaj = Selection.Value
caracmaj = UCase(caracmaj) 'UCase pour majuscule et LCase pour minuscule
Selection.Value = caracmaj

Range("B4,J8,J9,J10,J11").Select
Dim CaracNomPropre As String
CaracNomPropre = Selection.Value
CaracNomPropre = Application.Proper(CaracNomPropre)
Selection.Value = CaracNomPropre

Evelyne

A voir également:

3 réponses

Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
Modifié par Mytå le 14/08/2011 à 20:22
Salut le forum

Une façon de faire
Sub Cell_Maj()   
Dim MaPlage As Range   
Dim Cellule As Range   

Set MaPlage = Range("B3,I8:I11")   

For Each Cellule In MaPlage   
  Cellule = LCase(Cellule)   
Next Cellule   

Set MaPlage = Nothing   

End Sub   


Mytå

Edition : Suppression du deuxième code non opérationnel
Quelle prétention de prétendre que l'informatique est récente
Adam et Eve avaient déjà un Apple ! [MsProject 2003(FR), Excel 2003-2007(FR)]
1
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 210
Modifié par eriiic le 14/08/2011 à 19:45
Bonjour,

Lorsque tu écris caracmaj = UCase(caracmaj) qui est équivalent à
caracmaj = UCase(Range("B3,I8,I9,I10,I11"))
UCase() ne prend en compte que la 1ère valeur de ta plage et la reproduit partout.

Il faut que tu boucles sur toutes les cellules de ta plage avec par exemple :
Dim c As Range   
For Each c In [B3,I8,I9,I10,I11]   
    c = UCase(c)   
Next c


eric

edit: on s'est croisé myta... J'ai un doute sur ta 2nde proposition, ucase() n'a pas l'air d'aimer les matrices.
0
Evedll Messages postés 74 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 26 septembre 2023
14 août 2011 à 20:19
Merci à vous deux,
Je viens de tester vos solutions. En ce qui concerne ta deuxième solution Myta, j'ai remarqué qu'elle copie les mêmes données que la première cellule comme le faisait la mienne (j'ai Excel 2007, je ne sais pas si cela a une incidence). Sinon, l'autre fonctionne correctement.
Dans la proposition d'Eric, j'ai compris qu'il faut que je mette les cellules entre crochets et non entre parenthèses et guillemets.
C'est super sympa de votre part d'aider les autres.
Merci beaucoup.
J'aurai surement d'autres questions à venir...
A bientôt de vous lire
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 210
Modifié par eriiic le 14/08/2011 à 21:23
Re,
j'ai compris qu'il faut que je mette les cellules entre crochets et non entre parenthèses et guillemets
Les 2 écritures sont valables, les [ ] c'est juste une écriture abrégée.
eric
0