IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Excel To Word


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2023
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2023
    Messages : 11
    Par défaut Excel To Word
    Bonjour à tous.

    Je reviens une nouvelle fois vers vous, car après mon premier post, j'ai un peu complété mon code VBA suite aux recommandations de certain d'entre vous.
    Cependant, je suis totalement bloqué au point que je ne sais même plus quoi faire.
    Je me retourne une nouvelle fois vers vous !

    Je vous explique ce que j'essaie de réaliser.

    En gros j'ai deux choses : un tableur Excel, avec tableaux et calculs ; et un document Word, que j'aimerais me servir comme modèle.

    Je réalise des rapports. J'utilise le tableur pour réaliser les calculs et pour le moment, je copie/colle les tableaux sur Word directement. J'aimerais, à la fin de chaque rapport (qui sont diffèrent les uns des autres), envoyer directement certains tableaux à un endroit bien précis d'un modèle Word.

    Sachant que j'ai plusieurs rapports à faire, il faudrait dans l’idée qu’à chaque fois ça "utilise" le modèle Word pour en créer un nouveau, en y intégrant les tableaux sélectionnés, afin de laisser "vierge" le modèle Word, pour que je puisse le réutiliser ensuite pour un autre rapport.

    Dans l'idée, j'aimerais procéder ainsi :

    - Une fois les calculs Excel réalisés, avoir en feuille 1 une Userform qui s'active via un bouton. Dans cet Userform, avoir une liste automatique reprenant les feuilles présentent dans le classeur (avec remplissage automatique si j’ajoute une feuille).
    - Avoir avant chaque feuille une création automatique de case à cocher.

    L'objectif des case à cocher : "sélectionner" une plage de cellule précise sur cette feuille (par exemple, si je coche la feuille une, selectionner le tableau "A1:C6")
    Dans la Userform, avoir un bouton de commande qui me permet " d'exporter vers mon modèle Word" les plages sélectionnées vers leurs emplacements Word defini.




    Mise en situation :

    Je réalise mes calculs sur Excel. Je sélectionne les feuilles que je veux intégrer à mon documents Word (comme expliqué, je ne veux pas "sélectionner" l'ensemble de la feuille, mais uniquement une plage de cellule). Je clic sur le bouton de commande "export vers word" --> création d'une copie du modèle Word, et insertion des différents tableaux aux emplacements définis à l'avance sur le document Word.

    Honnêtement, je me suis lancé dans un truc plus gros que moi, mais j'aimerais réussir, et sans vous, ce m'est impossible. Je n'ai pas les connaissances nécessaires.

    Je ne sais pas si certain d’entre vous accepterons de m’aider, je comprendrais car, à titre personnel, je trouve que cela représente un travail monstre, donc je comprendrais si je n’ai pas de réponse.
    En tout état de cause, afin de vous montrer que je travail dessus et que je ne vous demande pas simplement un « travail prémâché », vous avez en pièce jointe mon travail. Je précise que je pars de zéro, sans aucune base informatique.

    Merci à vous tous, bonne année et bonne santé a vous et vos proches .
    Export vers word.xlsmVoici le modèle Word.docxExport vers word.xlsmVoici le modèle Word.docxExport vers word.xlsmVoici le modèle Word.docx

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 174
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Personnellement pour le modèle "Word", j'utilise un document Word classique (docx) que j'ouvre comme "Modèle" ce qui offre les mêmes avantages que si l'on ouvrait un modèle (dotx) manuellement sans les inconvénients lors du sauvetage d'un modèle dans un répertoire dédié.

    Ce document, je le stocke dans un sous-répertoire que j'ai nommé "Template" et tous mes documents ont des signets qui vont servir à recevoir les cellules et plages de cellules d'exel.
    Dans Excel, les cellules sont nommées à l'aide du gestionnaire des noms.

    Pour en savoir plus voir mon billet VBA Excel - Transférer des données d'excel vers Word
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2023
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2023
    Messages : 11
    Par défaut
    Bonjour,

    Tout d'abord, merci pour votre retour.

    J'ai essayé mais je pense que je m'y perd sur la création de dossier et sous-dossier.

    J'ai aussi un peu de mal avec "où placer" les différents codes; il y en à qui, si j'ai bien compris, je dois mettre dans un module, mais l'autre, celui qui ce nomme "exemple de procédure qui l'invoque" je ne savais pas ou le placer, je l'ai mis dans "thisWorkBook"

    En tout cas, après quelques essais, j'ai ce message d'erreur qui apparait : Erreur d'exécution '5174': Erreur définie par l'application ou par l'objet

    Je pense ( à tort peut-être) que c'est un problème lié à l'ouverture du document Word, mais je n'arrive pas à trouver l'origine du problème.

    J'ai créé sur mon bureau un Ficher nommé "Application". J'ai mis mon Tableur Excel dedans. Ensuite, j'ai créé dans ce dossier un sous-dossier nommé Template avec mon document Word (en .docx). J'ai ensuite en autre sous-dossier nommé Document.

    J'ai ensuite renseigner les différents chemins :

    Const SubFolder As String = "\Template\" ' Sous-répertoire des modèles J'ai mis --> Const SubFolder As String = "C:\Users\XXX\OneDrive\Bureau\Application\Template\"
    Const TemplateName As String = "Courrier.docx" ' Nom du modèle J'ai mis --> Const TemplateName As String = "Voici le modèle Word.docx"

    Avez vous des pistes?

    Je vous remercie, et bonne journée à vous

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 174
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il faut mettre les procédure dans un module standard et pas dans ThisWorkbook ni dans les modules de feuilles.
    On peut avoir une ou plusieurs procédures dans un module et on peut avoir autant de procédures standard que l'on veut dans un projet.
    Il faut idéalement renommer les modules avec un nom suffisamment explicite. Un module ne peut pas avoir le même nom qu'une procédure (Sub ou Function). Personnellement, je préfixe tous mes modules par un "m" minuscule.

    Pour travailler depuis excel avec word, il faut référencer a minima la bibliothèque Word mais cela je l'explique dans mon article avec une illustration.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2023
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2023
    Messages : 11
    Par défaut
    Merci de votre réponse.

    J'ai transférer le code vers le module, et merci des explications.

    En revanche, j'ai toujours le même code erreur :

    "Erreur d'exécution '5174':

    Désole ... Nous n'avons pas trouve votre fichier. Peut-être l'avez-vous
    déplacé, renommé ou supprimé ?"

    Cela semble venir de cette ligne : Set oDoc = oWrd.Documents.Add(Template:=FullName, NewTemplate:=False, DocumentType:=0)

    J'ai re-verifié et la bibliothèque est bien référencée.

    Bonne journée et merci

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    Quelle est la valeur de FullName ? Le fichier est-il bien à cet emplacement.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2023
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2023
    Messages : 11
    Par défaut
    Bonjour,

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Sub Main()
      ' Nécessite de référencer Microsoft Word xx.0 Object Library
      ' Déclaration
      Const SubFolder As String = "C:\Users\XXX\OneDrive\Bureau\Application\Template\Voici le modèle Word.docx"          ' Sous-répertoire des modèles
      Const TemplateName As String = "Voici le modèle Word.docx"    ' Nom du modèle
      Dim oWrd As Word.Application                      ' Application Word
      Dim oDoc As Word.Document                         ' Document Word traité
      Dim RootFolder As String                          ' Répertoire racine
      Dim FullName As String                            ' Nom complet
      Dim CellsName As Variant                          ' Nom des cellules à copier
      ' Affectation
      Set oWrd = New Word.Application
      RootFolder = ThisWorkbook.Path                    ' Chemin du classeur
      FullName = RootFolder & SubFolder & TemplateName  ' Chemin + Nom complet où se trouve le modèle
      CellsName = Array("RaisonSociale", "Adresse", "CodePostal", "Détail_Facture", "Ville")
      ' Ouverture du modèle Word
      Set oDoc = oWrd.Documents.Add(Template:=FullName, NewTemplate:=False, DocumentType:=0)
      ' Transfert des données
      TransferData_Excel_Word oDocument:=oDoc, BookmarksNames:=CellsName
      ' Active le document et le rend visible
      With oWrd
      .Visible = True: .Activate
      End With
      '
      Set oWrd = Nothing: Set oDoc = Nothing
    End Sub
    Qu'en pensez vous?
    Ai-je omis des choses?

    Merci à vous

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Ton SubFolder contient le nom du fichier, donc ta combinaison FullName vaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Path & "C:\Users\XXX\OneDrive\Bureau\Application\Template\Voici le modèle Word.docx" & "Voici le modèle Word.docx"
    Donc si tu nettoies ta constante SubFolder, ca devrait aller
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  9. #9
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2023
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2023
    Messages : 11
    Par défaut
    Pardonne moi, mais je n'ai pas du tout compris ce que tu essaies de m'expliquer

  10. #10
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Si je prends ta ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FullName = RootFolder & SubFolder & TemplateName ' Chemin + Nom complet où se trouve le modèle
    et que je remplace chacun des éléments par leur valeur donnée plus haut, j'obtiens deux fois le nom du fichier

    Une solution pour t'en rendre compte par toi même est de faire cette instruction
    après que la variable ait été complétée
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  11. #11
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2023
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2023
    Messages : 11
    Par défaut
    Oh bon sang bien vu !! J'ai compris ! Il répétait plusieurs fois le même chemin !!

    Je ne sais pas comment tu as vu cela

    Merci beaucoup !

  12. #12
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2023
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2023
    Messages : 11
    Par défaut
    J'ai donc rectifié mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Sub Main()
      ' Nécessite de référencer Microsoft Word xx.0 Object Library
      ' Déclaration
      Const SubFolder As String = "\Template\"          ' Sous-répertoire des modèles
      Const TemplateName As String = "Voici le modèle Word.docx"    ' Nom du modèle
      Dim oWrd As Word.Application                      ' Application Word
      Dim oDoc As Word.Document                         ' Document Word traité
      Dim RootFolder As String                          ' Répertoire racine
      Dim FullName As String                            ' Nom complet
      Dim CellsName As Variant                          ' Nom des cellules à copier
      ' Affectation
      Set oWrd = New Word.Application
      RootFolder = ThisWorkbook.Path                    ' Chemin du classeur
      FullName = RootFolder & SubFolder & TemplateName  ' Chemin + Nom complet où se trouve le modèle
      CellsName = Array("CodePostal", "Détail_Facture", "Ville", "Adresse", "Nom")
      ' Ouverture du modèle Word
      Set oDoc = oWrd.Documents.Add(Template:=FullName, NewTemplate:=False, DocumentType:=0)
      ' Transfert des données
      TransferData_Excel_Word oDocument:=oDoc, BookmarksNames:=CellsName
      ' Active le document et le rend visible
      With oWrd
      .Visible = True: .Activate
      End With
      '
      Set oWrd = Nothing: Set oDoc = Nothing
    End Sub
    Mais voila ce que cela me donne:

    Nom : Capture d'écran 2024-01-09 165019.png
Affichages : 88
Taille : 7,9 Ko

    Savez vous pourquoi tout ce colle en eux?

  13. #13
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 174
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Le lien ne fonctionne pas.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  14. #14
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2023
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2023
    Messages : 11
    Par défaut
    Merci, j'ai modifié

  15. #15
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 174
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si vous avez repris mon exemple, il doit y avoir cinq signets nommés "CodePostal", "Détail_Facture", "Ville", "Adresse", "Nom" dans le document Word et dans Excel une plage de cellules nommée "Détail_Facture" (l'image), et quatre cellules nommées "CodePostal", "Ville", "Adresse", "CodePostal".
    Il faut également, mettre en forme les signets de telle manière qu'il soit chacun sur une ligne.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  16. #16
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2023
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2023
    Messages : 11
    Par défaut
    Bonjour,

    Oui, j'essaie de m'exercer via votre exemple.

    Je pense avoir suivi vos instructions.

    Voici mes signets:

    Nom : Capture d'écran 2024-01-09 165019.png
Affichages : 87
Taille : 24,7 Ko

    Pensez vous que cela vienne de la?

    Ou peut-etre du tableur excel?

    Merci à vous, bonne journée

  17. #17
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 174
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je ne sais pas où vous en êtes dans vos tests.

    J'ai préparé un classeur ("xl2wrd_Facture" et un document word (Facture.Docx) qui sert de modèle

    En pièce jointe le classeur nommé xl2wrd_Facture.xlsm et le document Facture.docx qui est le modèle.
    Le classeur Excel peut-être placé dans un répertoire quelconque et le document Word dans un sous-répertoire de celui-ci et il doit être nommé Template

    Le code des deux procédures est identique à ma publication de mon billet.
    J'ai juste modifié la ligne 5 (nom du document Word) et la ligne 15 le nom des cellules à transférer vers les signets (en rouge ci-dessous)

    Soit : Const TemplateName As String = "Facture.docx" ' Nom du modèle et CellsName = Array("RaisonSociale", "Adresse", "Localité", "DateFacture", "[COLOR="#FF0000"]Detail_Facture")

    Illustration 1
    On peut voir à gauche la liste des signets et à droite la feuille nommée Transfert vers Word contenant les cellules à copier. Les cellules à copier sont en vert à l'exception du tableau structuré qui est en noir.

    Nom : 240111 Transfert des données d'excel vers un document (modèle) dans Word.png
Affichages : 85
Taille : 66,9 Ko


    Illustration 2
    On peut voir à gauche, le document nommé Facture.docx et à droite le document Documentn avec les données transférées. (n représente le chiffre du nombre de document ouvert).


    Nom : 240111 Documents Word (modèle) et après traitement (document).png
Affichages : 86
Taille : 57,3 Ko
    Fichiers attachés Fichiers attachés
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  18. #18
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Juillet 2023
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2023
    Messages : 11
    Par défaut
    Bonjour,

    Merci de votre aide. Je cherche d'où peu venir mon erreur, étant donnée que le votre fonctionne et pas le miens. J'avoue ne pas avoir trouvé encore. J'ai du mal à "traduire" le code, car je n'ai pas beaucoup de connaissance, mais je ne lâche rien .

    Encore merci, vous me faites progresser, et je ne vous remercierais jamais assez pour cela.

    Je pense ne pas avoir fini avec mes questions, alors a bientôt

    bon week end a vous

  19. #19
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 174
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si on utilise mon code tel quel, il n'y a que deux choses à connaître le gestionnaire des noms dans Excel et l'utilisation des signets dans Word
    Les noms donnés aux cellules doivent être de même orthographe que le nom des signets et pour permettre le transfert des valeurs, il y a lieu de placer ces noms dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      CellsName = Array("RaisonSociale", "Adresse", "Localité", "DateFacture", "Detail_Facture")
    Ainsi la cellule d'Excel F7 est nommée "DateFacture" et le texte "Date" dans Word, on le sélectionne et on lui attribue comme signet le même nom "DateFacture"
    Les textes dans Word pour les signets ne sont pas obligatoires, je les ai placé pour que ce soit plus simple à comprendre. On peut fort bien placer un signet à un endroit précis du document sans qu'il n'y ait de texte.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. [VBA-E]Problème entre Excel et Word
    Par Ritter dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 08/02/2006, 19h03
  2. Réponses: 1
    Dernier message: 07/01/2006, 23h33
  3. Réponses: 5
    Dernier message: 07/01/2006, 16h55
  4. Excel dans word
    Par belgiuman dans le forum VBA Word
    Réponses: 3
    Dernier message: 11/08/2005, 13h19
  5. [VBA Excel Word]Adapter un code Excel a Word
    Par Baxter67 dans le forum VBA Word
    Réponses: 4
    Dernier message: 08/08/2005, 23h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo