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 :

Problème avec macro Excel pour ouvrir Word [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 100
    Points : 58
    Points
    58
    Par défaut Problème avec macro Excel pour ouvrir Word
    Bonjour le forum,

    Le code ci-dessous commence par manipuler des valeurs d'une feuille vers une autre, puis il doit ouvrir le documents Word "lettre mailing.doc" et y placer des valeurs qui se trouvent sur la feuille "Add" plage A2:A9.
    Je suis sur que mon code est horrible....Mais il fonctionne bien pour toute la partie manipulation entre feuilles excel.
    Là ou ça coince c'est avec: Dim wdApp As New Word.Application
    Le message d'erreur est : "Erreur de compilation Type défini par un utilisateur non défini" .....
    J'ai verifié le chemin d'accès..... il est bon
    Je tourne en rond
    Si quelqu'un à la solution....Merci d'avance
    Lenul
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    Sub add()
    '
    ' Copie les valeurs de la feuille Mailing vers la feuille Add
    ' pour placer les données avant impression courrier personalisé
    '
        Dim dte
        dte = Format(InputBox("Saisissez la date de votre envoi sous la forme:" & vbCrLf & " " & vbCrLf & " JJ mois Année, exemple: 10 janvier 2011"), "mm/dd/yyyy")
        Range("b2").Value = dte
     
        Sheets("Mailing").Select 'copie date de départ sur feuille Add
        Range("b2").Select
        Selection.Copy
        Sheets("Add").Select
        Range("b2").Select
        ActiveSheet.Paste
        Sheets("Mailing").Select 'copie raison sociale sur feuille Add
        Range("D2").Select
        Selection.Copy
        Sheets("Add").Select
        Range("A4").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Sheets("Mailing").Select 'copie  adresse sur feuille Add
        Range("f2").Select
        Selection.Copy
        Sheets("Add").Select
        Range("A6").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Sheets("Mailing").Select 'copie code postal+ville sur feuille Add
        Range("g2:h2").Select
        Selection.Copy
        Sheets("Add").Select
        Range("A7").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Sheets("Mailing").Select 'copie titre+nom+prénom sur feuille Add
        Range("k2:m2").Select
        Selection.Copy
        Sheets("Add").Select
        Range("a9").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Sheets("Mailing").Select 'copie la ligne sur feuille "Expédiés"
        Rows("2:2").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Expédiés").Select
        Cells(65535, 1).End(xlUp)(2).Select
        ActiveSheet.Paste
        Sheets("Mailing").Select
        Application.CutCopyMode = False
     
        Sheets("Add").Select
     
        Dim wdApp As New Word.Application
        Dim wddoc As Word.document
        wdApp.Visible = True
        Set wddoc = wdApp.documents.Open(Filename:="T:Tableau devis SF\lettre mailing.doc")
        ActiveSheet.Range("a2:c9").Copy
        wdApp.Selection.pasteandformat wdformatplaintext
     
        wddoc.PrintOut ' impression de lettre mailing
     
        wddoc.Close True
        wdApp.Quit
     
        Range ("b2,a3:c9") 'sélectionne cette plage sur feuille Add
        Selection.ClearContents 'efface la sélection
        Sheets("Mailing").Select
        ActiveWorkbook.Save 'sauvegarde feuille Mailing
     
        Set wddoc = Nothing
        Set wdApp = Nothing
    End Sub

  2. #2
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Slt,
    après avoir déclarer tes variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim wdApp As New Word.Application
        Dim wddoc As Word.document
    il faut Créer une instance de l'objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set wdApp = CreateObject ("Word.Application")
    et ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    wdApp.Visible = True
        Set wddoc = wdApp.documents.Open(Filename:="T:Tableau devis SF\lettre mailing.doc")
    'Etc.....
    @+

    PS: Vérifie ton chemin car apres la lettre du lecteur T: il manque le \

    Juste une remarque, dans ton code évite les select qui ralentissent le code par exemple tu met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sheets("Mailing").Select 'copie date de départ sur feuille Add
        Range("b2").Select
        Selection.Copy
        Sheets("Add").Select
        Range("b2").Select
        ActiveSheet.Paste
    essaye directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Mailing").Range("b2").Copy  Sheets("Add").Range("b2")
    @+

  3. #3
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Vu le type d'erreur, tu as peut-être oublié de sélectionner la bibliothèque WORD. Sous editeur VB, Outils/Références.

    Cordialement,

    PGZ

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 100
    Points : 58
    Points
    58
    Par défaut
    Bonjour rvtoulon et pgz
    Voila mon new code (avant allègement)...Mais il ne fonctionne toujours pas et me renvoi le même message d'erreur....
    j'ai bien trouvé Outils/références dans VB, mais toute la liste qui y figure est en anglais et je ne trouve pas "bibliothèque WORD", mais est-ce ce qui suis:Microsoft Word 12.0 object Library ?
    Si je peux abuser....
    Lenul
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    Sub add()
    '
    ' Copie les valeurs de la feuille Mailing vers la feuille Add
    ' pour placer les données avant impression courrier personalisé
    ' bouton de comande sur feuille Extrait
     
        Sheets("Mailing").Select 'copie date de départ sur feuille Add
        Range("b2").Select
        Selection.Copy
        Sheets("Add").Select
        Range("b2").Select
        ActiveSheet.Paste
        Sheets("Mailing").Select 'copie raison sociale sur feuille Add
        Range("c2").Select
        Selection.Copy
        Sheets("Add").Select
        Range("A4").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Sheets("Mailing").Select 'copie  adresse sur feuille Add
        Range("d2").Select
        Selection.Copy
        Sheets("Add").Select
        Range("A6").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Sheets("Mailing").Select 'copie code postal+ville sur feuille Add
        Range("e2:f2").Select
        Selection.Copy
        Sheets("Add").Select
        Range("A7").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Sheets("Mailing").Select 'copie titre+nom+prénom sur feuille Add
        Range("i2:k2").Select
        Selection.Copy
        Sheets("Add").Select
        Range("a9").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Sheets("Mailing").Select 'copie la ligne sur feuille "Expédiés"
        Rows("a2:k2").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Expédiés").Select
        Cells(65535, 1).End(xlUp)(2).Select
        ActiveSheet.Paste
        Sheets("Mailing").Select
        Application.CutCopyMode = False
        Range("a1").Select
        Sheets("Add").Select
     
        Dim wdApp As New Word.Application
        Dim wddoc As Word.document
        Set wdApp = CreateObject("Word.Application")
        wdApp.Visible = True
        Set wddoc = wdApp.documents.Open(Filename:="T:\Tableau devis SF\lettre mailing.doc")
        ActiveSheet.Range("a2:c9").Copy
        wdApp.Selection.pasteandformat wdformatplaintext
     
        wddoc.PrintOut ' impression de lettre mailing
     
        wddoc.Close True
        wdApp.Quit
     
     
        Set wddoc = Nothing
        Set wdApp = Nothing
    End Sub

  5. #5
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bjr,
    mais est-ce ce qui suis:Microsoft Word 12.0 object Library ?
    oui
    @+

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 100
    Points : 58
    Points
    58
    Par défaut
    Re,
    Un grand merci à vous deux ça marche, je n'ai plus qu'à faire le ménage !
    Bonne soirée
    Lenul

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

Discussions similaires

  1. [XL-2010] Problème avec une macro Excel pour fermer un classeur
    Par benadry dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/10/2013, 15h48
  2. Problème avec macro Excel pour ouvrir Word
    Par jérémyp8 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 28/02/2013, 14h35
  3. Réponses: 2
    Dernier message: 06/01/2011, 16h35
  4. Réponses: 5
    Dernier message: 05/12/2008, 15h23
  5. Erreur automation sous excel pour ouvrir Word
    Par Philippe53 dans le forum VBA Word
    Réponses: 6
    Dernier message: 21/06/2008, 22h52

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