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 :

Idientifier les fichiers avec mot de passe Windows


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 11
    Points
    11
    Par défaut Idientifier les fichiers avec mot de passe Windows
    Bonjour,

    Je réfléchi à une solution à ce problème depuis quelque jours.
    J’explique mon besoin :
    A partir de la propriété FileSearch, je parcours un très grand nombre de fichiers Excel.
    Dans certains cas (test sur le nom du fichier, date de modification, etc..), je récupère la valeur contenu dans certaines cellules. Afin de ne pas surcharger le traitement, je travaille avec des fonction de traitement de fichiers fermés du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    arg = "'" & repertoire & "[" & fichier & "]" & feuille & "'!" & Range(cellule).Range("A1").Address(, , xlR1C1)
     reccup_valeur = ExecuteExcel4Macro(arg)

    Dans certains cas les fichiers excel ont des mot de passe (au niveau du fichier). Au moment de lancer la fonction ExecuteExcel4Macro, l’interface me demande le mot de passe.

    Je souhaiterai pouvoir identifier ces fichiers avec mot de passe pour éviter de les traiter.

    J’ai chercher différentes méthodes (HasPassword, gestion des types d’erreurs, etc…) sans en trouver une qui me permettent d’identifier ces fichiers sans avoir à les ouvrir.

    Est ce que quelqu’un a déjà rencontrer ce problème ? Si oui, avez vous trouvez une solution.

    Je précise qu’il est primordiale de ne pas ouvrir les fichiers.


    Merci

  2. #2
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonjour p_12345

    j'ai trouvé ça qui devrait répondre à ta question
    Il fallait y penser

    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
     
    Private Function OuvreFichier(StrFichier As String) As Workbook
    Dim Fichier As String
    On Error Resume Next
    Set OuvreFichier = Workbooks.Open(StrFichier, Password:="")
    On Error GoTo 0
    End Function
     
    Sub testOuverture()
    Dim Fichier As String, WbK As Workbook
    Fichier = "c:\temp\test.xls"
    Set WbK = OuvreFichier(Fichier)
    If WbK Is Nothing Then
    MsgBox "Erreur à l'ouverture de " & Fichier
    Else
    MsgBox "Je m'appelle " & WbK.Name
    End If
    End Sub
    fred65200

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Merci pour ta réponse.
    Hélas j'avais déja pensé à cette solution qui permet de très bien identifier sans les ouvrir les fichier avec mot de passe...
    Le problème c'est qu'elle ouvre ceux qui n'en n'ont pas.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir P_12345,

    Regardez ici le tuto de Silkyroad :

    http://silkyroad.developpez.com/VBA/ClasseursFermes/

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Bonjour Jacques-jean,

    Merci pour le conseil, je m'inspire très souvent des tutoriels de silkyroad.
    Celui est très interessant mais je pense qu'il ne correspond pas vraiment à ma question:
    Comment savoir si un fichier est protégé sans avoir à l'ouvir?

    Pour lire les données, je n'ai aucun mal. J'avais pensé à la méthode ADO mais vu le nombre de fichier j'ai pensé que les temps de connexion/deconnexion pour chaque fichier allaient être long.

    Merci quand même

  6. #6
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonsoir,

    J'explore une piste
    As tu remarqué que tu n'étais pas obligé de taper le mot de passe pour avoir accès au contenu de la formule.

    fred65200

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Bonjour Fred,

    J'avoue ne pas comprendre ta réponse. Est ce que tu veux dire qu'une liaison entre deux cellules de deux classeurs différents n'est pas impacté par les mots de passe?
    Si c'est cela, je n'ai pas réussi à reproduire ton cas.

    ex:
    1- fichier test2.xls est protégé et contient des valeurs en B2 et B3
    2- fichier test1.xls point en A1 vers B2 de test2.xls
    3- Je ferme test2.xls
    4- Je modifie dans test1.xls la référence pour A1: ce n'est plus B2 mais B3
    5- Excel me demande le mot de passe


    Dis moi si j'ai mal compris ta piste. De toute façon merci pour tes recherches

  8. #8
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonjour,
    Oui, Excel te demande le mot de passe, tu cliques deux fois sur OK, et ta cellule se met à jour

    J'ai essayé ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    repertoire = "C:\Users\Fred\Desktop\"
    fichier = "mdp.xlsm"
    feuille = "Feuil1"
    cellule = "A1"
    arg = "'" & repertoire & "[" & fichier & "]" & feuille & "'!" & Range(cellule).Range("A1").Address(, , xlR1C1)
    Application.SendKeys "{TAB}{ENTER}" ', True
    reccup_valeur = ExecuteExcel4Macro(arg)
    MsgBox reccup_valeur
    mdp.xlsm étant protégé par mot de passe
    et ai réussi a récupérer la valeur de la cellule

    Par contre je n'ai pas trouver de moyen de savoir si le classeur était protégé sans essayer de l'ouvrir

    si on ne peux pas l'ouvrir, avec sendkeys "{TAB}{ENTER}, , sans connaitre le mot de passe j'ai eu la valeur.

    Utile le mot de passe

    @+

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Si j'ai bien compris ton message, le fait d'ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.SendKeys "{TAB}{ENTER}"
    permet de reccupérer les valeurs contenues dans un fichier Excel protégé par mot de passe (au niveau du fichier et pas du classeur) sans avoir a donner le mot de passe.

    J'ai essayé le même code que toi et j'ai des résultats très différents que ce que tu annonces: pas de réccupération pour les fichiers protégés et stockage des Send key en fin de traitement --> la siasie des résultats se retrouve avec 200 lignes vide en supplément.

    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
    Function reccup_valeur(repertoire, fichier, feuille, cellule)
     
        Dim arg As String
    ' vérifiaction de l'existance
        If Right(repertoire, 1) <> "\" Then repertoire = repertoire & "\"
        If Dir(repertoire & fichier) = "" Then
            Getvalue = "fichier introuvable"
            Exit Function
        End If
    '   créé l'argument
        arg = "'" & repertoire & "[" & fichier & "]" & feuille & "'!" & Range(cellule).Range("A1").Address(, , xlR1C1)
    Application.SendKeys "{TAB}{ENTER}"
    '   Execute XLM macro
    reccup_valeur = ExecuteExcel4Macro(arg)
     
    End Function

    Merci quand même :-)

  10. #10
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    RE bonjour,

    Dans l'archive, deux classeurs,
    un classeur recupère les données de l'autre qui est protégé, sans connaitre le mot de passe.

    Testé en .xls sur Excel 2007

    Le code est dans le module de feuille

    @+
    Fred65200
    Fichiers attachés Fichiers attachés

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Concernant notre incompréhension mutuelle, j'ai le fin mot de l'affaire:

    -J'extrai
    - je change le chemin dans la macro (car je n'ai pas "C:\Users\Fred\Desktop\")
    - j'execute
    --> l'interface me demande le mot de passe puis fait une erreur 2023

    Ma conclusion :
    Je suis en Excel 2000 et toi en 2007.

    Donc merci pour tout mais on ne va pas y arriver

Discussions similaires

  1. [AC-2010] lire une base .accd contenant les données AVEC MOT DE PASSE à partir d'excel
    Par mister red dans le forum Sécurité
    Réponses: 1
    Dernier message: 15/03/2015, 16h36
  2. [Forum] PHP WINDOWS dézipper fichier avec mot de passe
    Par Hothibo dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 24/06/2014, 11h15
  3. Dezipper un fichier avec mot de pass
    Par Snoopy77 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 23/12/2008, 09h14
  4. Ouvrir via une macro un fichier avec mot de passe.
    Par Drost dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/10/2007, 14h47
  5. acceder a un fichier avec mot de passe
    Par moa378 dans le forum Windows
    Réponses: 16
    Dernier message: 17/05/2005, 12h15

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