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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 100
    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 Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    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")
    @+

+ 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