Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/11/2007, 22h20   #1
Membre du Club
 
Inscription : mars 2007
Messages : 112
Détails du profil
Informations personnelles :
Âge : 37

Informations forums :
Inscription : mars 2007
Messages : 112
Points : 60
Points : 60
Par défaut Problème Word/Excel :(

Bonsoir

Je rencontre un problème entre excel et word.

Dans le fichier Excel, j'ouvre un premier fichier Word
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
Dim wrdApp As Word.Application
 
If TypeName(wrdApp) <> "Application" Then
  Set wrdApp = CreateObject("Word.Application")
End If
 
wrdApp.Visible = True 
wrdApp.WindowState = wdWindowStateMaximize        wrdApp.Documents.Open ("C:\word\fic\Auto")  
wrdApp.Documents.Close  
 
  LanceMacroWORD = True
Lorsque le premier fichier Word est ouvert celui à une procédure qui ouvre après d'autres fichiers word en cascade.

Code :
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

Sub macro_fusion()
pasdos = 0

    On Error GoTo Message_erreur
    SendKeys "{O}"
    Documents.Open FileName:="C:Valeur.doc", ConfirmConversions:=False, _
        ReadOnly:=True, AddToRecentFiles:=False, PasswordDocument:="", _
        PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
        WritePasswordTemplate:="", Format:=wdOpenFormatAuto
    On Error GoTo 0

    On Error GoTo Message_erreur_4
    With ActiveDocument.MailMerge
         .Destination = wdSendToNewDocument
         .MailAsAttachment = False
         .MailAddressFieldName = ""
         .MailSubject = ""
         .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = wdDefaultFirstRecord
            .LastRecord = wdDefaultLastRecord
        End With
        .Execute Pause:=True
    End With

    On Error GoTo 0
  ........
Si je lance le premier fichier word en cliquant sur "Activé Macro", je ne rencontre aucun problème.

Par contre, lorsque je pars de mon fichier Excel, je plante sur le ligne en rouge et les autres qui suivent.

J'ai supposé que c'etait à cause du message voulez-vous effectué le "select * from test.txt", donc j'ai ajouter SendKeys "{O}", juste avant l'ouverture du second fichier.

Hors j'ai toujours le problème, et j'ai le message suivant : " Erreur de lancement de la macro : 4605 : cette méthode ou propriété n'est pas disponible car une fenêtre du document n'est pas activé"

J'utilise office XP.

Si quelqu'un à une idée merci par avance.
nefertari est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2007, 12h26   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Laisse le temps à ton fichier de s'ouvrir en ajoutant DoEvents ici
Code :
1
2
    Documents.Open FileName:="C:Valeur.doc", ReadOnly:=True
    DoEvents
Autre problème dans Excel : Ta procédure se poursuit et tu fermes ton fichier aussitôt après l'avoir ouvert
Citation:
wrdApp.Documents.Open ("C:\AutoDDI\SPC\Auto_DDI 320-321")
wrdApp.Documents.Close
Comme tu ouvres plusieurs documents dans Word, tu ne peux fermer chaque document que depuis Word. Remplace wrdApp.Documents.Close par un msgbox dans Excel
Code :
1
2
3
    Msgbox "Fusion terminée"
    Set wrdApp = Nothing
End sub
Ensuite, ferme tes documents depuis Word et ajoute un DoEvents après cette ligne dans ta macro Word
Code :
1
2
3
4
        .Execute Pause:=True
    End With
DoEvents
Activedocument.close false
Enfin, quand tous tes documents sont fusionnées, quitte Word depuis Word.
Code :
1
2
DoEvents
Application.quit
Tu retrouveras ton msgbox Excel à l'écran, un clic sur Ok et la macro pourra se poursuivre, et l'instance de l'appli Word sera supprimée.
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2007, 22h34   #3
Membre du Club
 
Inscription : mars 2007
Messages : 112
Détails du profil
Informations personnelles :
Âge : 37

Informations forums :
Inscription : mars 2007
Messages : 112
Points : 60
Points : 60
Par défaut problème word/excel

Déjà merci de ton aide.

Cependant le problème reste le même, je n'arrive pas à sortir mon document entièrement. Mais maintenant, il s'arrête sur une autre ligne (en rouge).

Code :
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
Sub macro_fusion()

    On Error GoTo Message_erreur
    SendKeys "{O}"
    Documents.Open FileName:="C:\valeur.doc", ConfirmConversions:=False, _
        ReadOnly:=True, AddToRecentFiles:=False, PasswordDocument:="", _
        PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
        WritePasswordTemplate:="", Format:=wdOpenFormatAuto
    DoEvents
    On Error GoTo 0
 
******** Première Fusion de document ********
    On Error Resume Next
    With ActiveDocument.MailMerge
         .Destination = wdSendToNewDocument
         .MailAsAttachment = False
         .MailAddressFieldName = ""
         .MailSubject = ""
         .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = wdDefaultFirstRecord
            .LastRecord = wdDefaultLastRecord
        End With
        .Execute Pause:=True
    End With
    DoEvents
    On Error GoTo 0
    Selection.WholeStory
    
******** Suppression du saut de section ********
    Selection.GoTo What:=wdGoToSection, Which:=wdGoToNext, Count:=1, Name:=""
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = ""
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
 
******** boucle while pour la seconde fusion ********
   On Error GoTo Message_erreur_5
                     Open "C:\list.txt" For Input As 1
    On Error GoTo 0
    
    i = 0
    
    While Not EOF(1)
    ' On lit et mémorise dans nomdoc$ la ligne contenant le nom du fichier associé à ouvrir.
    Input #1, nomdoc$
    If nomdoc$ = "pasdossi" Then
        pasdos = 1
    Else
   
     nomdoc$ = "C:\" + nomdoc$ + ".DOC"
    
    On Error GoTo Message_erreur_2
    SendKeys "{O}"
    Documents.Open FileName:=nomdoc$, ConfirmConversions:=False, _
        ReadOnly:=True, AddToRecentFiles:=False, PasswordDocument:="", _
        PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
        WritePasswordTemplate:="", Format:=wdOpenFormatAuto
    DoEvents
    On Error GoTo 0
    Selection.WholeStory
    nombre_section = Selection.Information(wdActiveEndSectionNumber) + 1
    
    On Error Resume Next
    With ActiveDocument.MailMerge
        .Destination = wdSendToNewDocument
        .MailAsAttachment = False
        .MailAddressFieldName = ""
        .MailSubject = ""
        .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = wdDefaultFirstRecord
            .LastRecord = wdDefaultLastRecord
        End With
        .Execute Pause:=True
    End With
    DoEvents
    
    On Error GoTo 0
    Selection.WholeStory

    Selection.GoTo What:=wdGoToSection, Which:=wdGoToNext, Count:=1, Name:=""
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = ""
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdExtend
    Selection.Delete Unit:=wdCharacter, Count:=1
    
    Selection.WholeStory

    Selection.Cut
    
    ActiveDocument.Close False
    ActiveDocument.Close False 

    Selection.Paste
    End If
    Wend

    Close #1

    Doevents
    Application.ScreenUpdating = True
    Application.Quit
si quelq'un à une idée, merci par avance.
nefertari est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2007, 22h56   #4
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
C'est une erreur ou tu cherches à fermer deux documents ?
Ceci dit, quand tu mets
Citation:
Selection.Cut
le pb est le même que pour fermer ton document, tu dois laisser le temps au système de placer le texte sélectionné en mémoire. Ajoute DoEvents sur la ligne suivante.
Idem après paste et chaque "close", avant de quitter word.
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2007, 06h50   #5
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Si c'est pour fermer tous les documents ouverts
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2007, 20h59   #6
Membre du Club
 
Inscription : mars 2007
Messages : 112
Détails du profil
Informations personnelles :
Âge : 37

Informations forums :
Inscription : mars 2007
Messages : 112
Points : 60
Points : 60
Par défaut problème word/excel

merci de votre aide.

mais je vais trouver une autre solution.
nefertari est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h52.


 
 
 
 
Partenaires

Hébergement Web