Boucle en vba Excel

Résolu
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.
--
Le rêve n'aboutit à rien, l'action à tout.
(J. FIAUX).
Configuration: Windows XP Internet Explorer 7.0

6 réponses

  1. 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
    1. 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
    2. @garion28Fais un test en commençant à i = 1, tu vas vite voir où se situe le problème... ^^
      0
  2. ^^ 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
    1. Contributeur
      Excuses-moi, Polux, je n'avais pas rafraichi...
      0
      1. Pas de problème ... deux avis valent mieux qu'un. Mon post 5 s'adresse à Garion ... ^^

        ;o)
        0
    2. Contributeur
      Excuses-moi, Polux, je n'avais pas rafraichi...
      0
      1. 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
        1. Contributeur
          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