Macro Excel majuscule

Résolu
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. 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. Contributeur
      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
  2. Contributeur
    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
    1. Contributeur
      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