Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
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 10/01/2012, 15h57   #1
Invité régulier
 
Inscription : février 2011
Messages : 50
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 50
Points : 7
Points : 7
Par défaut Erreur 424 après fermeture fichier word

Bonjour,

J'ai un fichier excel.
À partir de celui-ci j'ouvre des fichiers word avec ce code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub CommandButton2_Click()
Dim AppWord As Object
Dim Doc As Object
Dim fichier As String
 
Set AppWord = CreateObject("Word.Application")
 
AppWord.Visible = True
 
Mypath = ThisWorkbook.Path
 
fichier = Mypath & "\" & "01_Demande.dot"
Set Doc = AppWord.Documents.Add(fichier)
End Sub
Ces derniers se ferment à l'aide d'un bouton présent dans un USF.

Deux codes pour les fermer :

Code :
1
2
3
Private Sub CommandButton2_Click()
Application.Quit
End Sub
ou

Code :
1
2
3
4
Private Sub CommandButton2_Click()
unload me
activedocument.close
End Sub
Quand j'utilise le deuxième code et que je retourne sous excel j'ai le message d'erreur 424 "Objet requis".
D'où peut venir le problème ? (fichier word non protégé)
Je n'ai pas trouvé de soluce sur le net.

Je précise que j'aimerai que soit seulement fermer le document word actif et non pas l'application word.

Merci
AidezMoiSvp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 16h29   #2
Rédacteur/Modérateur
 
Avatar de fring
 
Homme Fred Thomas
Engineering
Inscription : février 2008
Messages : 3 489
Détails du profil
Informations personnelles :
Nom : Homme Fred Thomas
Âge : 48
Localisation : Belgique

Informations professionnelles :
Activité : Engineering

Informations forums :
Inscription : février 2008
Messages : 3 489
Points : 6 560
Points : 6 560
Bonjour,

Essaye comme ceci :

Déclaration de la variable Doc en tête de module (avant les procédures) afin de pouvoir appeler cette variable dans toutes les procédures du module UserForm
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim Doc As Object
 
Private Sub CommandButton2_Click()
Dim AppWord As Object
Dim fichier As String
 
Set AppWord = CreateObject("Word.Application")
 
AppWord.Visible = True
 
Mypath = ThisWorkbook.Path
 
fichier = Mypath & "\" & "01_Demande.dot"
Set Doc = AppWord.Documents.Add(fichier)
End Sub
Fermeture du document Word (avant la fermeture du UserForm)
Code :
1
2
3
4
Private Sub CommandButton3_Click()
Doc.close
Unload me
End Sub
__________________
LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)
fring est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 16h45   #3
Invité régulier
 
Inscription : février 2011
Messages : 50
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 50
Points : 7
Points : 7
Nouveau message d'erreur : "Incompatibilité de type"
AidezMoiSvp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 16h58   #4
Rédacteur/Modérateur
 
Avatar de fring
 
Homme Fred Thomas
Engineering
Inscription : février 2008
Messages : 3 489
Détails du profil
Informations personnelles :
Nom : Homme Fred Thomas
Âge : 48
Localisation : Belgique

Informations professionnelles :
Activité : Engineering

Informations forums :
Inscription : février 2008
Messages : 3 489
Points : 6 560
Points : 6 560
Sorry je n'avais pas gratté plus loin dans ton code

1. Active la référence "Microsoft Word xx Object Library" (Dans le menu Outils\Références du projet VBA)

2. Déclare ta variable Doc comme ceci :
3. Vérifie les noms de tes boutons, dans ton code initial tu as 2x le bouton2
__________________
LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)
fring est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2012, 17h06   #5
Invité régulier
 
Inscription : février 2011
Messages : 50
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 50
Points : 7
Points : 7
La réponse me semblait bizarre mais j'ai quand même essayé

Mon premier message n'est peut être pas assez clair.
Je reprends.

Je ferme mes fichiers word à l'aide de bouton présents dans le fichier word.

Fichier excel : bouton "Demande" ouvre le fichier word "01_Demande".

Fichier word "01_Demande" : bouton "Fermer" ferme le fichier word. J'utilise ce code :
Code :
1
2
3
4
Private Sub CommandButton2_Click()
unload me
activedocument.close
End Sub
Le fichier word s'ouvre sans problème (aucun message d'erreur). C'est quand je ferme le fichier word qu'excel m'affiche le message d'erreur.

MErci
AidezMoiSvp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 09h58   #6
Rédacteur/Modérateur
 
Avatar de fring
 
Homme Fred Thomas
Engineering
Inscription : février 2008
Messages : 3 489
Détails du profil
Informations personnelles :
Nom : Homme Fred Thomas
Âge : 48
Localisation : Belgique

Informations professionnelles :
Activité : Engineering

Informations forums :
Inscription : février 2008
Messages : 3 489
Points : 6 560
Points : 6 560
Citation:
Envoyé par AidezMoiSvp Voir le message
Mon premier message n'est peut être pas assez clair.
Je reprends.

Je ferme mes fichiers word à l'aide de bouton présents dans le fichier word.
On ne pouvait pas le deviner...
Dans ce cas tes deux lignes de code pour fermer le document Word sont corrects. Juste un petit détail mais qui ne changera rien au fonctionnement du code, évite d'utiliser les "ActiveMachin", un jour où l'autre ça coincera. Au lieu d'utiliser ActiveDocument, utilise plutôt ThisDocument.

A mon avis tu ne nous dis pas encore tout ou ne montre pas l'entièreté des codes...parce qu'à priori je ne vois pas ci qui pourrait créer cette erreur.
L'erreur se produit sur quelle ligne de code ?
__________________
LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)
fring est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/01/2012, 10h24   #7
Invité régulier
 
Inscription : février 2011
Messages : 50
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 50
Points : 7
Points : 7
Bonjour,

Citation:
Envoyé par fring Voir le message
On ne pouvait pas le deviner...
Je ne disais pas ça méchamment

Citation:
A mon avis tu ne nous dis pas encore tout ou ne montre pas l'entièreté des codes...parce qu'à priori je ne vois pas ci qui pourrait créer cette erreur.
L'erreur se produit sur quelle ligne de code ?
L'erreur se produit au niveau du "set Doc" :
Code :
1
2
3
4
 
...
Set Doc = AppWord.Documents.Add(fichier)
End Sub

Citation:
A mon avis tu ne nous dis pas encore tout ou ne montre pas l'entièreté des codes...
Ce code fait partis d'un ensemble.
Cependant j'ai essayé avec fichier excel comprenant seulement le code d'ouverture (voir plus haut) et un fichier word (modèle) avec un USF et un bouton "quitter" comprenant le code plus haut.
J'ai le même message d'erreur quand je veux juste fermer le document et pas de message quand je quitte complétement l'application.
AidezMoiSvp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 10h53   #8
Rédacteur/Modérateur
 
Avatar de fring
 
Homme Fred Thomas
Engineering
Inscription : février 2008
Messages : 3 489
Détails du profil
Informations personnelles :
Nom : Homme Fred Thomas
Âge : 48
Localisation : Belgique

Informations professionnelles :
Activité : Engineering

Informations forums :
Inscription : février 2008
Messages : 3 489
Points : 6 560
Points : 6 560
J'ai créé le fichier Excel et le document Word au format *.dot avec USF et je n'arrive pas à reproduire l'erreur.

Pourquoi ne veux-tu pas fermer l'application Word ? Si tu relances 10x ton code d'ouverture via Excel, tu vas avoir 10 instances Word ouvertes vu que à chaque fois tu passes par la ligne de code "Set AppWord = CreateObject("Word.Application")"
__________________
LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)
fring est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 11h04   #9
Invité régulier
 
Inscription : février 2011
Messages : 50
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 50
Points : 7
Points : 7
Bon... Bizarre.

Je voulais juste quitter le document actif et non pas l'application parce que si l'utilisateur a d'autres fichiers word d'ouverts et qu'il clique sur le bouton "quitter" du document word actif word va vouloir fermer tous les documents word.
AidezMoiSvp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 11h20   #10
Rédacteur/Modérateur
 
Avatar de fring
 
Homme Fred Thomas
Engineering
Inscription : février 2008
Messages : 3 489
Détails du profil
Informations personnelles :
Nom : Homme Fred Thomas
Âge : 48
Localisation : Belgique

Informations professionnelles :
Activité : Engineering

Informations forums :
Inscription : février 2008
Messages : 3 489
Points : 6 560
Points : 6 560
Citation:
Envoyé par AidezMoiSvp Voir le message
si l'utilisateur a d'autres fichiers word d'ouverts et qu'il clique sur le bouton "quitter" du document word actif word va vouloir fermer tous les documents word.
Non vu que tu ouvres le *.dot dans une nouvelle instance Word, uniquement celle-ci sera fermée.
__________________
LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)
fring est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 14h52   #11
Invité régulier
 
Inscription : février 2011
Messages : 50
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 50
Points : 7
Points : 7
Bah non justement. Avec chez moi il me ferme tout...
Je comprends pas....
AidezMoiSvp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 14h57   #12
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
C'est qu'il faut faire. (enfin, j'ai lu le fil en diagonale, je peux me tromper)
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 16h42   #13
Invité régulier
 
Inscription : février 2011
Messages : 50
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 50
Points : 7
Points : 7
bon. J'avance un peu.
Quand j'ai plusieurs documents word d'ouverts et que je veux quitter j'ai un message me demandant si je veux modifier le modèle...
Bizarre vu que je ne fais aucune référence à "Normal"... Cependant Outlook 2010 est ouvert. J'ai croisé quelques topics traitant du sujet mais pas de solution sur ces topics...
Je précise que je travaille sur réseau.

J'avance encore un peu plus.
Mon fichier word s'ouvre sur un USF en désactivant ce USF je n'ai plus le message me demandant si je veux modifier "Normal".
Par contre, toujours le problème de l'erreur 424...

Je pense avoir trouvé.
J'ai remplacé

par

Code :
Dim AppWord As word.application

Je vous tiens au courant
AidezMoiSvp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 13h43   #14
Invité régulier
 
Inscription : février 2011
Messages : 50
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 50
Points : 7
Points : 7
Bonjour,

Je confirme que je n'ai plus l'erreur 424.
Par contre j'ai toujours le message me demandant si je veux modifier "Normal"... (ce message ne s'affiche que quand j'ai d'autres documents word ouverts et que quand j'ouvre le document modèle depuis la macro excel).

Merci


_____________________________________

Je pense avoir enfin trouvé la solution.
J'ai changé le code pour ouvrir le modèle word

Code :
1
2
3
4
5
6
7
8
9
10
11
 
Dim oWord As Word.Application
Dim oDoc As Word.Document
Dim fichier As String
 
Mypath = ThisWorkbook.Path
fichier = Mypath & "\" & "01_Demande.dot"
 
Set oWord = New Word.Application
 
Set oDoc = oWord.Documents.Add(fichier)
Merci pour votre aide
AidezMoiSvp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h36.


 
 
 
 
Partenaires

Hébergement Web