archiver facture, boucle while wend

Anais28

XLDnaute Nouveau
Bonjour,

J'ai un problème avec l'archivage d'une facture. Je souhaite archiver(les enregistrer dans une autre feuille de calcul) toutes les lignes de ma facture en sachant que chaque facture a un nombre de lignes différent.
J'ai donc fait une boucle sous vba mais elle ne me recopie toujours que la première ligne de facture.
Savez-vous comment faire pour faire fonctionner cette boucle ?
Je vous remercie d'avance.
 

Pièces jointes

  • test_facture.xlsm
    35.2 KB · Affichages: 98
G

Guest

Guest
Re : archiver facture, boucle while wend

bonjour, Anaïs

Voici ton fichier modifié.
Quand tu emploies Cells(x,x) ou une quelconque référence à une plage de cellule, il faut indiquer sur quelle feuille tu travailles, à moins d'être sûre que ta macro travaille sur la feuille active. Dans ta boucle tu passais d'une feuille à l'autre.

Do While Sheets("NomDeFeuille").Cells(x,x)<>""
A+
 

Anais28

XLDnaute Nouveau
Re : archiver facture, boucle while wend

Merci beaucoup, ça marche mais tu pourrais m'expliquer ce que tu fais dans ce code (quelle variable tu détermines) stp ???

Dim wsC As Worksheet, wsR As Worksheet
Set wsC = Sheets("Cde_client")
Set wsR = Sheets("Recept_cde_dist")
 
G

Guest

Guest
Re : archiver facture, boucle while wend

Re,


Dim wsC As Worksheet, wsR As Worksheet 'Déclaration Variables objets Feuilles de calcul
Set wsC = Sheets("Cde_client")
Set wsR = Sheets("Recept_cde_dist")

wsC est une variable objet pointant vers la feuille Cde_Client
wsR est une variable objet pointant vers la feuille Recept_cde_dist

Lorsqu'ensuite dans le code on Emploie wsC.range("A1") Vba sait que la cellule A1 est celle de la feuille Cde_client.

Non seulement c'est une écriture de code plus courte et concise que Sheets("Cde_client").Range("A1") mais cela a aussi l'avantage d'être plus rapide à l'execution.
En effet dès le départ de la macro, lorsque tu initialise les variables, VBA sait sur quoi il va travailler.

Dans une boucle si tu as beaucoup d'aller retour vers des feuilles différentes. VBA évalue à chaque fois Sheets("Cde_client") pour savoir de quoi il s'agit. Alors que wsc, il le sait déjà.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 570
Messages
2 089 768
Membres
104 271
dernier inscrit
acuponctus