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

Signaler
Messages postés
2
Date d'inscription
mardi 17 décembre 2019
Statut
Membre
Dernière intervention
17 décembre 2019
-
Messages postés
2
Date d'inscription
mardi 17 décembre 2019
Statut
Membre
Dernière intervention
17 décembre 2019
-
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

Messages postés
14676
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
8 juillet 2020
236
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.
Messages postés
2
Date d'inscription
mardi 17 décembre 2019
Statut
Membre
Dernière intervention
17 décembre 2019

Merci beaucoup. Entre temps j'ai édité, car j'ai trouvé l'erreur de syntaxe qui se trouvait juste au-dessus.
Mais merci :-)
sophie