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 :

Outil de génération d'offre


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juin 2021
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Outil de génération d'offre
    Bonjour à tous,

    Je sollicite vos lumières pour avancer sur un code VBA permettant l'échange d'information entre Excel et Microsoft Word. (je pense que ce genre d'outils pourra servir à d'autres)

    Le contexte : je dois créer un outil excel qui soit capable de générer des offres sous word à partir d'un ensemble de données.

    Les différents types de données :
    – les tables, elles ont pour objectifs selon le besoin d'être filtrées pour après récupéré certaines données filtrer pour les envoyer sous WORD (feuille : "SOLUTION", "REF_ECF")
    – les champs remplis de manière spécifique permettront aussi de compléter des champs sous word.

    Pour l'instant j'ai réussi à :
    – pouvoir remplir des champs word via excel (feuille : "CADRAGE") cf macro EXT_CHAMP
    – filtrer et extraire les éléments d'un tableau (feuille : "REF") cf macro EXT_REF vers une autre feuille REF_EXT

    Mais je n'arrive pas à prendre le tableau généré et l'envoyer dans word tentative avec la macro "EXT_TAB_WORD" et c'est sur ce dernier point que j'aimerai avoir de l'aide si possible.

    L'objectif est d'envoyer le tableau "BDD_REF_EXT" de la feuille "REF_ECF_EXT" vers le word après la phrase "Silicium et nostradae cubitus."

    J'ai différents messages d'erreur, je ne sais pas si le code arrive à :
    – sélectionner l'objet tab "BDD_REF_EXT" et le copier ;
    – positionner le curseur.


    Le code en question :

    Sub ExportToWordAfterPhraseWithExistingFile()
    Dim wdApp As Object 'Objet Word.Application
    Dim wdDoc As Object 'Objet Word.Document
    Dim ws As Worksheet
    Dim tbl As ListObject
    Dim rng As Range ' Plage de destination dans Word
    Dim findPhrase As String ' Phrase à rechercher dans le document Word
    Dim nom_fichier As Variant ' Nom du fichier Word existant

    ' Sélectionner le fichier Word existant
    nom_fichier = Application.GetOpenFilename("Word files (*.docx), *.docx")
    If nom_fichier = "Faux" Then
    MsgBox "Aucun fichier sélectionné. Exportation annulée."
    Exit Sub
    End If

    ' Créer une nouvelle instance de Word
    Set wdApp = CreateObject("Word.Application")
    wdApp.Visible = True ' Afficher Word

    ' Ouvrir le document Word existant
    Set wdDoc = wdApp.Documents.Open(nom_fichier)

    ' Rechercher la phrase dans le document Word
    findPhrase = "Silicium et nostradae cubitus."
    With wdDoc.Range
    If .Find.Execute(findPhrase) Then
    ' Définir le curseur juste après la phrase trouvée
    .Collapse Direction:=wdCollapseEnd
    ' Set rng = ActiveDocument.Content
    Else
    MsgBox "Phrase introuvable dans le document Word. Exportation annulée."
    wdDoc.Close False ' Fermer le document Word sans enregistrer les modifications
    Exit Sub
    End If
    End With

    ' Définir la plage de destination après la phrase


    ' Boucler à travers toutes les feuilles du classeur Excel
    For Each ws In ThisWorkbook.Worksheets
    ' Vérifier si le tableau "tab" existe dans la feuille
    On Error Resume Next
    Set tbl = ws.ListObjects("BDD_REF_EXT")
    On Error GoTo 0

    If Not tbl Is Nothing Then
    ' Copier le tableau "tab" dans Excel
    tbl.Range.Copy
    With wdDoc.Range
    ' Coller le tableau dans Word juste après la phrase spécifiée
    .PasteExcelTable LinkedToExcel:=False, WordFormatting:=False, RTF:=False ' Coller le tableau sans conserver les liens Excel

    ' Insérer un saut de page après le tableau
    ' rng.Collapse Direction:=0 ' Déplacer le curseur au début de la plage de destination
    'rng.Move wdParagraph, 1 ' Aller à la ligne suivante
    End With
    Else
    MsgBox "Le tableau ""tab"" n'a pas été trouvé dans la feuille de calcul. Exportation annulée."
    wdDoc.Close False ' Fermer le document Word sans enregistrer les modifications
    Exit Sub
    End If
    Next ws


    MsgBox "Exportation vers Word terminée avec succès !"


    wdDoc.Save
    wdDoc.Close

    Set wdDoc = Nothing

    End Sub




    Merci pour votre aide précieuse,
    Fichiers attachés Fichiers attachés

  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
    12 773
    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 : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour transférer des données d'excel vers word, j'utilise coté Excel les plages nommées et coté Word les signets (objet Bookmark)
    Un aperçu dans ce 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
    Futur Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juin 2021
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Merci pour votre réponse. C'est très bien expliqué sur le lien envoyé. Je joint deux fichiers qui permettront à ceux qui suivent la discussion de réutiliser votre modèle, (En mettant un "" devant le nom du modèle par rapport à votre code la procédure marche).

    Néanmoins le tableau ce colle en format image, j'ai essayé de modifier le DataType avec wdPasteShap ou wdPasteText mais rien y fait.. Car si j'ai un long tableau je risque d'avoir des soucis...

    Aussi quand je lance le programme étrangement les espaces entre les signets sont supprimés...
    Fichiers attachés Fichiers attachés

  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
    12 773
    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 : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Néanmoins le tableau ce colle en format image, j'ai essayé de modifier le DataType avec wdPasteShap ou wdPasteText mais rien y fait.. Car si j'ai un long tableau je risque d'avoir des soucis...
    C'est fait exprès.
    Cela m'a pris des heures pour obtenir le meilleur rendu d'une plage de cellules vers Word. Toutes les autres propriétés de collage me donnaient des tableaux impropres à la lecture.
    Une autre solution serait alors de remplir un tableau dans Word. C'est prévu dans mes cartons mais la pile de ceux-ci est très haute.
    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. Réponses: 13
    Dernier message: 10/11/2009, 13h59
  2. Réponses: 0
    Dernier message: 06/11/2009, 08h57
  3. Réponses: 12
    Dernier message: 23/09/2009, 18h38
  4. Réponses: 1
    Dernier message: 28/07/2009, 10h18

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