Microsoft 365 Définir une plage variable dans le cadre d'une boucle

chris6999

XLDnaute Impliqué
Bonjour Le FORUM

J'essaye de prédéfinir une plage variable sur laquelle passera une boucle de type for each.
Mes connaissances en VB étant fort limitées j'ai du mal à trouver …. les mots pour le dire.

Ma plage va de D3 à la cellule de la dernière donnée du tableau.

Voici mon code :

Dercol = Cells(2, Cells.Columns.Count).End(xlToLeft).Column
Derlig = Range("A" & Rows.Count).End(xlUp).Row

For Each c In Cells(range("D3"), Dercol & Derlig)
If c.Interior.ColorIndex = 2 Then c.Interior.ColorIndex = -4142
Next c

Je ne parviens pas à exécuter mon code car le système ne parvient pas à identifier la plage.

Quelqu'un peut-il m'aider dans la rédaction de ce cette commande.

merci par avance

Bien cordialement
 

Jacky67

XLDnaute Barbatruc
Bonjour Le FORUM

J'essaye de prédéfinir une plage variable sur laquelle passera une boucle de type for each.
Mes connaissances en VB étant fort limitées j'ai du mal à trouver …. les mots pour le dire.

Ma plage va de D3 à la cellule de la dernière donnée du tableau.

Voici mon code :

Dercol = Cells(2, Cells.Columns.Count).End(xlToLeft).Column
Derlig = Range("A" & Rows.Count).End(xlUp).Row

For Each c In Cells(range("D3"), Dercol & Derlig)
If c.Interior.ColorIndex = 2 Then c.Interior.ColorIndex = -4142
Next c

Je ne parviens pas à exécuter mon code car le système ne parvient pas à identifier la plage.

Quelqu'un peut-il m'aider dans la rédaction de ce cette commande.

merci par avance

Bien cordialement
Bonjour à tous
Essaye avec
VB:
For Each c In Range([D3], Cells(derlig, dercol))
OU
For Each c In Range(Cells(3, "D"), Cells(derlig, dercol))

*Pour tester la plage pris en considération, on peut utiliser, par exemple
VB:
MsgBox Range([D3], Cells(derlig, dercol)).Address

**On pourrait aussi sans vba faire cela avec la mise en forme conditionnelle
 
Dernière édition:

chris6999

XLDnaute Impliqué
Bonjour à tous
Essaye avec
VB:
For Each c In Range([D3], Cells(derlig, dercol))
OU
For Each c In Range(Cells(3, "D"), Cells(derlig, dercol))

*Pour tester la plage pris en considération, on peut utiliser, par exemple
VB:
MsgBox Range([D3], Cells(derlig, dercol)).Address

**On pourrait aussi sans vba faire cela avec la mise en forme conditionnelle

Merci Jacky

J'ai opté pour For Each c In Range(Cells(3, "D"), Cells(derlig, dercol)) car c'est proche de ce que j'avais tenté de faire au départ. J'imagine que range et cells ne font pas bon ménage ...

Tu as bien compris que je poursuivais ma réflexion sur le dénombrement des cellules non colorisées ...
Du coup ça marche nickel : le code passent les cellules "blanches" en "transparentes" et ensuite le nombre de cellules transparentes dénombrées est cohérent.

Merci encore pour ton aide précieuse sur mes 2 derniers post.
Très bon Week-end.
 

chris6999

XLDnaute Impliqué
bonsoir,
VB:
For Each c In Range(Range("D3"), Cells(Cells.Rows.Count, "D").End(xlUp))
    If c.Interior.ColorIndex = 2 Then c.Interior.ColorIndex = -4142
Next


Bonsoir et merci dysorthographie pour ta réponse.
J'ai l'impression que la plage n'est pas balayée correctement. ...
Il me reste des cellules blanches après passage de la macro.

J'ai finalement opté pour
For Each c In Range(Cells(3, "D"), Cells(derlig, dercol))
Je te remercie néanmoins pour l'intérêt que tu as porté à ma demande.

Bonne soirée
 

Discussions similaires

Réponses
12
Affichages
662

Membres actuellement en ligne

Statistiques des forums

Discussions
312 069
Messages
2 085 040
Membres
102 763
dernier inscrit
NICO26