Boucle en vba Excel

Résolu/Fermé
wida Messages postés 150 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 28 novembre 2011 - 22 juin 2009 à 12:05
garion28 Messages postés 1543 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 - 22 juin 2009 à 16:33
Bonjour,


est ce qu'il possible, avec vba excel, de faire une boucle du genre

Dim i as integer
for(i=1; i<10; i+1)
{

range(Ai) :=range(Ai-1)+range(Bi)

}

je sais que syntaxiquement c faux!! pour la boucle je pourai utiliser "do until" s'il n'ya pas le for mais parcontre pour gerer les cellule ainsi j'ai pas d'idée comment faire!!

j'ai besoin de votre aide!
Merci.

6 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
22 juin 2009 à 12:37
Bonjour,

Tu peux utiliser le For ... Next ou le While ... Wend ou le Do ... Loop.

Dim i As Integer
   For  i = 1 To 10
      Sheets(1).Range("A" & i).Value = Sheets(1).Range("A" & i - 1) + Sheets(1).Range("B" & i)
   Next i


Ou
Dim i As Integer
i = 1
   While i < 10
      Sheets(1).Range("A" & i).Value = Sheets(1).Range("A" & i - 1) + Sheets(1).Range("B" & i)
      i = i + 1
   Wend


Le problème c'est que tu vas lever une exception dès ta première boucle, dans les 2 cas.

i étant le numéro de ligne, si tu commences à 1, quand tu fais : Sheets(1).Range("A" & i - 1), i sera égal à 0. Hors la ligne 0 n'existe pas dans Excel. La numérotation des lignes, comme des colonnes, commence à 1.

;o)
24
garion28 Messages postés 1543 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 404
22 juin 2009 à 12:43
pas sur d'avoir vraiment compris ce que polux31 a dit ^^
mais si ton i commence a 1 et non pas a 0 alors il n'y a pas de problème (premier passage dans la boucle: i=1)
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204 > garion28 Messages postés 1543 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011
22 juin 2009 à 14:21
Fais un test en commençant à i = 1, tu vas vite voir où se situe le problème... ^^
0
wida Messages postés 150 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 28 novembre 2011 17
22 juin 2009 à 13:03
Merci beaucoup pour vos reponses claires et bien détaillées.
au fait le range Ai-1 correspond a la cellule au dessus, j'ai mis i=1 dans cet exemple juste pour simplifier.
Merci à tous, les deux methodes celle de Polux31 et de michel_m marchent bien.
2
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
22 juin 2009 à 12:42
bonjour

a quoi correspond range(Ai-1)?
cellule au dessus: si oui, pb si i=1
ou cellule
range(Ai)-1

1° cas:
dim i as integer 'en VBA les variables doivent de préférence être déclarées

for i=2 to 10
cells(i,1)=cells(i-1,1)+cells(i,2)
next

2° cas:
for i=1 to 10
cells(i,1)=cells(i,1)+cells(i,2)-1
next
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
22 juin 2009 à 14:29
Excuses-moi, Polux, je n'avais pas rafraichi...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
22 juin 2009 à 14:34
Excuses-moi, Polux, je n'avais pas rafraichi...
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
22 juin 2009 à 15:41
Pas de problème ... deux avis valent mieux qu'un. Mon post 5 s'adresse à Garion ... ^^

;o)
0
garion28 Messages postés 1543 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 3 avril 2011 404
22 juin 2009 à 16:33
^^ oui je vien de voir qu'il fesai -1 a un moment, donc logique que ca bug (en vba je code un peu comme je réfléchi donc ya pas (ou très peu) d'erreur de ce genre là)
0