Macro ajout de ligne excel

Résolu/Fermé
hainlesgens - 9 juin 2008 à 14:12
 hainlesgens - 9 juin 2008 à 15:38
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")
A voir également:

3 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
9 juin 2008 à 14:15
bonjour,

et en faisant : Rows(i).Select ?

;o)
0
non... je viens d'essayé a l'instant, et cela ne fonctionne pas non plus... mais merci quand meme
0
onesdf Messages postés 375 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008 120 > hainlesgens
9 juin 2008 à 14:18
Cells(i,7).EntireRow.Insert ?
0
hainlesgens > onesdf Messages postés 375 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008
9 juin 2008 à 14:23
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
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204 > onesdf Messages postés 375 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008
9 juin 2008 à 14:29
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
onesdf Messages postés 375 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 17 octobre 2008 120 > Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016
9 juin 2008 à 14:38
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
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
9 juin 2008 à 14:21
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
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
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204 > hainlesgens
9 juin 2008 à 14:30
voir post 6

;o)
0
hainlesgens > Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016
9 juin 2008 à 14:48
oulla sa ne marche plus dutout :D

sa me fait planter entierement mon excel :D

byzard :S
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
9 juin 2008 à 14:51
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
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