RESOLU pb de loop

RESOLU pb de loop - VB/VBA/VBS - Programmation

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
Reply

Marsh Posté le 23-11-2005 à 09:41:39   

Reply

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...

Reply

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 !

Reply

Marsh Posté le 23-11-2005 à 10:49:01    

De rien...
Effectivement le "plus" m'a trompé...lol

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed