Range selon coordonnées type Range.(cells(1,2),cells(5,2)), bloqué

Bonjour à tous,

je suis bloqué, je tente de faire une boucle For avec un Range a colonne et ligne variable mais impossible, j'ai essayé donc

de remplacer par des chiffres pour voir et toujours même problème, je ne comprends pas pourquoi.

si je met ce code ça marche :

For Each C In Sheets(1).Range("B1:B5")

si je met son équivalent en coordonnées ça ne marche plus:

For Each C In Sheets(1).Range(Cells(1, 2), Cells(5, 2))

erreur d'exécution 1004.

je souhaite l'écrire sous cette forme car je fais appelle a des lignes et colonnes variables.

For Each C In Sheets(1).Range(Cells(1, Col_Var), Cells(Fin_Tabl, Col_Var))

j'ai essayé de regarder si il ne me manquait pas une virgule ou une parenthèse mais tous les exemples que je trouve sur le net sont équivalents à ça.

Bonjour

et si vous faites ceci plutôt

For Each C In Sheets(1).Range(Sheets(1).Cells(1, 2), Sheets(1).Cells(5, 2))

A noter que Sheets(1) correspond à l'onglet placé en position 1 dans votre fichier

Cordialement

Edit : ou comme Cousinhb29 dans son message après le mien

Bonjour,

Comme tu fais référence à la Sheets(1) pour le Range, il faut aussi le faire pour les Cells...

Type : (Note le point devant Cells)

With Sheets(1)
   For Each C In .Range(.Cells(1, 2), .Cells(5, 2))
   ....
End With

Oupss, à la bourre...

Bonjour Dan

pour moi

For Each C In Sheets(1).Range(Cells(1, 2), Cells(5, 2))

la formule fonctionne

joins ton fichier pour voir ce qui se passe vraiment

Bonjour…

À essayer pour une plage de cellules contiguës , où Cells(1, 1) est la première cellule de celle-ci, L son nombre de lignes et C son nombre de colonnes,

  Dim R as Range, L as Long, C as Long
  L=5: C=3 ‘par exemple
  For Each R In Feuil1.Cells(1,1).Resize(L, C)

Remarque : si la macro est écrite dans la fenêtre des codes de la feuille voulue, la référence avec son nom est inutile !

effectivement vous aviez raison !

il manquait l'instruction Sheet. au niveau des cells.

en fait je pensais que le fait de mettre avant l'instruction Sheet.(1).range .... alors tous ce qui suivait était valable pour la feuill 1 mais visiblement non

Du coup gullaud ça doit marcher chez toi car tu as du mettre la formule VBA sur la feuille 1, mais si tu créer une feuille 2 et que tu écris dans la feuille 1

For Each C In Sheets(2).Range(Cells(1, 2), Cells(5, 2))

ça ne doit plus marcher.

Merci pour votre aide !

Rechercher des sujets similaires à "range coordonnees type bloque"