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 :

Contrôle :Navigation avec l'explorateur de Windows


Sujet :

VBA Access

  1. #1
    Cem
    Cem est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 36
    Points : 28
    Points
    28
    Par défaut Contrôle :Navigation avec l'explorateur de Windows
    Je fais régulièrement des sauvegarde de ma BD sur une clef USB pour utiliser les données sur un autre PC au moyen du code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set FS = CreateObject("Scripting.FileSystemObject")
       'USBPath=Lettre de l'emplacement de la clé USB
     FS.CopyFile Data1Path, USBPath, True
    Comme la lettre du lecteur de la clef USB change au gré des PC et des branchements/débranchements de périphériques je dois chaque fois rechercher manuellement ce lecteur.

    Y'a-t-il un moyen simple d'insérer dans mon formulaire un contrôle(ActiveX?,lequel?, Comment le paramétrer?) qui me permette de naviguer dans l'explorateur de windows et de sélectionner le lieu de ma sauvegarde?

    Merci à mon sauveur


    Cem

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    vous pouvez tester cette fonction qui retourne le dossier racine d'un drive amovible en lui passant le nom de volume de la clef USB.

    Si elle ne trouve pas la clef (non connectée ou non prête), retourne "".

    Nécessite la référence Scripting Runtime
    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
     
    Public Function GetRootFolderAmovibleDrive(ByVal sNomVolume As String) As String
       On Error GoTo fin
       Dim oSFS As Scripting.FileSystemObject
       Dim oSD As Scripting.Drive
       Set oSFS = New Scripting.FileSystemObject
       For Each oSD In oSFS.Drives
          If oSD.DriveType = Removable And oSD.IsReady Then
             If oSD.VolumeName = sNomVolume Then
                GetRootFolderAmovibleDrive = oSD.RootFolder
                Exit For
             End If
          End If
       Next oSD
    fin:
       Set oSD = Nothing
       Set oSFS = Nothing
       Exit Function
    End Function
    exemple d'utilisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Debug.Print GetRootFolderAmovibleDrive("corsair")
    cordialement,

    philippe

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 79
    Points
    79
    Par défaut
    bjrs quand vous dites "Nécessite la référence Scripting Runtime" comment on fais pr ajouter une référence ??

    pas moyen de trouver scripting runtime ds les référence (ps: je tourne sous access 2007)

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Bonjour,
    le Scripting runtime n'est pas nécessaire, il s'agit de la DLL contenant les objets "Scripting.FileSystemOject".
    System32\scrrun.dll

    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
    Public Function GetRootFolderAmovibleDrive(ByVal sNomVolume As String) As String
       On Error GoTo fin
       Dim oSFS,oSD As Scripting.Drive
       'Set oSFS = New Scripting.FileSystemObject 'est identique à la ligne suivante
        Set oSFS=CreateObject("Scripting.FileSystemObject")
       For Each oSD In oSFS.Drives
          If oSD.DriveType = Removable And oSD.IsReady Then
             If oSD.VolumeName = sNomVolume Then
                GetRootFolderAmovibleDrive = oSD.RootFolder
                Exit For
             End If
          End If
       Next oSD
    fin:
       Set oSD = Nothing
       Set oSFS = Nothing
       Exit Function
    End Function

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 79
    Points
    79
    Par défaut
    ah la la vous parlez chinois pour moi la

    dans quoi dois-je placer les lignes de code??

    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
    Public Function GetRootFolderAmovibleDrive(ByVal sNomVolume As String) As String
       On Error GoTo fin
       Dim oSFS, oSD As Scripting.Drive
       'Set oSFS = New Scripting.FileSystemObject 'est identique à la ligne suivante
        Set oSFS = CreateObject("Scripting.FileSystemObject")
       For Each oSD In oSFS.Drives
          If oSD.DriveType = Removable And oSD.IsReady Then
             If oSD.VolumeName = sNomVolume Then
                GetRootFolderAmovibleDrive = oSD.RootFolder
                Exit For
             End If
          End If
       Next oSD
    fin:
       Set oSD = Nothing
       Set oSFS = Nothing
       Exit Function
    End Function
    Dans un module ou dans la procédure ???


    et comment faire pour par exemple aficher dans un msgbox la lettre du port utiliser ???

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Bonjour gwems,
    on peut imaginer une liste déroulante dans ton formulaire te permettant de sélectionner le lecteur de sauvegarde.

    Dans le formulaire crée une nouvelle liste déroulante : Pour l'exemple je l'appelle LstLecteurs.
    Propriété du contrôle :
    Nbr Colonnes : 2
    Largeur colonne : 0;5
    Origine source : Liste de valeurs.

    Deux colonnes, la première contient la lettre du lecteur : C:\, E:\ ...,
    la seconde colonne affiche le nom du volume + la lettre :

    A l'ouverture du formulaire, je vais remplir la liste déroulante des lecteurs prêts.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Form_Open()
     GetLecteurs()
    End sub
     
    Private Sub GetLecteurs()
     Dim SysF, Lecteur
     Set SysF=CreateObject("Scripting.FileSystemObject")
     For Each Lecteur In SysF.Drives
       If Lecteur.DriveType<>0 And Lecteur.DriveType<4 And Lecteur.IsReady Then LstLecteurs.RowSource=Iif(LstLecteurs.Rowsource="","",LstLecteurs.Rowsource & ";") & Lecteur.DriveLetter & ":\;" & Lecteur.VolumeName & " (" & Lecteur.DriveLetter & ":)"
     Next
     Set SysF=Nothing
    End sub

Discussions similaires

  1. Problème avec l'explorateur de Windows
    Par smadanco dans le forum Windows XP
    Réponses: 6
    Dernier message: 08/07/2007, 20h14
  2. problème avec l'explorateur windows
    Par Essilife dans le forum Windows XP
    Réponses: 7
    Dernier message: 14/03/2007, 19h35
  3. Application avec l'explorateur Windows
    Par Seth77 dans le forum C#
    Réponses: 5
    Dernier message: 27/02/2007, 14h12
  4. Ouvrir les archive zip avec l'explorateur windows
    Par koKoTis dans le forum Windows XP
    Réponses: 2
    Dernier message: 20/08/2006, 23h17
  5. Réponses: 2
    Dernier message: 04/11/2003, 12h50

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