Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Comment distinguer ouverture Manuelle et Auto d'un fichier

B

Ben

Guest
Bonjour,
Voici le contexte de ma question.
Je dispose de fichiers excel (2000) avec macro automatique sur évennement open. Cette macro affiche plusieurs boites de dialogue (mots de passe) avant affichage.
J'ai besoin de récupérer les données de ces fichiers par une macro de copie (indépendante) sans être géné par la saisie manuelle des différents mot de passe. J'ai donc besoin de pouvoir différentier les 2 modes d'ouverture de ces fichiers de données.

Question : existe-t-il un moyen de distinguer (en VBA) à l'ouverture d'un fichier, s'il a été ouvert par une action MANUELLE (Fuchier / ouvrir ) ou si c'est une macro qui a demandé l'ouverture du fichier ?

Merci
Ben
 
E

EricS

Guest
bonjour,

pas de réponse directe à ta question si ce n'est que tu pourrais vérifier que ton fichier contenant la macro pour la copie est ouvert et dans ce cas ne pas demander les mots de passe

cible = "Classeur3"
mot = "oui"
'MsgBox Windows.Count
For i = 1 To Windows.Count
If Windows(i).Caption = cible Then MsgBox cible & " déjà ouvert": mot="non"
Next
if mot = "oui" then
<<<<demande des mots de passe>>>
end if

A+
Eric
 
B

Ben

Guest
Merci pour ta réponse.
C'est une solution de contournement que j'avais envisagée, mais moins élégante qui m'oblige à maîtriser le changement de nom du fichier de copie.
Si je n'en trouve pas d'autre, c'est ce que je ferais.
A++
Ben
 
D

David2

Guest
hello

tu pourrais créer un variable Global de type booleen que tu mettrais a "True" quand tu passe par la macro, d'où sur la sub open: si booleen =true --> pas de mot de passe, sinon --> mot de passe
 
B

Ben

Guest
Merci David pour la suggestion. Mais cela suppose que la variable globale soit partagée entre 2 fichiers ouverts (affectée par l'un et lue par l'autre). Cela est-il possible ?
A+
Ben
 
D

David2

Guest
Bonjour,


exact, si le fichier source est fermé, la variable se libère.

tu pourrais peut-être copier une chaine de caractère bien précise dans le presse-papier (via le fichier source) et vérifier à l'ouverture du fichier de destination si cette chaine existe ?!

style:
range("a1").value="Le fichier peut être ouvert"
range("a1").copy
blablabla...ouverture du fichier...
'''''''sur le fichier N°2'''''''''
range("a1).paste
blablabla....si range("a1") = "Le fichier peut être ouvert".....

c'est pas très esthétique, mais bon

Bonne journée le forum,
 

Discussions similaires

Réponses
36
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…