Macro ajout de ligne excel

Résolu
hainlesgens -  
 hainlesgens -
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. Polux31 Messages postés 7219 Statut Membre 1 204
     
    bonjour,

    et en faisant : Rows(i).Select ?

    ;o)
    0
    1. hainlesgens
       
      non... je viens d'essayé a l'instant, et cela ne fonctionne pas non plus... mais merci quand meme
      0
    2. onesdf Messages postés 375 Date d'inscription   Statut Membre Dernière intervention   120 > hainlesgens
       
      Cells(i,7).EntireRow.Insert ?
      0
    3. hainlesgens > onesdf Messages postés 375 Date d'inscription   Statut Membre Dernière intervention  
       
      hha 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...
      0
    4. Polux31 Messages postés 7219 Statut Membre 1 204 > onesdf Messages postés 375 Date d'inscription   Statut Membre Dernière intervention  
       
      exact 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
      
      0
    5. onesdf Messages postés 375 Date d'inscription   Statut Membre Dernière intervention   120 > Polux31 Messages postés 7219 Statut Membre
       
      Il 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
      0
  2. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
    
    0
    1. hainlesgens
       
      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.
      0
      1. Polux31 Messages postés 7219 Statut Membre 1 204 > hainlesgens
         
        voir post 6

        ;o)
        0
      2. hainlesgens > Polux31 Messages postés 7219 Statut Membre
         
        oulla sa ne marche plus dutout :D

        sa me fait planter entierement mon excel :D

        byzard :S
        0
  3. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
    
    0
    1. hainlesgens
       
      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 ;)
      0