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

VBA Access Discussion :

Vérifier si un dossier est déjà ouvert via l'explorer Windows XP [AC-2010]


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Vérifier si un dossier est déjà ouvert via l'explorer Windows XP
    Bonjour,
    Avant toute chose, bonjour à toutes et tous ( je suis un petit nouveau ) et un tout grand merci pour toute l'aide via ce forum.

    Mon problème: Je sais vérifier si un dossier existe, le créer s'il n'existe pas et éventuellement l'ouvrir. Par contre je ne sais pas comment faire pour éviter de l'ouvrir à nouveau s'il est déjà ouvert. ( le fait de l'ouvrir plusieurs fois ne crèe aucun problème dans l'outil mais cela fait un peu brouillon

    Voici mon code pour création et ouverture.( Access 2010 ) Merci pour votre aide

    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 Sub Voir_Répertoire_Click()
     
    'Sur clic du bouton "Voir_Répertoire"
     
    DoCmd.SetWarnings True
     
    If Dir("C:\Tool_STAR\Photos\"  = "" Then
     
        MkDir "C:\Tool_STAR\Photos\" 
        Shell "explorer C:\Tool_STAR\Photos\"
     
    Else
        Shell "explorer C:\Tool_STAR\Photos\" 
     
    End If
     
    DoCmd.Hourglass False
    End Sub

  2. #2
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    MWBGC bonjour,

    Bienvenu parmi nous

    Tu peux utiliser la méthode document de l'objet shell.application afin de déterminer si un dossier est ouvert dans l'explorer. Ainsi tu peux insérer cette fonction dans une procédure. Cette fonction accepte comme argument le nom du répertoire et donne en sortie un booleen (true si le repertoire est déjà ouvert, false dans les autres cas).

    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
    Function isOpendirectory(Pathinfo) As Boolean
    Dim OpenFold As Variant
    Dim oShell As Object
    Dim Wnd As Object
    Dim strFolder
    isOpendirectory = False
     
    Set oShell = CreateObject("Shell.Application")
     
    For Each Wnd In oShell.Windows
        If Wnd.Name = "Explorateur de fichiers" Then            ' Windows Explorer version anglophone
           If Wnd.Document.Folder.Self.Path = Pathinfo Then
                isOpendirectory = True
           End If
        End If
        '
    Next Wnd
    End Function
    Tu peux l'exploiter ainsi dans ta procédure que tu réadapteras suivant tes besoins :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Voir_Répertoire_Click()
    If isOpendirectory("C:\Developpez") Then
        MsgBox "repertoire ouvert"
    Else
        MsgBox "repertoire inexistant ou fermé"
    End If
     
    End Sub
    Bonne continuation

    jimbolion

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Bonsoir jimbolion

    Grand merci pour cette réponse rapide.
    Je ne suis pas expert ( loin de là ) et par conséquent je ne suis pas sûr d’avoir bien tout compris.
    Ainsi j’ai recopié la fonction telle-quelle ( sauf Windows Explorer ) et j’ai un peu modifié la procédure suivant mon besoin mais je reçois toujours « Réperoire non ouvert » quel que soit la situation (voir code ci-dessous)

    Une autre question : J’utilise l’ouverture de l’explorer uniquement pour voir quelle photo je dois importer dans mon application. Après retour manuel dans access, j’introduis le nom de l’image et via un e procédure vba, je place le link dans une table utilisée par la suite pour des formulaires et états.
    N’y a-t-il pas moyen d’automatiser la prise du lien par un simple clic sur la photo dans l’explorer .

    D’avance, merci pour tes infos.

    Bonne fin de soirée.
    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
    22
    23
    24
    25
    26
    27
    28
    29
    '******************************************************************************************
    '*   Fonction utilisée pour savoir si un dossier est ouvert dans l'explorer windows       *
    '******************************************************************************************
    Function isOpendirectory(Pathinfo) As Boolean
    Dim OpenFold As Variant
    Dim oShell As Object
    Dim Wnd As Object
    Dim strFolder
    isOpendirectory = False
     
    Set oShell = CreateObject("Shell.Application")
     
    For Each Wnd In oShell.Windows
        If Wnd.Name = "Windows Explorer" Then            ' Windows Explorer version anglophone
           If Wnd.Document.Folder.self.Path = Pathinfo Then
                isOpendirectory = True
           End If
        End If
        '
    Next Wnd
    End Function
     
    Private Sub View_Folder_Click()
    If isOpendirectory("C:\Tool_STAR\Photos\2015-17") Then
        MsgBox "repertoire ouvert"
    Else
        MsgBox "repertoire inexistant ou fermé"
    End If
    End Sub

  4. #4
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    MWBGC bonsoir

    Pour commencer, j'ai bien évidemment vérifié la syntaxe sur mon environnement (windows 8.1) avant de t'envoyer le code source, mais à la lecture de ta réponse, pourquoi ne pas utiliser la librairie Microfoft Common Dialog Control pour récupérer le chemin du fichier.

    ici une réponse à tes attentes :

    http://access.developpez.com/faq/?pa...ecupChemFicDlg

    jimbolion

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

Discussions similaires

  1. [Débutant] Comment vérifier qu'une application est déjà ouverte sinon la lancer
    Par ousmane126 dans le forum VB.NET
    Réponses: 2
    Dernier message: 28/07/2014, 15h31
  2. Comment vérifier qu'un fichier est déjà ouvert ?
    Par n@n¤u dans le forum Entrée/Sortie
    Réponses: 14
    Dernier message: 04/08/2011, 12h23
  3. Vérifier qu'un dossier est vide
    Par coincoin22 dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 26/07/2007, 16h58
  4. Choisir dossier a l'ouverture de l'explorer windows
    Par ricky78 dans le forum Windows XP
    Réponses: 2
    Dernier message: 25/07/2006, 12h28
  5. Réponses: 5
    Dernier message: 05/11/2005, 11h43

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