(Modèle de générateur de facture GRATUIT) Enregistrer la facture Excel au format PDF

J'ai récemment dû m'inscrire à la taxe sur les produits et services (TPS) afin de pouvoir déclarer la TPS sur mes revenus.

Une fois que vous avez un numéro de TPS, vous devez produire votre déclaration de revenus tous les mois (en Inde).

Ainsi, chaque mois, mon comptable agréé me contactait pour me demander des factures de vente afin qu'il puisse déclarer la TPS.

Dans mon cas, il n'y a qu'une poignée de factures à créer, car je n'ai que peu de sources de revenus.

Cependant, comme il s'agit d'un travail supplémentaire, je voulais le faire le plus rapidement possible.

Donc, pour minimiser mes efforts, j'ai créé un modèle de générateur de factures dans Excel qui me permet d'avoir toutes les données au même endroit, puis il crée automatiquement des factures PDF pour tous les points de données.

Comme vous pouvez le voir ci-dessous, tout ce que j'ai à faire est de double-cliquer sur le nom du client (dans la colonne B), et il créerait et enregistrerait instantanément la facture au format PDF dans le dossier spécifié.

Vous pouvez également modifier le modèle de facture en fonction du format de votre entreprise (ce qui vous obligerait à modifier un peu le code VBA - expliqué ci-dessous).

Il crée une facture comme indiqué ci-dessous :

Comment fonctionne ce modèle de générateur de factures ?

Dans ce modèle de facture, il y a deux feuilles de calcul :

  1. Détails - C'est ici que vous devez spécifier les détails de la vente/transaction. Pour tout garder ensemble, j'ai créé une ligne pour chaque enregistrement. Tous les détails d'une transaction sont enregistrés dans la ligne.
  2. Modèle de facture - Il s'agit d'un modèle d'espace réservé de la facture où certains champs sont laissés vides. Je dois générer une facture distincte pour tous les enregistrements de vente et les détails de chaque facture sont extraits de la feuille de calcul Détails.

J'ai également un dossier sur mon bureau avec le nom « PDF de facture ». Il s'agit du dossier dans lequel les factures PDF nouvellement créées sont enregistrées.

Voyons maintenant comment cela fonctionne :

Vous devez double-cliquer sur le nom du client (surligné en orange dans la fiche Détails).

C'est ça!

Lorsque vous double-cliquez sur le nom du client, cela lance la magie VBA dans le back-end et les choses suivantes se produisent :

  1. Les détails du client et de la transaction de vente sont récupérés et la feuille de modèle de facture est remplie avec ces détails.
  2. Un nouveau classeur est créé avec les détails du client sélectionné (sur lequel vous avez double-cliqué).
  3. Ce classeur est enregistré au format PDF dans le dossier Facture PDF.
  4. Le nouveau classeur est fermé sans enregistrement.

En cas de modification des détails de la facture, vous pouvez à nouveau double-cliquer sur le nom du client et une nouvelle facture sera créée (et cela écrasera l'ancienne).

Notez que les noms des factures sont basés sur le mois et le numéro de facture.

Par exemple, une facture avec la date 15-04-2019 et le numéro de facture comme 1 serait enregistré sous le nom Avril 2021-2022_1.pdf. Cela aide à garder une trace des factures au cas où vous en auriez trop.

Vous pouvez télécharger le modèle de générateur de facture en cliquant sur le bouton ci-dessous :

Modification du modèle de générateur de facture

J'ai créé ce modèle de facture avec un format dont j'avais besoin pour mes déclarations de TPS.

Si vous avez besoin d'un format différent, vous devrez modifier le modèle, puis ajuster le code VBA du backend.

Permettez-moi d'abord de vous montrer le code et de vous expliquer comment il fonctionne :

Sub CreateInvoice(RowNum As Integer) Application.ScreenUpdating = False Dim wb As Workbook Dim sh As Worksheet With shInvoiceTemplate .Range("D10") = shDetails.Range("A" & RowNum) .Range("D11") = shDetails. Range("B" & RowNum) .Range("D12") = shDetails.Range("C" & RowNum) .Range("B15") = shDetails.Range("D" & RowNum) .Range("D15" ) = shDetails.Range("F" & RowNum) .Range("D16") = shDetails.Range("G" & RowNum) .Range("D18") = shDetails.Range("E" & RowNum) End With FPath = "C:\Users\sumit\Desktop\Invoice PDFs" Fname = Format(shInvoiceTemplate.Range("D10"), "mmmm yyyy") _ & "_" & shInvoiceTemplate.Range("D12") shInvoiceTemplate.Copy ActiveSheet.Name = "InvTemp" Set wb = ActiveWorkbook Set sh = ActiveSheet sh.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ FPath & "\" & Fname, Quality:=xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=False , OpenAfterPublish:=False wb.Close SaveChanges:=False ThisWorkbook.Activate Application.ScreenUpdating = True End Sub

Le code ci-dessus copie les détails d'une transaction, remplit le modèle d'espace réservé de facture avec ces détails, crée un nouveau classeur et enregistre le nouveau classeur au format PDF dans le dossier spécifié.

Si vous avez un modèle différent ou un emplacement de dossier différent, vous devez modifier les parties du code mises en évidence ci-dessous :

  1. La première section en surbrillance est ce qui prend les détails de la feuille de détails et remplit le modèle de facture. Si vous décidez de modifier le modèle de facture, vous devez vous assurer que vous choisissez les bons détails en modifiant cette partie du code.
  2. Cette ligne spécifie l'emplacement du dossier. Dans mon cas, c'était un dossier sur mon bureau. Vous pouvez spécifier l'adresse du dossier où vous souhaitez que les factures soient enregistrées.

Notez que j'ai renommé le nom de code de la feuille de calcul en « shDetails ». J'ai fait cela pour pouvoir utiliser le nom - shDetails - dans mon code et cela continuerait de fonctionner même si vous changez le nom des feuilles dans la feuille de calcul.

Si vous souhaitez en savoir plus sur le nom de la feuille et le nom de code, consultez ceci (consultez la section sur l'utilisation du nom de code de la feuille de calcul).

Où est le code dans le classeur ?

Le code est placé dans le back-end du classeur Excel dans un module.

Pour accéder au code, suivez les étapes ci-dessous :

  1. Cliquez sur l'onglet Développeur.
  2. Cliquez sur l'option Visual Basic. Cela ouvrira la fenêtre de l'éditeur VB.
  3. Dans l'éditeur Visual Basic, double-cliquez sur le module pour ouvrir sa fenêtre de code. Vous trouverez le code mentionné ci-dessus.

Si vous créez vous-même un modèle, vous ne trouverez peut-être pas le module dans un nouveau classeur. Vous devez cliquer avec le bouton droit sur l'un des objets du classeur, accéder à Insérer, puis cliquer sur Module. Cela insérera un nouveau module.

Faire fonctionner la fonctionnalité Double-clic

Le code ci-dessus fait tout le gros du travail, mais vous devez le connecter à l'événement double-clic.

Cela signifie que le code de macro VBA ci-dessus doit être exécuté chaque fois que quelqu'un double-clique sur les cellules remplies dans la colonne du nom du client.

Cela peut être fait en insérant le code suivant dans la fenêtre de code de la feuille de calcul :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Cells "" Et Target.Column = 2 Then Cancel = True Call CreateInvoice(Target.Row) End If End Sub

Voici les étapes pour insérer ce code dans le backend de la feuille de calcul :

  • Cliquez avec le bouton droit sur l'onglet de la feuille de calcul "Détails"
  • Cliquez sur l'option « Afficher le code ».
  • Copiez et collez le code ci-dessus dans la fenêtre de code qui apparaît.

Le code ci-dessus fait les choses suivantes :

  1. Vérifie si la cellule qui a été double-cliquée a les détails du client ou non. Il utilise l'instruction IF pour vérifier et exécuter le code uniquement si la cellule n'est pas vide et dans la colonne B.
  2. Si les deux critères spécifiés sont remplis, il désactive la fonctionnalité de double-clic (qui consiste à entrer dans le mode d'édition) et appelle le sous-programme « CreateInvoice », qui est stocké dans le module. Il transmet également la valeur du numéro de ligne au sous-programme. Par exemple, si je double-clique sur le nom du client dans la troisième ligne, il passera 3 comme valeur à la sous-routine CreateInvoice.
  3. Une fois la sous-routine « Créer une facture » ​​exécutée - qui crée le PDF de la facture - elle se termine.

Cliquez ici pour télécharger le fichier de modèle de générateur de factures.

Enregistrement du modèle de facture au format Excel (au lieu de PDF)

Si vous souhaitez enregistrer les modèles de facture sous forme de fichiers Excel et non de fichiers PDF, vous pouvez utiliser le code ci-dessous à la place :

Sub CreateInvoice(RowNum As Integer) Application.ScreenUpdating = False Dim wb As Workbook Dim sh As Worksheet With shInvoiceTemplate .Range("D10") = shDetails.Range("A" & RowNum) .Range("D11") = shDetails. Range("B" & RowNum) .Range("D12") = shDetails.Range("C" & RowNum) .Range("B15") = shDetails.Range("D" & RowNum) .Range("D15" ) = shDetails.Range("F" & RowNum) .Range("D16") = shDetails.Range("G" & RowNum) .Range("D18") = shDetails.Range("E" & RowNum) End With FPath = "C:\Users\sumit\Desktop\Invoice PDFs" Fname = Format(shInvoiceTemplate.Range("D10"), "mmmm yyyy") _ & "_" & shInvoiceTemplate.Range("D12") shInvoiceTemplate.Copy ActiveSheet.Name = "InvTemp" Set wb = ActiveWorkbook Set sh = ActiveSheet sh.Name = Fname wb.SaveAs Filename:=FPath & "\" & Fname wb.Close SaveChanges:=False ThisWorkbook.Activate Application.ScreenUpdating = True End Sub

Le code ci-dessus enregistre la facture en tant que classeur Excel avec la même convention de dénomination. La feuille de calcul du classeur qui contient la facture remplie dans chaque classeur enregistré porte également le même nom.

Vous aimerez peut-être aussi les didacticiels Excel suivants utiles :

  • Comment convertir Excel en PDF en utilisant VBA.
  • Intégrer le PDF dans Excel.
  • Extrayez des données de PDF vers Excel avec ce convertisseur.
  • Modèle de calculatrice de feuille de temps Excel.
  • Modèle de suivi des congés Excel.
  • Modèles Excel gratuits.

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave