VBA Password ouverture Excel

Fermé
cel92 Messages postés 28 Date d'inscription mercredi 13 février 2008 Statut Membre Dernière intervention 16 décembre 2008 - 15 déc. 2008 à 16:37
cel92 Messages postés 28 Date d'inscription mercredi 13 février 2008 Statut Membre Dernière intervention 16 décembre 2008 - 16 déc. 2008 à 15:05
Bonjour,

Je n'ai pas trouvé de sujet répondant à mon problème, alors je m'y colle :
(VBA Excel 2003)

Depuis ThisWorkbook, une macro ouvre un autre fichier dans une seconde instance d'Excel, que je garde invisible durant les différentes opérations effectuées jusqu'à sa fermeture.
L'autre fichier Excel affiche une UserForm à l'ouverture, uniquement si l'application Excel est visible : cette astuce me permettait donc d'afficher la userform quand on ouvrait le fichier manuellement, mais ne l'affichait pas quand le fichier était ouvert dans une instance invisible par une macro extérieure.

Pas de problème, jusqu'à ce que l'utilisateur du second fichier y mette un mot de passe (via le menu Outil/Options/Sécurité). C'est donc un mot de passe sur l'ouverture pour la lecture du fichier Excel.

A présent quand je lance ma macro depuis ThisWorkbook, lorsque j'ouvre l'autre fichier je dois saisir le mot de passe, puis la UserForm non désirée s'affiche, puis le reste des opérations est effectué correctement.

J'ai donc 2 problèmes :

1) Empecher la UserForm d'apparaître :
Pourquoi s'affiche-t-elle ? La saisie du Password a-t-elle rendue ma seconde instance d'Excel visible ? Comment l'empêcher ? Ou dois-je complètement changer d'astuce pour ne pas l'afficher lorsque le fichier est ouvert par une macro ?

2) Intercepter la demande de mot de passe :
En supposant que l'utilisateur saisisse une fois pour toute son mdp dans une cellule de ThisWorkbook, je n'ai pas trouvé comment ouvrir l'autre fichier par vba en donnant le mdp, de façon à ce que ce soit invisible pour l'utilisateur.
(Je n'ai pas compris l'aide VBA sur "Password", je ne sais même pas si cela répond à mon besoin ...)

Voilà, j'espère avoir été claire et compréhensible ...
Merci d'avance pour vos astuces !
A voir également:

4 réponses

cel92 Messages postés 28 Date d'inscription mercredi 13 février 2008 Statut Membre Dernière intervention 16 décembre 2008 13
15 déc. 2008 à 17:35
Mon code, pour mieux comprendre :

Dans un Sub d’un Module de ThisWorkbook :

‘Ouverture d’une seconde instance d’Excel :
Dim appliExcel As Excel.Application
Set appliExcel = CreateObject("Excel.Application")    'on crée une 2ème appli excel
appliExcel.Visible = False                            'on cache cette nouvelle appli
    
‘Ouverture de l’autre fichier Excel
nomCompletFichierInit = ActiveSheet.Range("I7").Value
Set fichierCRAs = appliExcel.Workbooks.Open(nomCompletFichierInit)
…

Dans l’autre fichier (désigné par ‘fichierCRAs’) dans le code de ThisWorkbook :

Private Sub Workbook_Open()
    If Excel.Application.Visible = True Then
        AccueilForm.Show
    End If
End Sub
0
cel92 Messages postés 28 Date d'inscription mercredi 13 février 2008 Statut Membre Dernière intervention 16 décembre 2008 13
16 déc. 2008 à 10:17
?
0
cel92 Messages postés 28 Date d'inscription mercredi 13 février 2008 Statut Membre Dernière intervention 16 décembre 2008 13
16 déc. 2008 à 11:59
??
0
cel92 Messages postés 28 Date d'inscription mercredi 13 février 2008 Statut Membre Dernière intervention 16 décembre 2008 13
16 déc. 2008 à 15:05
???
0