IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Ouvrir un fichier Excel protégé en VBA : demande 2 fois du mot de passe ? [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Par défaut Ouvrir un fichier Excel protégé en VBA : demande 2 fois du mot de passe ?
    Bonjour à tous,

    Cela faisait longtemps que j'étais pas venu ici

    J'ai un souci très étrange : j'ai créé une macro Excel, pour pouvoir ouvrir un fichier Excel protégé par un mot de passe, que je veux laisser à la main de l'utilisateur pour le saisir. Voici la macro utilisée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    NomFichierFinal = ActiveWorkbook.Name
    FichierDemande = Application.GetOpenFilename(FileFilter:="Fichiers Excel (*.xlsx*), *.xlsx*", Title:="Choisissez un fichier Excel à ouvrir", MultiSelect:=False)
    Set wbk = Application.Workbooks.Open(FichierDemande)
    Rien de bien fou me direz-vous.

    Du coup, sur le fichier Excel que je cherche, il y a un mot de passe, variable, et que je dois laisser à la main de l'utilisateur pour le saisir au moment de l'ouverture du fichier Excel.

    Ce qui m'intrigue le plus (j'ai fait du pas à pas pour vérifier), c'est qu'au moment du GetOpenFileName, quand je choisis mon fichier Excel, il fait comme s'il l'ouvrait et me demande le mot de passe.
    Donc je le rentre, et ensuite, quand il lance la vraie application d'ouverture du fichier, il me redemande le mot de passe.

    Je pensais que la fonction GetOpenFileName était faite uniquement pour récupérer le nom du fichier sélectionné, sauf que là il me demande aussi le mot de passe du fichier.

    Comment faire pour contourner le problème et qu'il ne me demande le mot de passe qu'une fois ?
    Faut-il que j'utilise une autre boite de dialogue de recherche de fichier ? Faut-il que je fasse un inputbox pour récupérer au préalable le mot de passe du fichier Excel ?

    Merci d'avance pour votre aide
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 466
    Par défaut
    Salut,

    Comme alternative, tu peux passer par l'objet FileDialog.

  3. #3
    Membre chevronné
    Homme Profil pro
    CIP
    Inscrit en
    Avril 2024
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : CIP
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2024
    Messages : 195
    Par défaut re
    bonjour
    chez moi office 2013 je n'ai pas ce phénomène
    l'imput password n'est pas déclanché par le getopentfilename
    par contre à l'open oui

  4. #4
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Par défaut
    J'ai essayé ça mais j'ai le même phénomène.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Dim oFD As FileDialog
    'Paramètre la fenêtre Ouvrir
    Set oFD = Application.FileDialog(msoFileDialogOpen)
    With oFD
        .ButtonName = "Sélectionner"
        .Title = "Sélectionnez un fichier"
        'Interdit la multi sélection
        .AllowMultiSelect = False
        'With .Filters
        ' .Add "Fichiers Excel (*.xlsx*), *.xlsx*"
        'End With
        If .Show Then
           FichierDemande = .SelectedItems(1)
        End If
    End With
    De plus, normalement, et si j'ai bien compris, l'argument msoFileDialogOpen me permet d'ouvrir le fichier, sauf qu'il ne me l'ouvre pas.


    j'ai essayé avec l'autre argument msoFileDialogFilePicker qui permet normalement de juste sélectionner un fichier. Et par la suite j'ouvre le fichier, mais j'ai pareil : il me demande 2 fois le mot de passe pour le fichier Excel...
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 466
    Par défaut
    Es-tu sur que tu n'as pas un évenement imprévu qui se déclenche ?
    Genre Workbook_Open, Workbook_Activate, ou Application_NewWorkbook ect ... ?
    A partir de quel gestionnaire d'évenement ton code est-il appelé ?

  6. #6
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Par défaut
    C'est une procédure que je lance manuellement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub ImportFichier()
    Dim wbk As Workbook
    'récupération du fichier
    NomFichierFinal = ActiveWorkbook.Name
    NbFeuilles = Sheets.Count
     
    FichierDemande = Application.GetOpenFilename(FileFilter:="Fichiers Excel (*.xlsx*), *.xlsx*", Title:="Choisissez un fichier Excel à ouvrir", MultiSelect:=False)
    Set wbk = Application.Workbooks.Open(FichierDemande)
    'copie de de la page dans le classeur actuel (qu'on supprimera après)
    ActiveSheet.Copy After:=Workbooks(NomFichierFinal).Sheets(NbFeuilles)
    DoEvents
    Sheets(Sheets.Count).Name = "Infos"
    'fermeture du classeur
    Application.DisplayAlerts = False
    wbk.Close SaveChanges:=False
    Application.DisplayAlerts = True
     
    End Sub
    Et Comme je l'ai dit avant, quand je fais du pas à pas, je vois bien qu'il me demande le mot de passe au moment du GetOpenFileName, et aussi au moment de l'ouverture du fichier.

    Et pareil si j'utilise ce que tu m'as dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Sub ImportFichier()
    Dim wbk As Workbook
    'récupération du fichier
    NomFichierFinal = ActiveWorkbook.Name
    NbFeuilles = Sheets.Count
     
    Dim oFD As FileDialog
    'Paramètre la fenêtre Ouvrir
    Set oFD = Application.FileDialog(msoFileDialogOpen)
    With oFD
        .ButtonName = "Sélectionner"
        .Title = "Sélectionnez un fichier"
        'Interdit la multi sélection
        .AllowMultiSelect = False
        If .Show Then
           FichierDemande = .SelectedItems(1)
        End If
    End With
     
    End Sub
    Au moment du SelectedItems, il me demande le mot de passe, quelquesoit le modèle du FileDialog utilisé. Il me demande aussi 2 fois le mot de passe.
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  7. #7
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Par défaut
    Bonjour à tous,


    J'ai trouvé pourquoi !!!
    En fait, quand la fenêtre de sélection s'ouvre, j'avais la prévisualisation des données à droite de l'explorateur, et cette visualsiation des données qui demandait le mot de passe.

    En le désactivant, le problème a disparu

    Petite question : savez-vous, peut-être dans l'application FileDialog, si on peut désactiver cette visualisation ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 466
    Par défaut
    La propriété InitialView te permet de contrôler l'apparence de la boite de dialogue:
    https://learn.microsoft.com/fr-fr/of...og.initialview
    https://learn.microsoft.com/fr-fr/of...filedialogview

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ouvrir un fichier Excel avec du VBA
    Par challe1976 dans le forum VBA Access
    Réponses: 3
    Dernier message: 01/02/2016, 20h13
  2. Réponses: 1
    Dernier message: 21/03/2007, 19h32
  3. [VBA-OOo] Comment ouvrir un fichier Excel en basic ?
    Par asoka13 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/06/2006, 17h19
  4. [VBA-E]ouvrir fichier excel + boite dialogue VBA
    Par dananounette dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/05/2006, 16h13
  5. [VBA] Word - Comment ouvrir un fichier excel
    Par le_sonic dans le forum VBA Word
    Réponses: 5
    Dernier message: 28/12/2005, 09h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo