Comment définir un range de façon dynamique sur VBA pour Excel?

Résolu/Fermé
SophieCCM Messages postés 2 Date d'inscription mardi 17 décembre 2019 Statut Membre Dernière intervention 17 décembre 2019 - Modifié le 17 déc. 2019 à 18:48
SophieCCM Messages postés 2 Date d'inscription mardi 17 décembre 2019 Statut Membre Dernière intervention 17 décembre 2019 - 17 déc. 2019 à 19:02
Bonjour à tous,

EDIT - j'ai trouvé... c'était une erreur de syntaxe dans le "For i = etc."

J'essaye de définir un range de façon dynamique. J'ai essayé plusieurs options :
--> Set rngLigne = Columns("D:T").Rows(i)
--> Set rngLigne = Range("D" & i & ":T" & i)
--> Set rngLigne = Range(Cells(i,4),Cells(i,20))

mais aucune ne fonctionne comme je voudrais. Quand j'exécute la macro pas à pas, le rngLigne reste "Nothing".

Qui peut m'aider?

Merci,
Sophie

PS ci-dessous le code complet. En bref je voudrais qu'il me compte autmatiquement le nombre de cases rouges, oranges et vertes dans une ligne donnée et qu'il m'inscrive ce total en fin de ligne


Sub Compte()

Dim i As Integer, counterRouge As Integer, counterOrange As Integer, counterVert As Integer
Dim rngLigne As Range
Dim Rouge As Long, Orange As Long, Vert As Long
Dim c As Variant

Rouge = RGB(255, 0, 0)
Orange = RGB(255, 204, 0)
Vert = RGB(0, 255, 0)

counterRouge = 0
counterOrange = 0
counterVert = 0

For i = 2 To i = 188
Set rngLigne = Columns("D:T").Rows(i)

    For Each c In rngLigne.Cells
    
       Select Case c.Interior.Color
            Case Rouge
            counterRouge = counterRouge + 1
            Case Orange
            counterOrange = counterOrange + 1
            Case Vert
            counterVert = counterVert + 1
        End Select

    Next

Range("V" & i) = counterRouge
Range("W" & i) = counterOrange
Range("X" & i) = counterVert

Next

End Sub


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

1 réponse

NHenry Messages postés 15163 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 1 novembre 2024 345
17 déc. 2019 à 18:49
De mémoire :
Set rngLigne = Range("D" & i & ":T" & i)
si le nombre est positif, ça met un espace devant.
Regardes la valeur obtenu par la concaténation avec un espion.
0
SophieCCM Messages postés 2 Date d'inscription mardi 17 décembre 2019 Statut Membre Dernière intervention 17 décembre 2019
17 déc. 2019 à 19:02
Merci beaucoup. Entre temps j'ai édité, car j'ai trouvé l'erreur de syntaxe qui se trouvait juste au-dessus.
Mais merci :-)
sophie
0