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 :

Macro pour générer un Word pour chaque ligne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2012
    Messages : 2
    Par défaut Macro pour générer un Word pour chaque ligne
    Bonjour,

    Je ne sais pas du tout utiliser les macros ( enfin le code VBA)et j'aimerais pouvoir générer un fichier word automatique (basé sur un modèle) pour chaque ligne de mon fichier excel avec les infos souhaitées. Tout est expliqué dans mon fichier en pièce jointe.

    Merci beaucoup pour votre aide précieuse.

    Cdt,

    Dragonfly
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, c'est l'occasion de te mettre au VBA
    Créer des champs dans ton Doc Word ou Modele ( extension dotx )
    Puis voir Piloter Word depuis Excel
    Puis si tu as des problèmes tu pourras revenir à ce moment là.

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2012
    Messages : 2
    Par défaut
    re,
    merci pour votre aide, néanmoisn pourriez-vous juste me montrer le code qui me permet d'ouvrir le word avec le contenu de ma base de données (pour une ligne par exemple)?
    Merci infiniment.

    Cordialement.
    Max (dragonflyhood)

  4. #4
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Re, dans La FAQ Piloter Word depuis Excel, il y a ceci : Comment écrire et lire dans un champ Word ?

    Cependant pour que tu n'aies pas de références à cocher, utilise ceci et adapte le à ton contexte :
    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
    Option Explicit
     
    Sub Donnees_ChampWord()
    Dim WordApp As Object
    Dim WordDoc As Object
     
        'ouvre session word
        Set WordApp = CreateObject("Word.Application")
        'ouvre du document Word
        Set WordDoc = WordApp.Documents.Open("C:\monFichier.doc")
        'word est masqué pendant l'opération
        WordApp.Visible = False
     
     
        'Fields(1) : premier champ du document Word
        'Insertion du contenu de la cellule A1 dans le champ.
        WordDoc.Fields(1).Result.Text = Range("A1")
     
        'Si le champ est dans un entête, utilisez:
        'WordDoc.Sections(1).Headers(wdHeaderFooterPrimary).Range.Fields(1).Result.Text
     
        'Récupère le contenu du champ
        MsgBox WordDoc.Fields(1).Result.Text
     
        'Ferme le document word en sauvegardant les modifications
        WordDoc.Close True
        'ferme la session Word
        WordApp.Quit
    End Sub

  5. #5
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Re, ton code devrait ressembler à qqch comme ceci :
    Sinon il y a ceci pour les Bookmarks/Signets , à adapter
    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
    Option Explicit
     
    Sub Remplir_ChampWord()
    Dim WordApp As Object
    Dim WordDoc As Object
    Dim i As Long, j As Long, LastRow As Long
     
        LastRow = Feuil1.Range("A" & Rows.Count).End(xlUp).Row
     
        Set WordApp = CreateObject("Word.Application")
        WordApp.Visible = False
     
        For i = 2 To LastRow
            Set WordDoc = WordApp.Documents.Open(ThisWorkbook.Path & "\" & "Suivi projet.doc")
            For j = 1 To 8
                WordDoc.Fields(j).Result.Text = Trim$(Feuil1.Cells(i, j))
            Next j
            WordDoc.SaveAs Filename:=ThisWorkbook.Path & "\Test\" & "SP " & Format(i - 1, "000") & ".doc"        
            Set WordDoc = Nothing
        Next i
     
        WordApp.Quit
        Set WordApp = Nothing
    End Sub
    En créant une plage nommée "Liste" sur A2:A16
    On peut lancer la génération des docs d'une sélection contiguë ou non
    de cellules dans cette plage nommée
    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
    Option Explicit
     
    Sub Remplir_ChampsWord_Selection()
    Dim WordApp As Object
    Dim WordDoc As Object
    Dim iCol As Long
    Dim Cel As Range, Inter As Range
     
        Set WordApp = CreateObject("Word.Application")
        WordApp.Visible = False
     
        For Each Cel In Selection.Cells
            Set Inter = Application.Intersect(Cel, Feuil1.[Liste])
            If Not Inter Is Nothing Then
                Set WordDoc = WordApp.Documents.Open(ThisWorkbook.Path & "\" & "Modele.doc")
                For iCol = 1 To 8
                    WordDoc.Fields(iCol).Result.Text = Trim$(Feuil1.Cells(Cel.Row, iCol))
                Next iCol
                WordDoc.SaveAs Filename:=ThisWorkbook.Path & "\Test\" & "SP " & Format(Cel.Row - 1, "000") & ".doc"
                Set WordDoc = Nothing
            End If
        Next Cel
     
        WordApp.Quit
        Set WordApp = Nothing
     
        Feuil1.Range("A1").Select
    End Sub

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/10/2010, 14h34
  2. Réponses: 0
    Dernier message: 30/09/2010, 15h29
  3. [XL-2003] exécuter une macro pour chaque ligne.
    Par visto94 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/07/2010, 13h48
  4. [AC-2007] Macro EnvoiTouches ne fonctionne plus pour la lettre "O" (pour Oui).
    Par JDMAO dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/09/2009, 18h19

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