Automatiser le remplissage d'une facture

mdo100

XLDnaute Occasionnel
Bonjour à toute et tous,

Je viens vers vous pour que vous m'aidiez a créer le remplissage automatique d'une facture.

Je pense que le VBA serait la solution, mais je ne métrise pas encore ce langage, j'ai 50 ans, je suis autodidacte et seul avec les forums, notamment celui-ci.

Pour vous dire, ne m'engueulez pas.

Bon voici ce que je souhaiterais faire.

Je souhaiterais cliquer sur une des cellules de la colonne "A" de la feuille clients et afficher par VBA la valeur dans la feuille Facture en "B5".
Je souhaiterais également faire la même chose avec la feuille Matérielle cliquer dans une des cellules peu importe l'ordre de la colonne "A" et afficher la valeur dans la feuille Facture en "B7, B8"... et ainsi de suite.

Je vous joins un petit fichier, j'espère que vous aurez la gentillesse de m'aider.

Cordialement à toute et tous.
 

Pièces jointes

  • Essai.xlsm
    14.6 KB · Affichages: 72
  • Essai.xlsm
    14.6 KB · Affichages: 63

Chris401

XLDnaute Accro
Re : Automatiser le remplissage d'une facture

Bonjour

Un essai avec ce code à placer dans ThisWorkbook
Code:
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If Not Application.Intersect(Target, Range("A:A")) Is Nothing And Not IsEmpty(Target.Offset(0, 1)) Then
    If ActiveSheet.Name = "Clients" Then
        Target.Resize(1, 3).Copy
        Sheets("Facture").Range("B5").PasteSpecial Paste:=xlPasteValues
        Sheets("Facture").Range("B6") = " "
    Else
    If ActiveSheet.Name = "Matériel" Then
        If IsEmpty(Sheets("Facture").Range("B5")) Then
        MsgBox "Veuillez Choisir le client"
        Else
        Target.Resize(1, 4).Copy
        Sheets("Facture").Range("B15").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
        End If
    End If
    End If
End If
Cancel = True
Application.CutCopyMode = False
End Sub
L'action se fait après un double click sur une des cellules de la colonne A

Cordialement
Chris
 

DoubleZero

XLDnaute Barbatruc
Re : Automatiser le remplissage d'une facture

Bonjour à toutes et à tous,

Une autre suggestion en pièce jointe.

A bientôt :)
 

Pièces jointes

  • 00 - mdo100 - Facture renseigner, archiver.xlsm
    55.8 KB · Affichages: 77
  • 00 - mdo100 - Facture renseigner, archiver.xlsm
    55.8 KB · Affichages: 76

mdo100

XLDnaute Occasionnel
Re : Automatiser le remplissage d'une facture

Bonjour Chris401,

Lève tôt où couche tard (Aujourd'hui 05h32 ).

Le code que vous m'avez fourni fonctionne à merveille, c'est exactement ce que je souhaitais faire.
Je vais maintenant tenter de l'étudier, de l'améliorer et de l'adapter à mon projet qui va avancer un peu plus.

Comme je vous l'ai dit, je commence en VBA seul devant mon ordi et les forums, mais je progresse.
Toutefois à mon âge ce n'est pas facile sans aucune connaissance en programmation.

Je vous remercie encore pour ce code et de votre aide, cela faisait plusieurs jours que je butais malgré de nombreuses tentatives.

Cordialement.
 

mdo100

XLDnaute Occasionnel
Re : Automatiser le remplissage d'une facture

Bonjour DoubleZero,

Je vous remercie pour ce fichier, j'ai l'impression que vous écrivez des lignes de code, comme on écrit un livre, mes 50 ans sans expérience de programmation sauf depuis quelques semaines explose mes neurones.
Mais je progresse et je travail, c'est la seul solution, avec de la volonté j'y arriverai sans prétendre que je deviendrais un programmeur bien sûr.

Très intéressant votre solution, mais je souffre devant ce code, je pense qu'avec du temps pour l'étudier, je pourrais m'en servir pour améliorer mon projet, mais peut-être plus pour d'autres feuilles dans mon projet pour la gestion de stock par exemple.
Je retiens surtout le code pour l'archivage qui pour classer du stock pourrait m'être utile.

Toutefois vous avez mis un mesbox si le client n'était pas sélectionné, cela a fonctionné,mais maintenant ça bug, si je sélectionne du matériel sans sélectionner le client avant, j'ai une erreur d'exécution 1004 (la méthode Select de la classe Range a échoué.)

Pourriez-vous m'aider encore un peu a comprendre ce qui c'est passé?

Cordialement
 

DoubleZero

XLDnaute Barbatruc
Re : Automatiser le remplissage d'une facture

Re-bonjour,

...j'ai l'impression que vous écrivez des lignes de code, comme on écrit un livre...

Oh que n:eek:n, mdo100, je n'ai pas les talents que vous semblez supposer... hélas !

Je ne tarderai pas à vous proposer une version avec les codes assortis de commentaires.

Mes macros ne font appel à aucune MsgBox. Peut-être avez-vous fait un amalgame entre les codes de Chris401 et les miens. Je n'ai fait qu'imposer le renseignement de la cellule b5 de l'onglet "Facture".

Bon courage et à bientôt :)
 

mdo100

XLDnaute Occasionnel
Re : Automatiser le remplissage d'une facture

Re-DoubleZero,

Je me suis aperçu en appliquant le code de Chris401 de l'erreur que je vous avais attribué... Désolé j'ai des codes plein le cerveau et j'ai mélangé avec le votre.

Je vous remercie d'avance de votre proposition pour (une version avec les codes assortis de commentaires), cela m'aidera beaucoup.

Je dois vous dire que je suis admiratif de ceux et celles comme vous, qui répondent sur ce forum aux personnes (Novice comme moi où chevronnés comme d'autre).

Je vous souhaite un bon dimanche.
 

DoubleZero

XLDnaute Barbatruc
Re : Automatiser le remplissage d'une facture

Re-bonjour,

... Désolé j'ai des codes plein le cerveau et j'ai mélangé avec le votre...

Aucune gravité, mdo100 :)

Voici un nouveau fichier dans lequel :

- les codes sont commentés ;

- les formules des onglets " Clients" et "Matériel" (colonne a) sont insérées automatiquement.

Ne surtout pas hésiter à lancer un S. O. S. si les explications fournies vous paraissent insuffisantes.

A bientôt :)
 

Pièces jointes

  • 00 - mdo100 - Facture renseigner, archiver v2 (code commenté).xlsm
    63.3 KB · Affichages: 107
  • 00 - mdo100 - Facture renseigner, archiver v2 (code commenté).xlsm
    63.3 KB · Affichages: 72

mdo100

XLDnaute Occasionnel
Re : Automatiser le remplissage d'une facture

Bonjour DoubleZero,

Reçu 5/5 votre fichier avec les commentaires, je vais pouvoir faire un pas de plus en VBA.

Bien l'automatisation des formules (si(.....)), j'avais tenté de le faire avec l'enregistreur de macro, j'avais bien la formule en mode VBA, mais après je ne savais pas comment exploiter celle-ci pour l'automatiser.

Je fais des fichiers excel depuis 2012 pour une exploitation personnelle et ils se sont bien améliorés depuis, et c'est justement parce qu'ils sont de plus en plus compliqués que je viens de me mettre au VBA, il y a un mois environ et j'en comprends la puissance.

Faire ce facturier avec devis, stock... met venu en voyant des exemples tout fait sur internet, je veux le faire par moi-même pour apprendre ce langage VBA, cela aurait pu être tout autre chose, mais je trouve que cela est assez représentatif et large pour commencer un projet en VBA.

Vous l'aurez compris, je ne vends, ni n'achète rien et mes clients sont fictifs.

Je vous remercie encore de votre implication sur ce forum, de partager vos connaissances, pour permettre aux autres d'avancer dans leurs projets fictifs ou pas.

Je ne manquerai pas de revenir vers vous où d'autres pour " lancer un S. O. S." et ainsi progresser dans ma formation en autodidacte, car sans la matière grise des autres on reste sur place, autodidacte ou pas!

Bon assez palabré, il faut que j'exploite votre fichier pour le comprendre et l'appliquer à mon projet.

Je vous souhaite une excellente semaine.

À bientôt sur le forum. :eek:
 

DoubleZero

XLDnaute Barbatruc
Re : Automatiser le remplissage d'une facture

Bonjour à toutes et à tous,

Merci pour ce retour, mdo100.

Il me reste à vous souhaiter une bonne progression.

Ne pas hésiter à user - abuser - de l'enregistreur et revenir sur XLD afin d'y trouver des solutions.

Bon courage, belle semaine et à bientôt :)
 

mdo100

XLDnaute Occasionnel
Re : Automatiser le remplissage d'une facture

Bonjour Chris401,

J'ai exploité votre code dans mon projet voici ce que cela donne, mais je n'ai plus le message (MsgBox "Veuillez Choisir le client").

La ligne B11 contient "Désignation, Quantité, P.U.H.T., T.V.A., Montant H.T.
Les lignes B12 à B51 contiennes les Prestations, mais du coup (MsgBox) ne fonctionne plus.

Je vous joins le code que j'ai fais, auriez vous la gentillesse de me dire ce qui cloche.

Autre chose, comment fait-on pour joindre un code sur le forum comme vous l'avez fait

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

'Astuce VBA : diminuer le temps d'exécution d'une macro
Application.ScreenUpdating = False


If Not Application.Intersect(Target, Range("A:A")) Is Nothing And Not IsEmpty(Target.Offset(0, 1)) Then
If ActiveSheet.Name = "Clients" Then
Target.Resize(1, 1).Copy
Sheets("Facture").Range("C9").PasteSpecial Paste:=xlPasteValues
Sheets("Facture").Range("B11") = " "
Else
If ActiveSheet.Name = "Prestations" Then
If IsEmpty(Sheets("Facture").Range("B11")) Then
MsgBox "Veuillez Choisir le client"
Else
Target.Resize(1, 1).Copy
Sheets("Facture").Range("B51").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
End If
End If
End If
End If
Cancel = True
Application.CutCopyMode = False

End Sub

Je vous remercie d'avance pour votre aide et implication sur le forum, vous et DoubleZero, m'avez fait progresser d'un pas de géant dans le VBA.

A bientôt.
 

Discussions similaires

Statistiques des forums

Discussions
312 201
Messages
2 086 171
Membres
103 152
dernier inscrit
Karibu