Générer factures à partir d'une base de données

Bonjour à tous,

J'ai cherché pendant une heure sur le forum (et d'autres), et je n'ai pas réussi à trouver mon bonheur, ou alors ai-je mal cherché.

J'aimerais à partir d'une base de données, générer toutes les factures à partir d'une trame, les exporter en pdf, supprimer les feuilles créées en fin de process (puisque je les aurai en pdf). En cas de nouvelles entrées dans la base, la macro devra générer les nouvelles factures lorsque la cellule "état" est vide (colonne H).

Avec mes faibles compétences, je sais à peu près comment générer une facture à partir de la dernière ligne de la base, mais pas un bloc complet de plusieurs lignes.

J'ai bien trouvé un sujet similaire, mais je ne sais pas comment l'adapter (trop compliqué pour moi).

Je sais qu'un publipostage serait plus adapté, mais vous vous doutez que l'exemple joint est rudimentaire par rapport à mes réels besoins, et j'aimerais tout faire à partir d'un seul fichier, sans avoir à ouvrir Word et Excel en même temps.

Je vous en remercie pleinement d'avance

298test-fct-auto.xlsx (66.54 Ko)

Bonjour,

L'idée, c'est qu'on ne crée pas de feuille, on exporte en pdf la zone d'impression de la feuille qui fait office de support de facturation, que je nommerai "FC".

Si vous arrivez déjà à le faire avec la dernière facture, cela signifie probablement que votre feuille "FC" contient des formules et que ses données sont alimentées à partir du numéro de facture (en l'occurrence le max, j'imagine).

Si tel était le cas, un code comme celui-ci permettrait de se rapprocher du résultat souhaité :

sub rafale()
with sheets("FC")
    for i = 1 to range("BASE").rows.count
        .cells("Numero").value = range("BASE[Numero]")(i, 1).value
        sfilename = thisworkbook.path & "\F" & .cells("Numero").value & " " & .cells("Client").value & " " & format(now, "YYMMDD-HHMMSS") & ".pdf"
        .exportasfixedformat xltypepdf, sfilename, , , false
    next i
end with
end sub

Avec :

- FC, la feuille à exporter (la facture),

- Numero la cellule sur FC qui contient le numéro de facture,

- Client la cellule sur FC qui contient le nom du client,

- BASE le nom du tableau structuré contenant l'historique des factures, celui-ci devant contenir une colonne nommée Numero avec les numéros de facture.

Les pdf sont enregistrés dans le répertoire du fichier exécutant.

Cdlt,

Bonjour 3GB,

Déjà merci de m'avoir répondu dans la soirée.

Dans mon exemple, j'ai cité "facture", mais dans la réalité c'est plutôt un genre de contrat, donc sans colonne de numéro généré automatiquement.

J'ai tout de même essayé d'adapter votre proposition à mes besoins, mais cela ne fonctionne pas. Je me répète, je suis une véritable buse en VBA, je ne fais que copier des bouts de codes trouvés à droite à gauche, je les assemble, et miracle, à 80% du temps ça fonctionne...

En réalité, j'ai 3 documents à générer à partir de la base, et dans la colonne "état", si par exemple il y a "ok", le code génère les docs sur les lignes où la colonne "état" est vide.

Si quelqu'un d'autre a une proposition, je suis preneuse, sinon tant pis, je vais continuer à chercher.

Merci encore,

Cordialement.

Bonjour clairedost,

Je vous en prie.

Ma proposition repose principalement sur une construction de fichier avec des formules (des INDEX EQUIV essentiellement). Il y a juste une clé (le numéro de facture dans mon exemple) qui permet la restitution sur l'interface d'édition des données correspondantes, grâce à ces formules justement, et un petit code VBA pour réaliser le tout en rafale.

Vous devriez penser à ce numéro unique, c'est important (vous n'êtes pas obligée de le faire apparaître bien sûr).

Cdlt,

Passez en revue cet exemple de facture.

automated invoice 3

Bonsoir,

kadrleyn, merci pour votre proposition, mais ce n'est pas du tout ce que je recherche.

3GB, je n'ai compris que 10% de votre explication... C'est clair comme de l'eau de roche pour vous, mais pour les TRES jeunes néophytes comme moi, c'est pas du tout évident.

Cependant, en relisant votre code, je n'avais pas eu le reflex d'utiliser "For Next", mais en bidouillant un peu, je suis arrivée à mes fins. Mon code est certainement plus lourd et plus long à exécuter que celui d'un expérimenté, mais ça fonctionne.

Donc merci tout de même d'avoir pris un peu de temps.

Bonne soirée au forum!

Rechercher des sujets similaires à "generer factures partir base donnees"