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 :

Contrôler Word à partir d'Excel [XL-2000]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Chargé d'Etudes Statistiques
    Inscrit en
    Novembre 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'Etudes Statistiques
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2010
    Messages : 79
    Par défaut Contrôler Word à partir d'Excel
    Bonjour j'apprend actuellement le VBA à mon travail, j'utilise un livre "Excel 2000 et VBA Développeur". Il y a un exemple dans ce livre qui me produit une erreur que je ne comprend pas (erreur automation echec de l'appel de procédure distante). Le but est de remplir automatiquement des lettres avec les données des trois premières colonnes de la feuille de calcul, chaque ligne correspond aux données de chaque lettre (par exemple nom adresse salaire) Avec le livre est fourni un cd-rom dans lequel cet exemple apparaît, l'erreur y est aussi.
    D'ou cela peut-il venir ? Si quelqu'un peut m'aider j'en serais très reconnaissant.
    Voici le code :

    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
    76
    77
    78
    Sub MakeMemos()
    'crée des mémos dans word en utilisant l'automation
        Dim WordApp As Word.Application
     
    'démarre word et crée un objet
        Set WordApp = New Word.Application
     
     
    'information de la feuille de travail
        Set Data = Sheets("Feuil4").Range("A1")
        Message = Sheets("Feuil4").Range("E5")
     
    'boucle sur les lignes de données
        Records = Application.CountA(Sheets("Feuil4").Range("A:A"))
        For i = 1 To Records
     
    'mise barre de progression
            Application.StatusBar = "Processing record" & i
     
    'assigne la valeur courante aux variables
            Region = Data.Offset(i - 1, 0).Value
            SalesAmt = Format(Data.Offset(i - 1, 2).Value, "#,000")
            SalesNum = Data.Offset(i - 1, 1).Value
     
    'détermine le nom du fichier
            SaveAsName = ThisWorkbook.Path & "\" & Region & ".doc"
     
    'envoie des commandes à word
    'On Error Resume Next
     
     
           With WordApp
           .Documents.Add  ' l'erreur à lieu ici à la deuxième itération de la boucle !
     
                With .Selection
                    .Font.Size = 14
                    .Font.Bold = True
                    .ParagraphFormat.Alignment = 1
                    .TypeText Text:="M E M O R A N D U M"
                    .TypeParagraph
                    .TypeParagraph
                    .Font.Size = 12
                    .ParagraphFormat.Alignment = 0
                    .Font.Bold = False
                    .TypeText Text:="Date:" & vbTab & _
                    Format(Date, "mmmm d, yyyy")
                    .TypeParagraph
                    .TypeText Text:="To:" & vbTab & Region & _
                    "Manager"
                    .TypeParagraph
                    .TypeText Text:="From:" & vbTab & _
                    Application.UserName
                    .TypeParagraph
                    .TypeParagraph
                    .TypeText Message
                    .TypeParagraph
                    .TypeParagraph
                    .TypeText Text:="Units Sold:" & vbTab & _
                    SalesNum
                    .TypeParagraph
                    .TypeText Text:="Amount:" & vbTab & _
                    Format(SalesAmt, "$#,##0")
                End With
            .ActiveDocument.SaveAs Filename:=SaveAsName
                .ActiveWindow.Close
                End With
     
        Next i
     
        'tue l'objet
        WordApp.Quit
        Set WordApp = Nothing
     
        'reset
        Application.StatusBar = ""
        MsgBox Records & " memos ont été créés et sauvegardés dans " & _
        ThisWorkbook.Path
    End Sub

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut
    dans vbe dans outils/référence coche la case "Microsoft Word"

    soit dit en passant ton problème ressemble à du publipostage avec Word

  3. #3
    Membre éclairé
    Homme Profil pro
    Chargé d'Etudes Statistiques
    Inscrit en
    Novembre 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'Etudes Statistiques
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2010
    Messages : 79
    Par défaut
    Bonjour et merci de ta réponse.
    J'avais déjà coché la case Microsoft Word 11.0 Object Library...
    Je vais me renseigner pour le publipostage mais mon but est de faire quelque chose de complètement automatisé, un outil où un simple clic est nécessaire. L'avantage de ce code est qu'il prend toutes les données et remplit plusieurs documents Word d'un coup.
    Si tu peux m'en dire plus...
    Merci d'avance.

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut
    ton erreur est bizarre
    ajoute cette ligne
    après la ligne
    et dis moi si à la fin de ta première boucle Word est toujours visible, ou alors plus simplement regarde si le processuswinword est toujours présent dans le gestionnaire des tâches après la première itération

  5. #5
    Membre éclairé
    Homme Profil pro
    Chargé d'Etudes Statistiques
    Inscrit en
    Novembre 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'Etudes Statistiques
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2010
    Messages : 79
    Par défaut
    attends, j'hallucine là...
    J'ai juste rajouté cette ligne et ... ça marche.
    Je ne comprend pas, en quoi le fait que l'application Word soit invisible joue sur le fait que la boucle s'arrête à la première itération ?
    Dans tous les cas merci mais ça m'intrigue quand même.
    J'ai donc deux choix maintenant car je viens de me renseigner, et il est vrai que le publipostage a l'air d'être une méthode satisfaisante pour mon problème.
    Merci !
    PS: petit hic cependant, j'ai une flopée de processus winword.exe dans mon gestionnaire de tâches...mais mes fichiers .doc se sauvegardent tous dans mon dossier courant donc ça fonctionne mais il y a des imperfections. Pourtant c'est un code venant d'un livre que l'on trouve dans le commerce !!!

  6. #6
    Membre éclairé
    Homme Profil pro
    Chargé d'Etudes Statistiques
    Inscrit en
    Novembre 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'Etudes Statistiques
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2010
    Messages : 79
    Par défaut
    ah non autant pour moi je viens de retester en ayant pris soin de "vider" le gestionnaire de tâches et tout va bien, ça devait être dû à mes précédents tests.
    Mais aurais-tu l'explication concernant cette simple ligne:
    AppWord.Visible=True ???

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

Discussions similaires

  1. Publipostage Word à partir d'Excel
    Par Kara dans le forum Delphi
    Réponses: 30
    Dernier message: 17/08/2007, 17h39
  2. problème génération fichier Word à partir d'excel
    Par zoum13 dans le forum VBA Word
    Réponses: 3
    Dernier message: 02/02/2007, 13h03
  3. fenetre enregistrer sous document word à partir d'excel
    Par Australia dans le forum VBA Word
    Réponses: 8
    Dernier message: 24/10/2006, 17h53
  4. [VBA-E] ouverture de fichier word à partir d'Excel
    Par aramge dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/08/2006, 09h18
  5. [VBA-E]Insérer des autotext dans Word à partir d'excel
    Par noordman dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/04/2006, 15h34

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