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 EXCEL pour publipostage avec ligne active [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club Avatar de Le Gnark
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Juin 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2015
    Messages : 19
    Points : 9
    Points
    9
    Par défaut Macro EXCEL pour publipostage avec ligne active
    Bonjour à tous!
    (système office 2010)

    Je rencontre une grande difficulté pour réaliser une macro consistant à exécuter un publipostage à partir d'un fichier excel, et ce uniquement concernant la ligne active (selectionnée).

    Je dispose une base de donnée excel, et d'un fichier word dont le publipostage et les champs sont déjà créés

    Voici ma macro, qui fonctionne, mais en publipostant toutes les lignes!

    Nom du fichier excel : Publipostage.xlsm
    Nom du word modèle : Publi.docx

    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
    40
    Sub PubliPOST()
     
    Application.ScreenUpdating = False
    Sheets("Feuil1").Activate
    lign = ActiveCell.Row
    debut = "A" & lign
    Fin = "D" & lign
    Range(debut, Fin).Select
     
     
        'Doc Word comprenant le publipostage
        FileMailing = "N:\DepContentieux\Pilotage et veille juridique\Robin\FORMULES EXCEL\Publi.docx"
        ' Ouverture du doc Word
        Dim AppWord As Word.Application
        Set AppWord = New Word.Application
        Application.ScreenUpdating = False
        AppWord.Visible = False    'True
        Set docWord = AppWord.Documents.Open(FileMailing)
        NomBase = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
        With docWord.MailMerge
            'Ouverture base de données XLS
            .OpenDataSource Name:=NomBase, _
                            Connection:="Driver={Microsoft Excel Driver (*.xlsm)};" & "DBQ=" & _
                                        NomBase & "; ReadOnly=True;", SQLStatement:="SELECT * FROM [Feuil1$]"
            'Spécifie la destination de la fusion
            .Destination = wdSendToNewDocument    ' wdSendToPrinter pour imprimer
            .SuppressBlankLines = True
            'Prend en compte l'ensemble des enregistrements (non vide)
            With .DataSource
                .FirstRecord = wdDefaultFirstRecord
                .LastRecord = wdDefaultLastRecord
            End With
            'Exécute l'opération de publipostage
            .Execute Pause:=False
        End With
        docWord.Activate
        docWord.Close savechanges:=False
        AppWord.Visible = True
     
    End Sub
    Que dois-je faire SVP ???
    intégrer un système activerow????

    Merci d'avance... car je galère!!

  2. #2
    Expert éminent sénior
    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
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, à consulter de toute façon : Le publipostage Word-Excel

  3. #3
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    il suffit peut être que tu indiques pour .FirstRecord et .LastRecord le numéro d'enregistrement sélectionné qui est plus ou moins la ligne sélectionnée (avec sans doute un offset) de la feuille Excel.
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  4. #4
    Futur Membre du Club Avatar de Le Gnark
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Juin 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2015
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    Aurais tu une idée de code ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            With .DataSource
                .FirstRecord = ????
                .LastRecord = ????
    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With .DataSource
                    .FirstRecord = ActiveCell.row
                    .LastRecord = ActiveCell.row
    Mais sans résultat!!

    Peut être quelque chose à compléter dans le SQLStatement ??? je ne sais plus du tout quoi essayer! ^^

  5. #5
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    à quelle ligne commence tes enregistrements sur ta feuille excel. Peux-tu nous faire une copie d'écran du début de ta feuille excel avec les numéros de colonnes et les numéros de lignes
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  6. #6
    Futur Membre du Club Avatar de Le Gnark
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Juin 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2015
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    Je vous poste tout ca demain matin.
    merci pour votre aide!

  7. #7
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    je confirme ce que je disais,
    avec la modification suivante dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            With .DataSource
            .FirstRecord = lign - 1
            .LastRecord = lign - 1
            End With
    voici ce que j'obtiens pour le document généré :

    Nom : Publi_ligneActive.png
Affichages : 2087
Taille : 50,5 Ko


    Dans le fichier excel source de données j'ai sélectionné la ligne 4 qui correspond à l'enregistrement 3 (lign -1 = 3) . En sortie je n'ai bien qu'un enregistrement qui est celui ci.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  8. #8
    Futur Membre du Club Avatar de Le Gnark
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Juin 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2015
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    CA MARCHE!!!
    Super!!
    J'avais effectivement testé ce code... mais les entêtes du tableau excel sont à la ligne 4... donc avec lign - 1 ca ne marchait pas!
    Avec un petit lign - 4 ... C'est IMPECCABLE !!

    Merci beaucoup JP !!

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2010
    Messages : 118
    Points : 76
    Points
    76
    Par défaut Publipostage avec en tête pas sur la première ligne
    Bonjour,

    Je me permet de répondre à cette discussion car je suis actuellement en plein dans cette problématique.
    J'ai bien tenté d'adapter mon code à votre procédure mais je pense que je n'arrive déjà pas à sélectionner mes en tête depuis Word dans ma source Excel.

    Comment avez-vous fait pour avoir des en tête qui ne se trouve pas sur la première ligne? Et comment votre document de publipostage Word est-il crée? Mes en tête sur ma feuille Excel se trouve à la ligne 10 ensuite je souhaite prendre comme données la ligne active pour pouvoir publiposter.

    Je souhaiterai effectuer du publipostage depuis Excel vers Word sur ma ligne active.

    Voici mon code VBA déjà, je pense qu'il est correct:

    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
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.AskToUpdateLinks = False
     
    lign = ActiveCell.Row
    debut = "A" & lign
    Fin = "W" & lign
    Range(debut, Fin).Select
     
    FileMailing = "C:\Users\Jordan\Desktop\Synthese_mandat_prison.docx"
    Dim AppWord As Word.Application
    Set AppWord = New Word.Application
    AppWord.Visible = False 'True
    Set docWord = AppWord.Documents.Open(FileMailing)
    NomBase = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
    With docWord.MailMerge
    .OpenDataSource Name:=NomBase, _
    Connection:="Driver={Microsoft Excel Driver (*.xlsm)};" & "DBQ=" & _
    NomBase & "; ReadOnly=True;", SQLStatement:="SELECT * FROM [Sortie_prison$]"
     
    .Destination = wdSendToNewDocument ' wdSendToPrinter pour imprimer
    .SuppressBlankLines = True
    With .DataSource
    .FirstRecord = lign - 10
    .LastRecord = lign - 10
    End With
    .Execute Pause:=False
    End With
    AppWord.ActiveDocument.SaveAs Filename:="C:\Users\Jordan\Desktop\Synthese_mandat_prison.pdf", FileFormat:=wdFormatPDF
    AppWord.Application.Quit (wdDoNotSaveChanges)
    Worksheets("Temp").Delete
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    En espérant avoir été clair, je vous souhaite une très bonne journée.

    JORDAN M.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2010
    Messages : 118
    Points : 76
    Points
    76
    Par défaut Résolution de mon problème
    Bonsoir,

    J'ai réglé mon problème en créant une ligne cachée qui contient mes en têtes de colonnes sur la première ligne. Le code de publipostage à l'aide de la ligne active fonctionne parfaitement.

    Excellente soirée à tous.

    Jordan M.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juin 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Juin 2018
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Bonjour a vous.
    Je suis aussi en train de créer un document publipostage word qui vas prendre ces informations dans un tableau XLS. Mais je rencontre aussi de grandes difficultés. Le publipostage fonction bien entre mon document word et Xls. Mais impossible de faire faire fonctionner la macro.

    Maintenant je recherche à faire comme "Le Gnark », automatiquement éditer un document word en fonction de la ligne sélectionnée dans xls. J’ai donc utilisé le code proposé par « Theboobasparks», mais je n’arrive pas à le faire fonctionné. J’ai pourtant bien changé les chemins d’accès aux fichiers.
    Je me permets de vous joindre les deux documents (word, excel). Pouvez vous me dire s’il fonctionnent chez vous ?

    Dans le document Xls vous pourrez trouvez plusieurs tests de macro.
    Bouton haut : test d’un autre code vba pour la même fonction
    Bouton bas : code vba de « Theboobasparks»
    Macro « export » : code vba de « Theboobasparks»

    Book2.xlsm
    ForumV2.docx

    Merci de votre aide et a bientôt
    Ben

  12. #12
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juin 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Juin 2018
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Bonjour

    J'ai essayé plusieurs manipulations mais la macro s'arrête toujours au niveau de la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim AppWord As Word.Application
    Est ce que vous savez pourquoi? J'ai l'impression qu'il ne reconnait pas mon application word.

    A bientôt sur le forum.
    Ben

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. macro excel pour supprimer des lignes comportant un caractere spécial
    Par fredo49 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/04/2011, 16h32
  2. Réponses: 2
    Dernier message: 06/01/2011, 16h35
  3. [Toutes versions] Problème avec macro Excel pour ouvrir Word
    Par lenul78570 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/03/2010, 16h25
  4. [XL-2007] Macro excel pour créer un publipostage sous publisher
    Par scons dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/03/2010, 08h42

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