Macro ajout de ligne excel

Résolu
Bonjour, à tous, j'ai un probleme au travail, je suis actuellement stagiaire dans une pme pmi et je dois pour facilité la lecture de la base de données au salariés, automatisé des requetes SQL en jonglant entre le VBA et les requetes SQL...

le problemes, ne se trouve actuellement pas sur les requetes SQL, mais sur le code VBA...

mon but est que si la valeur de la céllule G14 est égale a 0, une ligne est ajouté entre G14 et G15 sinon ça ne fait rien.

mais je ne comprend pas vraiment le probleme.
j'ai incrémenté une variable ( i ) dans un while pour faire une petite boucle...
quand j'exécute la macro avec pour valeur de ( i ) un chiffre que j'ai choisi et qui n'a aucune utilité, cela fonctionne et me rajoute bien la ligne que je demande...

mais quand pour l'ajout de ligne, je demande a ce qu'il me la rajoute a la ligne ( i : i ), la macro ne fonctionne plus.

je colle ci joint une copie de ma boucle.

merci par avance de votre aide

et désolé si je ne suis pas très clair!

Sub ajoutligne()
'
' ajoutligne Macro
' Macro enregistrée le 09/06/2008 par
''
i = 14 ' début du tableau

While (Cells(i, 7).Value = 1) ' temps que valeur céllule i est égale a 1
i = i + 1 'incrémentation de la position de la céllule,
MsgBox ("valeur différentes!!!")
Wend
i = i - 1

Rows("i:i").Select
Selection.Insert Shift:=xlDown
MsgBox (" ajout de ligne réussis")
Configuration: Windows XP
Internet Explorer 7.0

3 réponses

  1. bonjour,

    et en faisant : Rows(i).Select ?

    ;o)
    1. non... je viens d'essayé a l'instant, et cela ne fonctionne pas non plus... mais merci quand meme
    2. @onesdfhha c'est cool, y'a de la grosse progression!! la macro s'exécute sans erreur... seul hic, est que sa me rajoute des ligne vers, le haut...

      alors j'ai mis up au lieu de down

      Cells(i, 7).EntireRow.Insert
      Selection.Insert Shift:=xlUp

      mais là, sa ne me rajout qu'une seul ligne et après, le programme bug...
    3. @onesdfexact pour parcourir toutes les lignes ...

      Sub ajoutligne()
      '
      ' ajoutligne Macro
      ' Macro enregistrée le 09/06/2008 par
      ''
      i = 14 ' début du tableau
      
      While Cells(i, 7).Value <> "" ' temps que valeur céllule i est égale a 1
      If Cells(i, 7).Value = 0 Then
         Cells(i + 1, 7).EntireRow.Insert
         i = i + 1
      End If
      Wend
      
      End Sub
      
    4. @Polux31Il faut incrémenter i même si le test est faux sinon on teste toujours la même ligne :

      While Cells(i, 7).Value <> "" ' temps que valeur céllule i est égale a 1
      If Cells(i, 7).Value = 0 Then
         Cells(i + 1, 7).EntireRow.Insert
         i = i + 1
      End If
      i = i + 1
      Wend
  2. Bizarre, ça marche chez moi :

    Sub ajoutligne()
    '
    ' ajoutligne Macro
    ' Macro enregistrée le 09/06/2008 par
    ''
    i = 14 ' début du tableau
    
    While (Cells(i, 1).Value = 1) ' temps que valeur céllule i est égale a 1
    i = i + 1 'incrémentation de la position de la céllule,
    'MsgBox ("valeur différentes!!!")
    Wend
    'i = i - 1
    
    
    Rows(i).Select
    Selection.Insert Shift:=xlDown
    MsgBox (" ajout de ligne réussis")
    End Sub
    
    1. oui effectivement, ça me rajoute une ligen en i=14

      mais il faudrai que cela fonctionne jusqu'a la fin du tableau, qu'a chaque fois que les valeur de g soit =0, la fonction ajoute un ligne entiere dans le tableau, et passe à la suite.

      par exemple, si G14 = 1, alors on saute une ligne, et on passe a G15.

      si G15=0 alors on passe a G16 et ainsi de suite, si g16 =1 alors on ajoute une ligne entiere.
    2. @Polux31oulla sa ne marche plus dutout :D

      sa me fait planter entierement mon excel :D

      byzard :S
  3. en résumé:

    Sub ajoutligne()
    '
    ' ajoutligne Macro
    ' Macro enregistrée le 09/06/2008 par
    ''
    i = 14 ' début du tableau
    
    While Cells(i, 7).Value <> "" ' temps que valeur céllule n'est pas vide
    If Cells(i, 7).Value = 0 Then
       Cells(i + 1, 7).EntireRow.Insert
       i = i + 1
    End If
    i = i + 1 'incrémentation de la position de la céllule,
    
    Wend
    End Sub
    
    1. c'est parfait, ça fonctionne magnifiquement.

      je vous remerci tous.

      j'ai juste du inversé, le 0 et le 1 pour qu'il ne saute pas les mauvaises lignes mais sinon ça marche très bien.

      encore merci ;)