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

VBA Word Discussion :

Valeur excel vers signet word, chemin d'accès


Sujet :

VBA Word

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2010
    Messages
    252
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 252
    Points : 74
    Points
    74
    Par défaut Valeur excel vers signet word, chemin d'accès
    Bonjour,

    Soit un document excel et un modèle de document word.

    Soit la procédure suivante : on ouvre excel, on saisie les données et on les envoie vers le modèle de document word via une macro. Quand le document word s'ouvre, une macro se lance pour récupérer les valeurs d'excel et les renvoyer vers des signets.

    Mon premier problème était le suivant : comment faire pour qu’excel trouve le document word sans inclure le chemin d’accès dans la macro.
    Problème résolu avec ces lignes de code excel :

    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
    Sub OuvrirWord()
     
        Dim AppWord As Object
        Dim Doc As Object
        Dim Fichier As String
     
        'crée une instance de Word
        Set AppWord = CreateObject("Word.Application")
     
        'rend l'application visible
        AppWord.Visible = True
     
        'construit le chemin à partir du nom du fichier Excel
        Fichier = Left(ThisWorkbook.FullName, InStrRev(ThisWorkbook.FullName, ".") - 1) & ".dot"
     
        'ouvre le document
        Set Doc = AppWord.Documents.Add(Fichier)
     
        'lance la macro de mise à jour des signets
        AppWord.Run MacroName:="Document_New"
     
    End Sub
    Mon second problème est le suivant : trouver l’équivalent du premier problème pour mon document word. En effet, ma ligne dans word est la suivante :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Sub MiseAjour()
       Dim xlApp As Excel.Application
       Dim xlWb As Excel.Workbook
       Dim xlSh As Excel.Worksheet
       Dim sttemp As String, Ligne As Integer, MaListeDeSignets As Variant
     
        'liste des signets qui correspond également au nombre de valeurs à récupérer
        MaListeDeSignets = Array("Numéro", "Imputation", "Dénomination", "Adresse", "Tél", "Fax", "Courriel", "Agissant", "Intitulé", "Lieu", "Date", "Description", "Du", "Au", "A", "B", "C", "Frais", "Observations", "PhraseA", "SommeC", "Annulation") 'les signets supplémentaires doivent être ajoutés ici
     
    ' MON PROBLEME INTERVIENT ICI CAR J'AI ENTRÉ LE CHEMIN D'ACCES
       Set xlApp = New Excel.Application
       Set xlWb = xlApp.Workbooks.Open("C:\Documents and Settings\Pierre\Bureau\Engagement_Données")
       Set xlSh = xlWb.Sheets(4)
     
        'on boucle sur la liste
       For Ligne = 0 To UBound(MaListeDeSignets) 'ubound sert à compter le nombre de valeur contenu dans la variable "MaListeDeSignets"
          'on recupere les valeurs dans le fichier excel
          sttemp = xlSh.Cells(Ligne + 1, 2)
          'Trf du contenu de la cellule vers le signet
          Call BookmarkNewValue(MaListeDeSignets(Ligne), sttemp)
       Next
     
       xlWb.Close
       xlApp.Quit
       Set xlWb = Nothing
       Set xlApp = Nothing
     
    End Sub
     
    Sub BookmarkNewValue(ByVal NomSignet As String, ByVal NouvelleValeurSignet As String)
        If ActiveDocument.Bookmarks.Exists(NomSignet) Then
            ActiveDocument.Bookmarks(NomSignet).Select
            ActiveDocument.Unprotect
            Selection = NouvelleValeurSignet 'le bug est ici... le remplacement de la valeur supprime le signet
            Selection.Bookmarks.Add Name:=NomSignet, Range:=Selection.Range
            Selection.MoveRight Unit:=wdCharacter, Count:=1
            ActiveDocument.Protect wdAllowOnlyFormFields
        End If
    End Sub
    Le problème vient du fait que j'ai rentré le chemin d'accès. J'aimerais que le chemin se fasse tout seul... comme avec le code excel.


    Merci

  2. #2
    Membre régulier
    Inscrit en
    Juillet 2010
    Messages
    252
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 252
    Points : 74
    Points
    74
    Par défaut
    Je pense avoir trouvé.
    Je mets en résolu si ça se confirme.

  3. #3
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Petite remarque, on peut travailler avec Word de la même manière que tu travailles avec Excel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim wApp as Word.Application
     
    'pour une nouvelle instance
    Set wApp = New(Word.Application)
     
    'pour saisir une instance 
    Set wapp = Woord.Application
    Normalement, cette ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'lance la macro de mise à jour des signets
        AppWord.Run MacroName:="Document_New"
    n'est pas nécessaire, si tu as une macro dans le document qui s'appelle Document_New, elle est automatiquement exécutée lors de la création du document basé sur ton modèle.



    tu peux retrouver le chemin avec la propriété Path de l'objet Workbook.

    Pour ton second problème, il y a plus simple, si tu passes en paramètre ton document à ta procédure Excel, plus besoin de chemin, l'objet Document est directement disponible en Excel.



    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
    27
    Sub OuvrirDocument()
    Dim wApp As Word.Application
    Dim oDoc as Word.Document
     
    set wApp = Word.Application
    set oDoc = wapp.add "MonModèle.Dot"
     
    'On ouvre la seconde procédure et on lui passe le document en paramètre
    RemplirSignet oDoc
     
    End Sub
     
     
    Sub RemplirSignet(mydoc As Word.Document)
    Dim xlApp as Excel.Application
    Dim xlWb as Workbook
     
    ...
    ...
     
    'Ensuite, on utilise le document directement
    mydoc.bookmarks(1).range.text = "..."
     
    ...
    ...
     
    end Sub
    Voilà un code que je viens d'utiliser pour faire un exemple, le document comporte 3 signets, S1, S2 et S3 et je ne remplis que S2 par un texte fixe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub TestMacroAutoNew()
    Dim wapp As Word.Application
    Dim oDoc As Word.Document
    Set wapp = Word.Application
    Set oDoc = wapp.Documents.Add("C:\Documents and Settings\Olivier\Application Data\Microsoft\Templates\Doc_new.dotm")
     
    Oli002 oDoc
    wapp.Visible = True
     
    End Sub
     
    Sub Oli002(myDoc As Word.Document)
    myDoc.Bookmarks("S2").Range.Text = "Texte Ajouté"
    End Sub

Discussions similaires

  1. [XL-2003] Macro Copier/Coller données Excel vers document Word avec Signets
    Par Julien91080 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 22/05/2013, 12h28
  2. [XL-2003] Erreur 424 Objet requis (Excel vers signets de Word).
    Par Michel91120 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/01/2012, 17h29
  3. [Toutes versions] Copier valeurs dernière ligne vers signet word
    Par 8e8eClo dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 06/12/2011, 10h35
  4. Renvoyer des valeurs EXCEL vers texte WORD
    Par nino63 dans le forum Excel
    Réponses: 6
    Dernier message: 28/11/2011, 22h39
  5. Export données Excel vers signets Word
    Par stephanies_1977 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/09/2007, 16h27

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