Je voudrais convertir une plage (de "I5" à la dernière cellule) en majuscules dans un tableau Excel. Cela fait partie de mon code.

Dim rng As String

rng = Range("I5").SpecialCells(xlCellTypeLastCell).Address(RowAbsolute:=False, ColumnAbsolute:=False)

["I5:" & rng] = [INDEX(UPPER("I5:" & rng),)]
0
Engin Topuzoglu 17 nov. 2020 à 13:16

1 réponse

Meilleure réponse

Les crochets sont un autre univers. Ils attendent une constante et ils obéissent à la syntaxe de la formule, pas à VBA.

Avec une plage fixe, vous iriez avec = [INDEX(UPPER(I5:I20), )] (notez l'absence de " autour de l'adresse). Si vous essayez d'y mettre rng, cela sera compris comme le nom d'une fonction Excel (qui n'existe pas).

Si vous souhaitez conserver l'approche des crochets (je suppose que pour éviter une boucle For explicite), essayez

Range("I5:" & rng).Value = Application.Evaluate("INDEX(UPPER(I5:" & rng & "), )")
1
GSerg 17 nov. 2020 à 10:29