XL 2021 Copie de certaines données Excel sur Word

Mathos

XLDnaute Nouveau
Supporter XLD
Bonjour,
Je voulais déjà commencer par remercier ceux qui m'ont aidé sur ma précédente demande, cela m'a permis de découvrir certaines fonctionnalités d'excel que je ne connaissais pas.
J'aurais une autre question, je ne sais pas si c'est possible, mais y a-t'il moyen de lier certaines cellules excel à certaines zones de texte d'un fichier word.
Concrètement, je souhaiterais ajouter une case facture sur la ligne excel d'une personne et que ça me génère automatiquement une facture pour cette personne en reprenant son nom, prénom, montant de sa cotisation, le tout dans un squelette word déjà créé.
Ex : Veuillez trouver une facture concernant l’inscription de Mme (nom/prénom repris sur excel) aux cours de (repris sur excel) pour un montant de (repris sur excel).
Grâce à cette aide j'ai déjà de quoi créer le fichier doc, mais je voudrais en plus que ça le remplisse automatiquement : https://excel-downloads.com/threads/creation-de-document-word-via-excel.20079919/

D'avance merci pour vos réponses
 
Dernière édition:
Solution
RE

il y a beaucoup à dire sur le fichier Excel :
  1. les tableaux structurés existent depuis plus de 20 ans mais tu ne les utilises pas et te retrouves avec une quantité aléatoire et totalement inutile de lignes.
    Tu les utilises pour les remises mais n'en tires pas correctement partie.
    L'alternance de coloration d'une ligne sur 2 y est naturelle et évite une MFC qui se recalcule en permanence.
  2. le numéro de licence devrait être un ID unique : là c'est vide donc limite ce que l'on peut faire
  3. il est plus de déconseillé de lier 2 feuilles par une formule de type
    =SI('Licences'!C2<>"";'Licences'!C2;"")
    Le même tri, volontaire ou non, l'insertion ou la suppression d'une ligne... du premier onglet va mettre le bazar total dans la...

Mathos

XLDnaute Nouveau
Supporter XLD
Merci Phil, je vais regarder, et je vais essayer de prendre en compte les remarques et conseils de Chris pour le refaire entièrement, tout en le gardant "esthétiquement et au niveau des fonctions" comme il est actuellement mais de manière plus propre et simple :) (Je n'ai vraiment commencé excel que depuis avril). Je vous tiens au courant. Merci
 

Mathos

XLDnaute Nouveau
Supporter XLD
@Phil69970 ta proposition me convient parfaitement, @chris je vais essayer de refaire ma base en prenant en compte tes remarques, par contre je n'ai pas trouvé comment générer la facture. La génération d'une ligne sur deux coloré est super, je ne connaissais pas du tout, je vais étudier les tableaux structurés :)
Je regarderais vos 2 propositions plus en profondeur ce week-end. Encore grand merci à vous
 

job75

XLDnaute Barbatruc
Bonjour Mathos, le forum,

Voici une solution utilisant 4 signets Word.

Téléchargez les fichiers joints dans le même dossier (le bureau) et exécutez cette macro :
VB:
Sub Factures()
Dim t#, plage As Range, saison$, chemin1$, chemin2$, nomDoc$, Wapp As Object, i&, n&, Doc As Object, nom$, total#
t = Timer
Set plage = Sheets("Compta").[A1].CurrentRegion
saison = plage(1)
chemin1 = ThisWorkbook.Path & "\"
chemin2 = chemin1 & "FACTURES " & saison & "\"
If Dir(chemin2, vbDirectory) = "" Then MkDir chemin2 'crée le sous-dossier
nomDoc = "Modèle de facture adhérents.doc" 'nom adaptable
On Error Resume Next
Set Wapp = GetObject(, "Word.Application")
On Error GoTo 0
If Wapp Is Nothing Then Set Wapp = CreateObject("Word.Application")
Wapp.Visible = True
With Sheets("Licences").[A1].CurrentRegion
    For i = 2 To .Rows.Count
        If Trim(.Cells(i, 3)) <> "" Then
            n = n + 1
            Set Doc = Wapp.Documents.Open(chemin1 & nomDoc) 'ouvre le document Word
            nom = .Cells(i, 3) & " " & .Cells(i, 4)
            Doc.Bookmarks("SG1").Range = IIf(.Cells(i, 5) = "M", "Monsieur ", IIf(.Cells(i, 5) = "F", "Madame ", "")) & nom
            Doc.Bookmarks("SG2").Range = .Cells(i, 2)
            total = Application.SumIfs(plage.Columns(28), plage.Columns(1), .Cells(i, 3), plage.Columns(2), .Cells(i, 4)) 'SOMME.SI.ENS
            Doc.Bookmarks("SG3").Range = Format(total, "#,##0.00 €")
            Doc.Bookmarks("SG4").Range = NbToLettresFSB(CStr(total), "euro")
            Doc.SaveAs chemin2 & nom & " " & saison & ".doc" 'enregistrement
            Doc.Close 'ferme le document word
        End If
    Next i
End With
If Wapp.Documents.Count = 0 Then Wapp.Quit 'ferme Word
MsgBox n & IIf(n < 2, " facture éditée", " factures éditées") & " en " & Format(Timer - t, "0.00 \sec"), , saison
End Sub
Les documents Word édités sont dans les sous-dossier FACTURES SAISON 2024 - 2025.

Testée avec 99 noms la macro s'exécute chez moi en 22 secondes.

La conversion des chiffres en lettres est faite par la macro NbToLettresFSB de patricktoulon éditée dans les Ressources du forum.

A+
 

Pièces jointes

  • Tableau pour les inscriptions Compta et Effectifs.xlsm
    97.4 KB · Affichages: 4
  • Modèle de facture adhérents.doc
    30.5 KB · Affichages: 5

chris

XLDnaute Barbatruc
Bonjour

Pas besoin de VBA pour effectuer un publipostage Word. Heureusement !
Pourquoi réinventer l'eau tiède...

Il suffit d'ouvrir le Word que j'ai posté, de confirmer le chemin et nom du fichier source de données (l'excel que j'ai posté avec le montant et sans lignes superfétatoires)

Il n'y a plus qu'à lancer la fusion (un clic), soit directement sur l'imprimante, soit dans un document Word que l'on peut vérifier avant impression.
 

Mathos

XLDnaute Nouveau
Supporter XLD
Bonjour

Pas besoin de VBA pour effectuer un publipostage Word. Heureusement !
Pourquoi réinventer l'eau tiède...

Il suffit d'ouvrir le Word que j'ai posté, de confirmer le chemin et nom du fichier source de données (l'excel que j'ai posté avec le montant et sans lignes superfétatoires)

Il n'y a plus qu'à lancer la fusion (un clic), soit directement sur l'imprimante, soit dans un document Word que l'on peut vérifier avant impression.
Je ne comprenais pas comment faire les factures 😅 Merci beaucoup, les 3 solutions fonctionnent parfaitement, dur de choisir...
 

Mathos

XLDnaute Nouveau
Supporter XLD
Pour l'instant je m'attelle à essayer de rendre mon fichier propre en essayant de suivre les conseils de Chris (pas forcément évident, mais j'essaye) et après je m'attellerai à la facturation :). J'avoue que pour l'instant la solution de Chris est la plus simple pour moi, mais je verrais tout ça une fois mon fichier propre.
 

chris

XLDnaute Barbatruc
RE

Fichier modifié (avant ta dernière mouture)

Il suffit d'actualiser le tableau des remises via un clic droit Actualiser quand tu modifies la compta

Attention : jamais de lignes vides dans un tableau structuré.
Toute ligne saisie sous la dernière ligne s'y insère automatiquement et hérite des formules, formats et liste déroulantes.
 

Pièces jointes

  • Tableau pour les inscriptions Compta et Effectifs2_PQ.xlsm
    47.5 KB · Affichages: 6

Mathos

XLDnaute Nouveau
Supporter XLD
Désolé Chris, je ne sais pas si c'est dû au fait qu'il y a des lignes vides ou pas, car j'ai vidé le contenu des cellules afin d'avoir un fichier vierge, mais quand je fais "actualiser tout", j'ai cette erreur, je ne comprends pas, car j'ai bien cette colonne, et si je mets une valeur, par ex. un montant pour 1er chèque 1er T, ça veut absolument une valeur 2e chèque 1er T si il y en avait un avant la raz de la cellule 🤔
Capture d'écran 2024-10-14 183116.png
 

Pièces jointes

  • Tableau pour les inscriptions Compta et Effectifs_PQ Vierge.xlsm
    50.7 KB · Affichages: 3

chris

XLDnaute Barbatruc
RE

Bis repetita un tableau ne doit pas contenir de ligne vides !

Il faut sélectionner toutes les lignes hors titre, clic droit, Supprimer lignes de Tableau.
Il reste une ligne vide sous le titre mais ce n'est pas comme une ligne dont on efface le contenu.
Celle-ci mémorise formules et mises en forme, ce qui n'est pas cas si on efface le contenu...

J'ai modifié les requêtes et ai du ajouter un tableau vide (onglet Tech) pour le cas où la Compta est vide car le tableau de remises comporte une colonne de saisie pour la date de remise, qui ne peut fonctionner avec une source vide.
 

Pièces jointes

  • Tableau pour les inscriptions Compta et Effectifs_PQ Vierge1.xlsm
    49.9 KB · Affichages: 5

Discussions similaires

Statistiques des forums

Discussions
315 087
Messages
2 116 084
Membres
112 656
dernier inscrit
VNVT