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 23/08/2011, 14h12   #1
Membre du Club
 
Avatar de m@tix
 
Inscription : octobre 2006
Messages : 290
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 290
Points : 42
Points : 42
Par défaut Différencier la façon d'ouvrir un classeur

Bonjour,

Comme l'intitulé du topic l'indique, Excel permet-il de distinguer la façon dont est ouvert un classeur, à savoir par macro présente sur un autre classeur ou directement ? Plus clairement, je souhaiterais lancer une macro uniquement lorsque le fichier en question est ouvert directement par l'utilisateur, et non lorsque celui-ci est ouvert par nécessité lors de l'exécution d'une macro d'un autre fichier.

Merci d'avance.
m@tix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 17h06   #2
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Peu-être que d'inhiber les événements durant l'ouverture te conviendrais :

Code :
1
2
3
Application.EnableEvents = False
Set wk = Workbooks.Open("Classeur1.xls")
Application.EnableEvents = True
bbil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/08/2011, 17h47   #3
Membre confirmé
 
Inscription : juillet 2007
Messages : 209
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 209
Points : 219
Points : 219
Une solution consisterais à alimenter un tableau ( ou 2 tableaux) avec la liste des fichiers ouverts par l'utilisateur et par les macros.

Puisque la collection workbooks correspond à l'ensemble des fichiers ouverts , tu peux utiliser un tableau pour stocker les fichiers ouverts par les macros.
J'utilise Excel avec plusieurs fichiers ouverts mais jamais je n'ai eu à faire de distinction entre le type d'ouverture.
Lorsqu'une macro à besoin d'ouvrir des fichiers, elle les ouvre mais en fin de traitement je les ferme .
Lorsque ma macro ouvre un fichier pour rechercher des donnes , on sait implicitement que ce fichier doit correspondre à une structure donnée ou l'infos des données contenue permet de reconnaitre son type ....

J'ai travaillé sur des tableaux de bord qui fusionnaient les ventes de plus de 600 vendeurs , jamais je n'ai eu ta problèmatique.
CodeFacile est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 19h24   #4
Membre du Club
 
Avatar de m@tix
 
Inscription : octobre 2006
Messages : 290
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 290
Points : 42
Points : 42
Bonsoir,

Merci à tous les deux pour vos réponses.

bbil, l'ennuie avec ce code, c'est qu'il risque également de bloquer les macros du premier fichier, pas seulement du second.. non ?

CodeFacile, je me retrouve face à cette problématique, car comme j'ai tenté de l'expliquer, le second fichier m'est d'une part utile indépendamment, avec les macros qui sont derrière, mais il m'est aussi utile via un autre classeur qui vient l'ouvrir avec l'une de ses macros.

Enfin, je vais tenter de trouver une autre astuce je pense...
m@tix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 20h25   #5
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 894
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 894
Points : 7 177
Points : 7 177
Bonjour,

Citation:
bbil, l'ennuie avec ce code, c'est qu'il risque également de bloquer les macros du premier fichier, pas seulement du second.. non ?
Non, le code de Bbil empêche uniquement l'exécution du Workbook_Open et réactive les macros ensuite

Citation:
Plus clairement, je souhaiterais lancer une macro uniquement lorsque le fichier en question est ouvert directement par l'utilisateur
La macro dont tu parles est elle bien lancée dans le Workbook_Open ?
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/08/2011, 00h16   #6
Membre du Club
 
Avatar de m@tix
 
Inscription : octobre 2006
Messages : 290
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 290
Points : 42
Points : 42
Oui, la macro dont je parle est lancée dans le Workbook_Open. Mais je ne pense pas que ça résolve le problème... Car ce que j'aimerais, c'est que les macros du classeur2 se lancent lorsqu'on ouvre directement ce classeur2, mais qu'elles ne se lancent pas lorsque ce-dernier est ouvert par le classeur1 par nécessité pour récupérer des données..
m@tix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 09h09   #7
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 939
Points : 7 939
bjr,

le code de bbil fonctionne bien, mais peut-être que tu ouvres ton classeur différemment?
tu devrais nous mettre le code que tu utilises et qui ne donne pas l'effet désiré
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/08/2011, 10h21   #8
Membre du Club
 
Avatar de m@tix
 
Inscription : octobre 2006
Messages : 290
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 290
Points : 42
Points : 42
A l'ouverture de mon classeur1, dans le Workbook_Open, j'ai:

Code :
1
2
3
4
5
If Range("A1").Value = "" Then
 
    UserForm.Show vbModeless
 
End If
J'aimerais que ceci ne soit appliqué que lorsque j'ouvre directement ce classeur1 en double cliquant dessus, et non lorsqu'il est ouvert via la macro d'un autre classeur.
m@tix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 10h38   #9
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 939
Points : 7 939
Citation:
Envoyé par m@tix Voir le message
lorsqu'il est ouvert via la macro d'un autre classeur.
c'est ce code d'ouverture qu'il faut voir ...

classeur1 ou classeur2 : on ne sait plus lequel ouvre lequel
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/08/2011, 10h54   #10
Membre du Club
 
Avatar de m@tix
 
Inscription : octobre 2006
Messages : 290
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 290
Points : 42
Points : 42
classeur2 ouvre classeur1..

Il n'y a pas vraiment de code d'ouverture, c'est un lien hypertext dans le classeur2 qui m'ouvre classeur1.
m@tix 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 16h39.


 
 
 
 
Partenaires

Hébergement Web