XL 2010 Macro permettant de sélectionner une feuille d'un autre tableau.

Loic2

XLDnaute Nouveau
Bonjour à tous,
Je tente depuis plusieurs jours, sans succès, d’améliorer une macro de publipostage.
Celle-ci me sert à sélectionner les informations d’une seule ligne de mon tableau numéro 1, de les copier, de les coller dans le tableau numéro 2, qui me permet ensuite de publiposter dans différents modèles de courrier.
Bien qu’un peu alambiqué, tout cela fonctionne très bien.
Mon problème est le suivant :

Je lance ma macro à partir du tableau numéro 1. Lorsque le modèle Word s’ouvre automatiquement, je dois à chaque fois sélectionner manuellement la feuille du tableau numéro 2 (qui ne contient qu’une feuille), en cliquant sur OK dans l’encadré « sélection du tableau » qui apparaît. Je souhaiterais que le fichier Word publiposté s'ouvre directement à l'exécution de la macro.
Est-il possible d’intégrer une ligne de code permettant d’automatiser cette action ? Si oui, à quel endroit dois-je l’intégrer ?
Voici le code :

Code:
  Sub test()
 

  Rows(ActiveCell.Row).Select
  With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent4
        .TintAndShade = 0.599993896298105
        .PatternTintAndShade = 0
    End With
    Application.CutCopyMode = False
    Selection.Copy
    Workbooks.Open Filename:= _
        "tableau n°2.xlsm"
    Windows("tableau n°1.xlsm").Activate
    Windows("tableau n°2.xlsm").Activate
        
    Application.ScreenUpdating = False
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Dim WordApp As Object
Dim WordDoc As Object
 
    Set WordApp = CreateObject("word.application")
    WordApp.Visible = True
      
    
    Set WordDoc = WordApp.Documents.Open("mon modèle word.docm")
    
    WordDoc.MailMerge.OpenDataSource Name:="tableau n°2.xlsm"
        
        Workbooks("tableau n°2.xlsm").Close Savechanges:=False
    
    
    WordDoc.MailMerge.Execute
    WordDoc.Close Savechanges:=False
    
    WordApp.ChangeFileOpenDirectory "publipostage réalisé"
    
    
 
End Sub
J'ai tenté avec "feuil1.select" et avec "Application.DisplayAlerts = False" mais cela ne fonctionne pas. Peut-être les ai-je intégrés au mauvais endroit.

En espérant que quelqu'un puisse m'aider,

Merci de votre attention.

Loïc
 

Loic2

XLDnaute Nouveau
Bonjour Daniel,

L’encadré « sélection du tableau » apparaît lorsque que je clique sur l'icone Word de la barre des tâches qui s'ouvre. Je pense que cet encadré empêche l'ouverture automatique du fichier word.

Je pense dès lors que cela doit correspondre à l'endroit en gras ci-dessous:
Code:
Sub test()
 

  Rows(ActiveCell.Row).Select
  With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent4
        .TintAndShade = 0.599993896298105
        .PatternTintAndShade = 0
    End With
    Application.CutCopyMode = False
    Selection.Copy
    Workbooks.Open Filename:= _
        "tableau n°2.xlsm"
    Windows("tableau n°1.xlsm").Activate
    Windows("tableau n°2.xlsm").Activate
        
    Application.ScreenUpdating = False
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Dim WordApp As Object
Dim WordDoc As Object
 
    Set WordApp = CreateObject("word.application")
    WordApp.Visible = True
      
    
    Set WordDoc = WordApp.Documents.Open("mon modèle word.docm")
    
    WordDoc.MailMerge.OpenDataSource Name:="tableau n°2.xlsm"
        
        Workbooks("tableau n°2.xlsm").Close Savechanges:=False
    
    
    WordDoc.MailMerge.Execute
    WordDoc.Close Savechanges:=False
    
    WordApp.ChangeFileOpenDirectory "publipostage réalisé"
        
 
End Sub

Encore merci,

Loïc
 

Loic2

XLDnaute Nouveau
Le gras ne semble pas apparaître.

Je graissais cet endroit-ci du code :

Code:
Set WordApp = CreateObject("word.application")
    WordApp.Visible = True
      
    
    Set WordDoc = WordApp.Documents.Open("mon modèle word.docm")
    
    WordDoc.MailMerge.OpenDataSource Name:="tableau n°2.xlsm"
        
        Workbooks("tableau n°2.xlsm").Close Savechanges:=False
    
    
    WordDoc.MailMerge.Execute
 

danielco

XLDnaute Impliqué
D'après l'aide VBA :

VB:
With docNew.MailMerge
 .MainDocumentType = wdCatalog
 .OpenDataSource Name:="C:\Documents\Names.xls", _
 ReadOnly:=True, _
 Connection:="Sales"
End With
Remplace le nom du classeur par le tien. "Sales" est le nom du tableau contenant les données.

Daniel
 

Loic2

XLDnaute Nouveau
Merci Daniel,

Mais où exactement dois-je insérer ces lignes de codes?

Est-ce bien juste après :

VB:
Set WordDoc = WordApp.Documents.Open("mon modèle word.docm")
Merci
 

Loic2

XLDnaute Nouveau
Je précise que l'encadré apparaît juste avant l'exécution du publipostage et la fermeture du classeur n°2
 

danielco

XLDnaute Impliqué
Ca doit remplacer :

VB:
WordDoc.MailMerge.OpenDataSource Name:="tableau n°2.xlsm"
Par contre, je ne sais pas pour la ligne :

Code:
.MainDocumentType = wdCatalog
Dans le doute, ne la mets pas.
 

Loic2

XLDnaute Nouveau
Merci beaucoup Daniel, mais cela ne fonctionne malheureusement pas.

J'obtiens un message d'erreur : Erreur d'exécution '424' : Objet requis (au niveau du "With docNew.MailMerge" qui apparaît en jaune).
 

Loic2

XLDnaute Nouveau
Encore merci Daniel, cela refonctionne, mais l'encadré de choix du tableau apparaît toujours (et au même moment).

Voici l'encadré en question :
encadré choix du tableau.PNG
 

danielco

XLDnaute Impliqué
Qu'est-ce que tu as mis à la place de "Sales" dans la ligne :

VB:
Connection:="Sales"
Daniel
 

Loic2

XLDnaute Nouveau
j'ai tapé le nom de l'unique table du classeur :
VB:
Connection:="Loic"
et ai également tenté :
Code:
Connection:="Loic$"
 

danielco

XLDnaute Impliqué
Alors, je ne sais pas. Il faudrait connaître l'environnement... Est-ce que tu poster le classeur Excel et le document Word ?

Daniel
 

Loic2

XLDnaute Nouveau
D'ores et déjà un grand merci pour tes recherches Daniel.
Je suis contraint d'anonymiser mes classeurs et documents.
Je les poste dès que j'en ai l'occasion
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas