XL 2021 Copie de certaines données Excel sur Word

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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...
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
 
@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
 
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

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.
 
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...
 
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.
 
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

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

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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
22
Affichages
499
  • Question Question
Réponses
5
Affichages
144
Réponses
18
Affichages
650
Réponses
10
Affichages
329
Retour