Comment faire avec For Each ?
Résolu/Fermé
jen_peplu
Messages postés
33
Date d'inscription
samedi 4 décembre 2010
Statut
Membre
Dernière intervention
25 mars 2012
-
11 avril 2011 à 19:05
jen_peplu Messages postés 33 Date d'inscription samedi 4 décembre 2010 Statut Membre Dernière intervention 25 mars 2012 - 13 avril 2011 à 20:21
jen_peplu Messages postés 33 Date d'inscription samedi 4 décembre 2010 Statut Membre Dernière intervention 25 mars 2012 - 13 avril 2011 à 20:21
A voir également:
- Comment faire avec For Each ?
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Copytrans heic for windows - Télécharger - Visionnage & Diaporama
- Download instagram for pc - Télécharger - Divers Communication
- Saveaspdf.exe for office 2007 - Télécharger - Bureautique
- Idm for mac - Télécharger - Téléchargement & Transfert
4 réponses
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 427
Modifié par ccm81 le 11/04/2011 à 21:03
Modifié par ccm81 le 11/04/2011 à 21:03
bonsoir,
je ne sais pas si j'ai bien compris
si ça ne convient pas, tu expliques
RQ. j'ai mis des identificateurs plus explicites
bonne suite
je ne sais pas si j'ai bien compris
Sub ajouter() Dim com As Range Dim pre As Range Dim cel As Range Set com = Range("commande") Set pre = Range("previs") For Each cel In com If cel.Value > 0 Then pre.Cells(cel.Row, cel.Column).Value = pre.Cells(cel.Row, cel.Column).Value + cel.Value End If Next cel End Sub
si ça ne convient pas, tu expliques
RQ. j'ai mis des identificateurs plus explicites
bonne suite
jen_peplu
Messages postés
33
Date d'inscription
samedi 4 décembre 2010
Statut
Membre
Dernière intervention
25 mars 2012
12 avril 2011 à 20:26
12 avril 2011 à 20:26
Bonsoir ccm81
Merci d'avoir répondu à ma question. J'ai testé ta procédure en pas à pas détaillé mais rien ne se passe. Toutes les lignes sont passées une première fois puis If.., End If, Next cel et ça recommence If.., End If, Next cel, aucun message d'erreur et rien ne se produit.
J'ai planché de mon côté sur la base de ce que tu as produit voilà où j'en suis arrivé :
Sub ajouter()
Dim com As Range
Dim cel As Range
Set com = Range("commande")
For Each cellules In com
If cel.Value > 0 Then
cel.Offset(0, -2).Value = cel.Offset(0, -2).Value + cel.Value
End If
Next cellules
End Sub
Si ce n'est trop te demander, peux-tu m'expliquer succinctement cette ligne "pre.Cells(cel.Row, cel.Column).Value = pre.Cells(cel.Row, cel.Column).Value + cel.Value", je pense avoir saisi et je ne vois pas pourquoi cela ne fonctionne pas.
Merci, bonne soirée.
Merci d'avoir répondu à ma question. J'ai testé ta procédure en pas à pas détaillé mais rien ne se passe. Toutes les lignes sont passées une première fois puis If.., End If, Next cel et ça recommence If.., End If, Next cel, aucun message d'erreur et rien ne se produit.
J'ai planché de mon côté sur la base de ce que tu as produit voilà où j'en suis arrivé :
Sub ajouter()
Dim com As Range
Dim cel As Range
Set com = Range("commande")
For Each cellules In com
If cel.Value > 0 Then
cel.Offset(0, -2).Value = cel.Offset(0, -2).Value + cel.Value
End If
Next cellules
End Sub
Si ce n'est trop te demander, peux-tu m'expliquer succinctement cette ligne "pre.Cells(cel.Row, cel.Column).Value = pre.Cells(cel.Row, cel.Column).Value + cel.Value", je pense avoir saisi et je ne vois pas pourquoi cela ne fonctionne pas.
Merci, bonne soirée.
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 427
13 avril 2011 à 10:18
13 avril 2011 à 10:18
re
1. Pour mon exemple, je l'ai fabriqué dans l'esprit de ta demande en utilisant deux plages "commande" et "previs".
2. je crois que le pb vient du fait que tes plages commencent en ligne 3, et j'ai fait mon exemple avec des plages commençant en ligne 1, il faut donc tenir compte du décalage, et voila, en principe le code correct.
3. pre.Cells(cel.Row, cel.Column).Value
les cellules de la plage "pre" sont accessibles par leurs coordonnées (lig, col) relatives à cette plage, cad que la 1° cellule de "pre" est accessible avec pre.Cells(1,1) alors que pour la 1° cellule de "commande" cel.row vaut 3 (chez toi), d'où le décalage
4. Ta solution avec offset permet d'éviter ce pb (attention à l'identificateur pour ta cellule courante qui change en cours de route cellules-cel)
bonne suite
1. Pour mon exemple, je l'ai fabriqué dans l'esprit de ta demande en utilisant deux plages "commande" et "previs".
2. je crois que le pb vient du fait que tes plages commencent en ligne 3, et j'ai fait mon exemple avec des plages commençant en ligne 1, il faut donc tenir compte du décalage, et voila, en principe le code correct.
3. pre.Cells(cel.Row, cel.Column).Value
les cellules de la plage "pre" sont accessibles par leurs coordonnées (lig, col) relatives à cette plage, cad que la 1° cellule de "pre" est accessible avec pre.Cells(1,1) alors que pour la 1° cellule de "commande" cel.row vaut 3 (chez toi), d'où le décalage
4. Ta solution avec offset permet d'éviter ce pb (attention à l'identificateur pour ta cellule courante qui change en cours de route cellules-cel)
Sub ajouter() Dim com As Range Dim pre As Range Dim cel As Range Set com = Range("commande") Set pre = Range("previs") For Each cel In com If cel.Value > 0 Then pre.Cells(cel.Row - 2, cel.Column).Value = pre.Cells(cel.Row - 2, cel.Column).Value + cel.Value End If Next cel End Sub
bonne suite
jen_peplu
Messages postés
33
Date d'inscription
samedi 4 décembre 2010
Statut
Membre
Dernière intervention
25 mars 2012
13 avril 2011 à 20:21
13 avril 2011 à 20:21
Bonsoir
Effectivement, dans la suite de mon programme, je colle les valeurs de « previs » dans un tableau sur une autre feuille et j'ai un décalage qui s'opère d'autant de cellule, lié au fait que ma plage commence ligne 3. Solution adoptée, démarrer mes plages ligne 1.
J'ai essayé ton code, cela ne marche pas chez moi. J'ai modifié le « cel.Row-2 en cel.Row+2 » car avec cette valeur le controltiptext m'indique cel.Row =3 (ma plage commence toujours ligne 3) et là, ça ne marche pas non plus, pas d'erreur, mais les cellules ne s'additionnent pas.
Merci quand même, je te dérange pas plus avec ça car ta syntaxe m'a permis de créer la mienne, un peu plus simpliste j'en conviens, mais c'est un début et je reviendrai sur la tienne plus tard.
A une prochaine.
Effectivement, dans la suite de mon programme, je colle les valeurs de « previs » dans un tableau sur une autre feuille et j'ai un décalage qui s'opère d'autant de cellule, lié au fait que ma plage commence ligne 3. Solution adoptée, démarrer mes plages ligne 1.
J'ai essayé ton code, cela ne marche pas chez moi. J'ai modifié le « cel.Row-2 en cel.Row+2 » car avec cette valeur le controltiptext m'indique cel.Row =3 (ma plage commence toujours ligne 3) et là, ça ne marche pas non plus, pas d'erreur, mais les cellules ne s'additionnent pas.
Merci quand même, je te dérange pas plus avec ça car ta syntaxe m'a permis de créer la mienne, un peu plus simpliste j'en conviens, mais c'est un début et je reviendrai sur la tienne plus tard.
A une prochaine.