Macro Excel majuscule

Résolu
Evedll Messages postés 79 Statut Membre -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
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

3 réponses

  1. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
     
    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
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  3. Evedll Messages postés 79 Statut Membre
     
    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
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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