begin process at 2012 02 17 02:21:19
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

VBA

 > EXPLORATEUR DE FICHIERS VBA (LE DRIVE+DIR+FILELISTBOX DU VB)

EXPLORATEUR DE FICHIERS VBA (LE DRIVE+DIR+FILELISTBOX DU VB)


 Information sur la source

Note :
6 / 10 - par 2 personnes
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :VBA Classé sous :vba, autocad, drivelistbox, dirlistbox, filelistbox Niveau :Initié Date de création :21/01/2007 Vu / téléchargé :15 383 / 920

Auteur : The Mailman

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
L'objectif de ce code est d'afficher les fichiers sous la forme d'un explorateur.

Source

  • 'Fonction de tri d'une liste dans l'ordre alphabétique
  • Public Function Prog_tri_croissant(ByRef Var_liste())
  • For Var_compteur1 = LBound(Var_liste) To UBound(Var_liste) - 1
  • For Var_compteur2 = Var_compteur1 + 1 To UBound(Var_liste)
  • If Var_liste(Var_compteur1) > Var_liste(Var_compteur2) Then
  • Var_temp = Var_liste(Var_compteur2)
  • Var_liste(Var_compteur2) = Var_liste(Var_compteur1)
  • Var_liste(Var_compteur1) = Var_temp
  • End If
  • Next Var_compteur2
  • Next Var_compteur1
  • 'Affectation de la valeur finale au programme pour qu'il retourne
  • 'la liste dans l'ordre croissant lorsque l'on fait appel à lui
  • Prog_tri_croissant = Var_liste()
  • End Function
  • 'Programme d'affichage des répertoires et des fichiers
  • Sub Prog_affichage_rep_et_fichier()
  • Var_chemin = TextBox1.Value
  • Dim Obj_FSO, Obj_dossier
  • Var_rep = ""
  • Var_fich = ""
  • On Error Resume Next
  • ' Créer une instance du FSO (Objet système de fichiers)
  • Set Obj_FSO = CreateObject("Scripting.FileSystemObject")
  • Set Obj_dossier = Obj_FSO.GetFolder(Var_chemin)
  • Var_nb_rep = Obj_dossier.SubFolders.Count
  • ReDim Var_liste_rep(Var_nb_rep)
  • Var_compteur1 = 1
  • 'Créer la liste des répertoires du lecteur sélectionné
  • For Each Var_rep In Obj_dossier.SubFolders
  • 'Affecter des noms de répertoire en majuscules (Ucase) pour un tri futur
  • Var_liste_rep(Var_compteur1) = UCase(Var_rep.Name)
  • Var_compteur1 = Var_compteur1 + 1
  • Next
  • 'Faire appel au sous-programme de tri croissant d'une liste
  • Var_liste_triee = Prog_tri_croissant(Var_liste_rep)
  • For Var_compteur = 1 To Var_nb_rep
  • ListBox1.AddItem Var_liste_triee(Var_compteur)
  • Next Var_compteur
  • ' Ajouter la racine (..) en premier dans la liste des répertoires
  • ' seulement dans le cas où on est au niveau inférieur d'un lecteur
  • ' (Exemple "C:\" fait 3 caractères)
  • If Len(Var_chemin) > 3 Then
  • 'Ajouter le ".." en tête de liste
  • ListBox1.AddItem "..", 0
  • End If
  • Var_compteur = 1
  • Var_nb_fich = Obj_dossier.Files.Count
  • ReDim Var_liste_fich(Var_nb_fich)
  • 'Créer la liste des fichiers du repertoire sélectionné
  • For Each Var_fich In Obj_dossier.Files
  • 'Réactiver la condition If suivante si vous ne voulez voir que les fichiers DWG
  • ' If Right(Var_fich.Name, 4) = ".dwg" Or Right(Var_fich.Name, 4) = ".DWG" Then
  • 'Affecter des noms de fichiers en majuscules (Ucase) pour un tri futur
  • Var_liste_fich(Var_compteur) = UCase(Var_fich.Name)
  • Var_compteur = Var_compteur + 1
  • ' End If
  • Next
  • 'Redimensionner le tableau (composé d'un nombre d'éléments correspondant
  • 'au nombre total des fichiers du répertoire) par un nombre d'éléments
  • 'correspondant au nombre de fichiers ".dwg" du répertoire
  • 'Fonction ne supprimant que les valeurs supérieures de la différence des 2 nb d'éléments
  • ReDim Preserve Var_liste_fich(Var_compteur - 1)
  • 'Faire appel au sous-programme de tri croissant d'une liste
  • Var_liste_triee = Prog_tri_croissant(Var_liste_fich)
  • For Var_compteur = 1 To Var_nb_fich
  • ListBox2.AddItem Var_liste_triee(Var_compteur)
  • Next Var_compteur
  • ' Libérer les objets
  • Set Obj_FSO = Nothing
  • Set Obj_dossier = Nothing
  • End Sub
  • Sub Prog_recherche_lecteurs()
  • Dim Obj_FSO
  • On Error Resume Next
  • ' Créer une instance du FSO (Objet système de fichiers)
  • Set Obj_FSO = CreateObject("Scripting.FileSystemObject")
  • For Each drvValue In Obj_FSO.Drives
  • 'Ne pas tenir compte du lecteur A
  • If drvValue.DriveLetter <> "A" Then
  • 'Regarder si le lecteur est disponible
  • If drvValue.Isready Then
  • 'Le lecteur est disponible :
  • 'Ajouter son nom dans la liste de ComboBox1 avec :\ au bout du nom
  • ComboBox1.AddItem drvValue.DriveLetter & ":\"
  • End If
  • End If
  • Next
  • ' Libérer les objets
  • Set Obj_FSO = Nothing
  • End Sub
  • 'Liste déroulante des lecteurs
  • Private Sub ComboBox1_Change()
  • TextBox1.Value = ComboBox1.Value
  • 'Effacer le contenu de la liste de répetoires
  • ListBox1.Clear
  • 'Effacer le contenu de la liste des fichiers
  • ListBox2.Clear
  • Call Prog_affichage_rep_et_fichier
  • End Sub
  • 'Liste des répertoires
  • Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  • On Error GoTo Error
  • If ListBox1.Value = ".." Then
  • 'Si choix de l'utilisateur de ".."
  • Dim Var_boucle As Integer
  • Dim Var_position_barre As Integer
  • For Var_boucle = 3 To Len(TextBox1.Value)
  • 'Si on détecte le dernier "\" dans la chaine de caractères : sortir de la boucle
  • 'de manière à ne garder en mémoire que la position de l'avant-dernière "\"
  • If InStr(Var_boucle, TextBox1.Value, "\") = Len(TextBox1.Value) Then Exit For
  • Var_position_barre = InStr(Var_boucle, TextBox1.Value, "\")
  • Next Var_boucle
  • 'Supprimer le dernier sous-répertoire pour remonter d'un niveau
  • TextBox1.Value = Left(TextBox1.Value, Var_position_barre)
  • Else
  • 'Sinon ajouter le choix du nouveau sous-répertoire
  • TextBox1.Value = TextBox1.Value & ListBox1.Value & "\"
  • End If
  • ListBox1.Clear
  • ListBox2.Clear
  • Call Prog_affichage_rep_et_fichier
  • 'Se placer tout en haut de la liste
  • ListBox1.TopIndex = 0
  • 'Déselectionner une sélection unique dans une liste Box dont Multiselect est sur 0
  • ListBox1.ListIndex = -1
  • Error:
  • End Sub
  • Private Sub UserForm_Activate()
  • 'A l'activation du programme, lancer la recherche des lecteurs.
  • Call Prog_recherche_lecteurs
  • End Sub
'Fonction de tri d'une liste dans l'ordre alphabétique
Public Function Prog_tri_croissant(ByRef Var_liste())

  For Var_compteur1 = LBound(Var_liste) To UBound(Var_liste) - 1
    For Var_compteur2 = Var_compteur1 + 1 To UBound(Var_liste)
      If Var_liste(Var_compteur1) > Var_liste(Var_compteur2) Then
        Var_temp = Var_liste(Var_compteur2)
        Var_liste(Var_compteur2) = Var_liste(Var_compteur1)
        Var_liste(Var_compteur1) = Var_temp
      End If
    Next Var_compteur2
  Next Var_compteur1

'Affectation de la valeur finale au programme pour qu'il retourne
'la liste dans l'ordre croissant lorsque l'on fait appel à lui
Prog_tri_croissant = Var_liste()

End Function

'Programme d'affichage des répertoires et des fichiers
Sub Prog_affichage_rep_et_fichier()

  Var_chemin = TextBox1.Value
  Dim Obj_FSO, Obj_dossier
  Var_rep = ""
  Var_fich = ""

  On Error Resume Next

  ' Créer une instance du FSO (Objet système de fichiers)
  Set Obj_FSO = CreateObject("Scripting.FileSystemObject")
  Set Obj_dossier = Obj_FSO.GetFolder(Var_chemin)

  Var_nb_rep = Obj_dossier.SubFolders.Count
  ReDim Var_liste_rep(Var_nb_rep)
  Var_compteur1 = 1
  'Créer la liste des répertoires du lecteur sélectionné
  For Each Var_rep In Obj_dossier.SubFolders
    'Affecter des noms de répertoire en majuscules (Ucase) pour un tri futur
    Var_liste_rep(Var_compteur1) = UCase(Var_rep.Name)
    Var_compteur1 = Var_compteur1 + 1
  Next

  'Faire appel au sous-programme de tri croissant d'une liste
  Var_liste_triee = Prog_tri_croissant(Var_liste_rep)

  For Var_compteur = 1 To Var_nb_rep
    ListBox1.AddItem Var_liste_triee(Var_compteur)
  Next Var_compteur
  
  ' Ajouter la racine (..) en premier dans la liste des répertoires
  ' seulement dans le cas où on est au niveau inférieur d'un lecteur
  ' (Exemple "C:\" fait 3 caractères)
  If Len(Var_chemin) > 3 Then
    'Ajouter le ".." en tête de liste
    ListBox1.AddItem "..", 0
  End If
  
  Var_compteur = 1
  Var_nb_fich = Obj_dossier.Files.Count
  ReDim Var_liste_fich(Var_nb_fich)
  'Créer la liste des fichiers du repertoire sélectionné
  For Each Var_fich In Obj_dossier.Files
'Réactiver la condition If suivante si vous ne voulez voir que les fichiers DWG
'    If Right(Var_fich.Name, 4) = ".dwg" Or Right(Var_fich.Name, 4) = ".DWG" Then
      'Affecter des noms de fichiers en majuscules (Ucase) pour un tri futur
      Var_liste_fich(Var_compteur) = UCase(Var_fich.Name)
      Var_compteur = Var_compteur + 1
'    End If
  Next
  
  'Redimensionner le tableau (composé d'un nombre d'éléments correspondant
  'au nombre total des fichiers du répertoire) par un nombre d'éléments
  'correspondant au nombre de fichiers ".dwg" du répertoire
  'Fonction ne supprimant que les valeurs supérieures de la différence des 2 nb d'éléments
  ReDim Preserve Var_liste_fich(Var_compteur - 1)
  
  'Faire appel au sous-programme de tri croissant d'une liste
  Var_liste_triee = Prog_tri_croissant(Var_liste_fich)

  For Var_compteur = 1 To Var_nb_fich
    ListBox2.AddItem Var_liste_triee(Var_compteur)
  Next Var_compteur
  
  ' Libérer les objets
  Set Obj_FSO = Nothing
  Set Obj_dossier = Nothing
  
End Sub

Sub Prog_recherche_lecteurs()

  Dim Obj_FSO

  On Error Resume Next

  ' Créer une instance du FSO (Objet système de fichiers)
  Set Obj_FSO = CreateObject("Scripting.FileSystemObject")

  For Each drvValue In Obj_FSO.Drives
    'Ne pas tenir compte du lecteur A
    If drvValue.DriveLetter <> "A" Then
      'Regarder si le lecteur est disponible
      If drvValue.Isready Then
        'Le lecteur est disponible :
        'Ajouter son nom dans la liste de ComboBox1 avec :\ au bout du nom
        ComboBox1.AddItem drvValue.DriveLetter & ":\"
      End If
    End If
  Next

  ' Libérer les objets
  Set Obj_FSO = Nothing

End Sub

'Liste déroulante des lecteurs
Private Sub ComboBox1_Change()
  TextBox1.Value = ComboBox1.Value
  'Effacer le contenu de la liste de répetoires
  ListBox1.Clear
  'Effacer le contenu de la liste des fichiers
  ListBox2.Clear
  Call Prog_affichage_rep_et_fichier
End Sub

'Liste des répertoires
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  On Error GoTo Error
  If ListBox1.Value = ".." Then
    'Si choix de l'utilisateur de ".."
    Dim Var_boucle As Integer
    Dim Var_position_barre As Integer
    For Var_boucle = 3 To Len(TextBox1.Value)
      'Si on détecte le dernier "\" dans la chaine de caractères : sortir de la boucle
      'de manière à ne garder en mémoire que la position de l'avant-dernière "\"
      If InStr(Var_boucle, TextBox1.Value, "\") = Len(TextBox1.Value) Then Exit For
      Var_position_barre = InStr(Var_boucle, TextBox1.Value, "\")
    Next Var_boucle
      'Supprimer le dernier sous-répertoire pour remonter d'un niveau
      TextBox1.Value = Left(TextBox1.Value, Var_position_barre)
  Else
    'Sinon ajouter le choix du nouveau sous-répertoire
    TextBox1.Value = TextBox1.Value & ListBox1.Value & "\"
  End If
  ListBox1.Clear
  ListBox2.Clear
  Call Prog_affichage_rep_et_fichier
  'Se placer tout en haut de la liste
  ListBox1.TopIndex = 0
  'Déselectionner une sélection unique dans une liste Box dont Multiselect est sur 0
  ListBox1.ListIndex = -1
Error:
End Sub

Private Sub UserForm_Activate()
  'A l'activation du programme, lancer la recherche des lecteurs.
  Call Prog_recherche_lecteurs
End Sub

 Conclusion

Ce code à été développé en VBA pour Autocad. Il utilise le Scripting Runtime (Objet système de fichiers).
Voici les différents difficultés rencontrés pour réaliser ce programme :
Commandes disponibles avec Visual Basic mais pas avec VBA (Visual Basic Application)
  a-) Affichage des lecteurs avec des commandes VBScript (DriveListBox sur Visual Basic)
  b-) Affichage des répertoire avec commandes VBScript (DirListBox sous Visual Basic)
  c-) Affichage des fichiers avec commandes VBScript (FileListBox sous Visual Basic)
  d-) Affichage des listes dans l'ordre alphabétique avec le sous programme
      Prog_tri_croissant (ListViewCtl.sorted = True sous Visual Basic)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • Macro_selection_fichiers.dvbTélécharger ce fichier [Réservé aux membres club]256 000 octets

Télécharger le zip


 Sources du même auteur

Source avec Zip IMPRESSIONS AUTOMATIQUE LISTE DE FICHIERS AUTOCAD
RÉCUPÉRER LES LECTEURS D'UN PC EN VBA. (LE DRIVELISTBOX DU V...
RÉCUPÉRER LES RACCOURCIS DU BUREAU (VBA)

 Sources de la même categorie

Source avec Zip Source avec une capture OUTLOOK ATTACHEMENT SAVER par MoiLafouine
Source avec Zip GESTION PERSONNEL par oudlarbi
Source avec Zip Source avec une capture CALENDRIER EN VBA POUR EXCEL 2010 par nounou94
Source avec Zip Source avec une capture MANIPULER LES FENETRES ENFANT D'EXCEL par bigfish_le vrai
Source avec Zip Source avec une capture COLLECTION ID par Le Pivert

 Sources en rapport avec celle ci

AUTOCAD 2010 GELÉS TOUS LES CALQUES SAUF 2 EN VBA par fabdu91630
Source avec Zip Source avec une capture PARABOLE - MACRO VBA DANS AUTOCAD par artgile
RÉCUPÉRER LES LECTEURS D'UN PC EN VBA. (LE DRIVELISTBOX DU V... par The Mailman
Source avec une capture DRIVELISTBOX DIRLISTBOX FILELISTBOX par loceanpacifique84470
Source avec Zip Source avec une capture OUVRIR ET VISUALISER TOUT FICHIERS ! (EDI'TOUT V1.0.0.0) par lumesh

Commentaires et avis

Commentaire de Exploreur le 21/01/2007 14:39:15

Re Salut,
Déjà ton code est bien lisible...cool!
8/10
A+
Exploreur

Commentaire de zavier666 le 21/01/2007 18:35:09


A peu de chose près, ce que je t'ai écris pour ton précédent code:

A quelques modifs près, ce code n'est ni puls ni moins qu'une retranscirption de l'aide dispo pour VBA !!???!!!!!


stls!
_______________________________________________
Toujours plus de VB6 et d'APi => API @ la loupe
http://xav.prog.power.fr

Commentaire de bocarnea le 22/08/2007 16:05:51

En tout cas ton code m'a super bien aidé. Je n'ai pas toujours le temps de me plonger dans les recherches et là ça fonctionne tout de suite.
J'ai quand même fait qq modifs pour la forme et obtimiser le nombre de variables.
Bref, merci

Zavier666 n'a pas l'air trés intelligent comme garçon!! La critique est facile !!

Commentaire de zavier666 le 25/08/2007 10:40:20

Tu m'as pris pour ton pote ou koi???
je te permets pas te me juger, reste en à tes remarques concernant le code!!!

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Controles DriveListBox DirListBox FileListBox dans VBA [ par yakcutter ] Je voudrai savoir comment utiliser les controles standards DriveListBox, DirListBox et FileListBox de Visual Basic dans VBA.Merci d'avance drivelistbox ,dirlistbox et filelistbox [ par kaiser95 ] Petit probleme en vb car le ti logicel bidon ke j ai fait fonctionne sur ma machine mais pas dans la piece d a coté. Alors en fait je crois que le pro Drivelistbox - Dirlistbox sous access en vba [ par Ttof77 ] Bonjour,Je suis actuellement en stage de développement sous access 2000, et je désirerais savoir s'il est possible d'insérer une DriveListBox une DirL Drivelistbox - Dirlistbox sous access en vba [ par Ttof77 ] Bonjour,Je suis actuellement en stage de développement sous access 2000, et je désirerais savoir s'il est possible d'insérer une DriveListBox une DirL Drivelistbox - Dirlistbox sous access en vba [ par Ttof77 ] Bonjour,Je suis actuellement en stage de développement sous access 2000, et je désirerais savoir s'il est possible d'insérer une DriveListBox une DirL DriveListBox, DirListbox et FileListbox [ par Smokie68 ] Je suis débutant en VBA et voulant executer un tutoriel je n'arrive pas à trouver les trois composants cités plus haut, j'ai beau cherché dans la boit Type d'objet ss VBA AutoCAD ... [ par Talere ] Bonjour,Je cherche à récuprer le type d'une variable issue d'AutoCAD. Effectivement, sa classe est AcadEntity mais je voudrais savoir quel type est-ce DirListBox [ par Vbsupernul ] Voilà, c'était pour savoir comment choisir comme chemin d'accès à un fichier le composite de 1 DriveListBox, un DirListBox et 1 FileBox.Voilà.Sinon, c drivelistbox [ par eryk17 ] comment fait on pour utiliser le drivelistbox par rapport au dirlistbox? je ne connais pas le code quil faut tapez pour que ces 2 commandes ont un lie drivelistbox [ par eryk17 ] comment fait on pour utiliser le drivelistbox par rapport au dirlistbox? je ne connais pas le code quil faut tapez pour que ces 2 commandes ont un lie


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,685 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales