RESOLU pb de loop - VB/VBA/VBS - Programmation
Marsh Posté le 23-11-2005 à 10:26:13
Deux observations:
ta commande (Do While Sheets("CAs_OK" ).Cells(l, 1) <> "" 'fait tant que n'est pas vide), il ne manquerait pas (.Value) après (Cells(l,1)) ?? Peut être que ça marche aussi sans.
Surtout le souci (ce qui explique le 1 ligne sur 2) c'est que tu supprimes la ligne que tu viens de copier, donc ce qui était à la ligne l+1 est remonté à la ligne l. ça ne sert donc à rien de faire l=l+1 (sinon tu va copier ce qui était, avant supression, à l+2...).
Je sais pas si je me suis bien fait comprendre, mais l'idée c'est que ton "l=l+1" est inutile (tu pourrais d'ailleurs remplacer ton l par 1001 directement).
Par contre pourquoi il ne te reste plus rien sur la première feuille... Je ne vois pas tout de suite...
Marsh Posté le 23-11-2005 à 10:37:34
ok merci pour l'explication je n'avais pas pensé au l=l+1
pour la première feuille c ok aussi, je voulais dire qu'il en restait + (!!!)
merci bcp !
Marsh Posté le 23-11-2005 à 09:41:39
je voudrais que la macro "mille" sur la feuille "CAs_ok" sélectionne à partir de la ligne 1001 le reste du tableau, les coupe et les colle sur une nouvelle feuille intitulée "reste palmares", et renomme la feuille "CAs_ok" en "1000 palmares"
j'ai fait ça
Sub mille()
'Tes variables pour la valeur feuille
Dim NomFeuil
NomFeuil = "reste palmares"
'Mise en place de la nouvelle feuille
Sheets.Add After:=Sheets(Worksheets.Count)
ActiveSheet.Name = NomFeuil
'mise en place de la ligne d'intitulé de colone
Sheets("CAs_OK" ).Activate
Rows(1).Select
Selection.Copy
Sheets(NomFeuil).Select
Range("A1" ).Select
ActiveSheet.Paste
Application.CutCopyMode = False
'Ta variable de ligne pour le test de valeur
Dim l
l = 1001 'à partir du 1000e
'ta variable de linge pour la recopie
Dim lig
lig = 2
'on met en place une boucle pour passer tes valeur
Do While Sheets("CAs_OK" ).Cells(l, 1) <> "" 'fait tant que n'est pas vide
'tu copie la ligne dans la nouvelle feuille
Sheets("CAs_OK" ).Activate
Rows(l).Select
Selection.Copy
Sheets(NomFeuil).Activate
Cells(lig, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
'tu ajoute 1 à ligne pour la prochaine copie
lig = lig + 1
'tu supprime la ligne
Sheets("CAs_OK" ).Rows(l).Delete
'tu passes à la ligne suivante
l = l + 1
Loop
End Sub
ça ne marche pas, il coupe/colle une ligne sur deux et sur ma feuille CAs_OK il est censé rester 1001 lignes et il y en a plus.
où est le souci ?
Message édité par peanutz le 23-11-2005 à 10:37:57