Bonjour Colphi,
Bienvenue sur le Forum.
Tout d'abord, il serait utile de baliser tout code reporté par les bornes #.
Celui-ci n'en sera que plus lisible.
Ecrire
ligne = Range("A3").End(xlDown).Row + 1
est imprécis, voire dangereux.
L'objet Range n'étant pas rattaché à la feuille parent, celui-ci est considéré par VBA comme appartenant à la feuille active.
Ce qui n'est sans doute pas le cas.
Dans ce genre de processus, par prudence, mieux vaut se diriger du bas de la feuille vers le haut (End(xlUp))
Lorsqu'un objet (ici Worksheets) est affecté de plusieurs méthodes ou propriétés, le bloc With permet une meilleure lisibilité du code et, partant, une gestion améliorée.
Pour ma part, dans mes développements, ce type de report (ici facture) est en liaison avec une plage comprenant une ligne de données.
Il est ensuite aisé de reporter cette plage dans une table de synthèse (Reporting des factures).
Ceci selon un schéma que je trouve logique
Formulaire (éventuel) ->ligne de données -> état facture
Ainsi, chaque cellule de la feuille facture est formulée
Illustration
Worksheets("lafacture").Range("lemontant").Value = Range("T_Données[montant]").Value
La ligne de données venant ensuite compléter une feuille de synthèse.
Cela étant.
...
Cela étant
Si, comme je le présume , tu es débutant(e), alors je ne peux que te conseiller d'envisager la gestion de tables de données (ou tableaux structurés) pour la gestion de ces données dans une table de synthèse.
Cette dernière comprenant un tableau structuré (voir ci-dessous) auquel une ligne sera ajoutée
Avec un minimum d'investissement (au sens propre du terme), tu gagneras rapidement en rigueur donc en efficacité.
Fi donc des End(xl...
2 tutoriels pour cela
Les tableaux structurés
Les tableaux structurés par VBA
En espérant t'avoir aidé.
Bonne continuation.
Marcel
Partager