Boucle en vba Excel

[Résolu/Fermé]
Signaler
Messages postés
150
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
28 novembre 2011
-
Messages postés
1543
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
3 avril 2011
-
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

Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 171
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42854 internautes nous ont dit merci ce mois-ci

Messages postés
1543
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
3 avril 2011
380
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)
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 171 >
Messages postés
1543
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
3 avril 2011

Fais un test en commençant à i = 1, tu vas vite voir où se situe le problème... ^^
Messages postés
150
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
28 novembre 2011
17
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.
Messages postés
16506
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 septembre 2021
3 220
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
Messages postés
16506
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 septembre 2021
3 220
Excuses-moi, Polux, je n'avais pas rafraichi...
Messages postés
16506
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 septembre 2021
3 220
Excuses-moi, Polux, je n'avais pas rafraichi...
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 171
Pas de problème ... deux avis valent mieux qu'un. Mon post 5 s'adresse à Garion ... ^^

;o)
Messages postés
1543
Date d'inscription
mardi 16 juin 2009
Statut
Membre
Dernière intervention
3 avril 2011
380
^^ 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à)