Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/11/2011, 09h50   #1
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Qatar

Informations forums :
Inscription : novembre 2011
Messages : 2
Points : 1
Points : 1
Par défaut recherche multiple sur mon disque dur a partir d une colone

Bonjour a tous,

je recherche une solution afin de rechercher dans windows les valeur d une colone

ex: les valeurs suivante sont des .jpg

7179649
9644949
9934075
B473857
8031012
6810616

comment faire une recherche multiple sur mon disque dur a partir d une colone d excel

Merci
redbull222 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2011, 10h45   #2
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 920
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 920
Points : 7 237
Points : 7 237
Bonjour,

Une solution est d'utiliser les API Windows

Code a coller dans un module
Code :
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
Option Explicit
 
Public Const MAX_PATH = 260
Public Const INVALID_HANDLE_VALUE = -1
Public Const FILE_ATTRIBUTE_TEMPORARY = &H100
Public Const FILE_ATTRIBUTE_SYSTEM = &H4
Public Const FILE_ATTRIBUTE_READONLY = &H1
Public Const FILE_ATTRIBUTE_NORMAL = &H80
Public Const FILE_ATTRIBUTE_HIDDEN = &H2
Public Const FILE_ATTRIBUTE_DIRECTORY = &H10
Public Const FILE_ATTRIBUTE_COMPRESSED = &H800
Public Const FILE_ATTRIBUTE_ARCHIVE = &H20
Public Const ERROR_NO_MORE_FILES = 18&
 
Public strRetour As String
 
'Struture utilisée par WIN32_FIND_DATA
Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
End Type
 
'Struture utilisée par FindFirstFile
Type WIN32_FIND_DATA
    dwFileAttributes As Long
    ftCreationTime As FILETIME
    ftLastAccessTime As FILETIME
    ftLastWriteTime As FILETIME
    nFileSizeHigh As Long
    nFileSizeLow As Long
    dwReserved0 As Long
    dwReserved1 As Long
    cFileName As String * MAX_PATH
    cAlternate As String * 14
End Type
 
Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" _
(ByVal lpFileName As String, _
lpFindFileData As WIN32_FIND_DATA) As Long
Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" _
(ByVal hFindFile As Long, lpFindFileData As _
WIN32_FIND_DATA) As Long
Declare Function FindClose Lib "kernel32" _
(ByVal hFindFile As Long) As Long
Declare Function GetLastError Lib "kernel32" () As Long
'Détermine la longeur d'une chaine passée en argument.
Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" _
(ByVal lpString As String) As Long
 
Function Fnc_Recherche_Repertoire_API(Rep As String, Fichier As String) As String
Dim WFD As WIN32_FIND_DATA
Dim Handle_Recherche As Long
Dim Suite_Recherche As Long
Dim FileName As String
Dim nb_car As String
Dim Rep_Recherche As String
 
 
Fichier = LCase(Fichier)
 
Rep_Recherche = Rep & "*.*" 'Contient le répertoire de recherche
 
'Initialisation de la recherche avec le chemin du répertoire à scruter.
Handle_Recherche = FindFirstFile(Rep_Recherche, WFD)
If Handle_Recherche = INVALID_HANDLE_VALUE Then
    'Cela signifie que la recherche ne peut se faire
'    MsgBox ("Erreur dans le chemin de recherche")
    Exit Function
End If
 
Suite_Recherche = 1
 
Do While Suite_Recherche <> 0
    DoEvents
    'Retourne le nb de caractères précédent celui de fin de chaîne.
    nb_car = lstrlen(WFD.cFileName)
    'Extrait les caractères valides
    FileName = LCase(Left(WFD.cFileName, nb_car))
    'Teste si c'est un répertoire
    If (WFD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY Then
        'Vérifie si le nom du répertoire n'est pas le mère ou
        'l'enfant. (.. ou .)
        If (FileName <> "." And FileName <> "..") Then
            'Ajoute le répertoire à la liste de ceux scrutés.
'            ListDirectory.AddItem (Rep & FileName & "\")
            'Appel récursif pour recherche dans le nouveau
            'répertoire trouvé.
            If FileName <> "$recycle.bin" Then
                Call Fnc_Recherche_Repertoire_API(Rep & FileName & "\", Fichier)
            End If
        End If
    End If
 
    If FileName = Fichier Then
        If strRetour <> "" Then strRetour = strRetour & ";"
        strRetour = strRetour & (Rep & FileName)
    End If
    'Recherche le fichier suivant.
    'Si Suite_Recherche vaut 0 le répertoire est vide et l'on
    'quitte la fonction.
    Suite_Recherche = FindNextFile(Handle_Recherche, WFD)
 
Loop
'FindClose (Handle_Recherche)
Fnc_Recherche_Repertoire_API = strRetour
End Function
A noter qu'il faut lui préciser le disque de recherche

A utiliser dans la feuille avec une boucle sur la colonne A
Code :
1
2
3
4
5
6
7
8
9
10
Sub RechercheRep()
 
Dim i As Long
 
For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
    strRetour = ""
    Range("B" & i).Value = Fnc_Recherche_Repertoire_API("C:\", Range("A" & i).Value)
Next i
 
End Sub

Cette solution est fortement inspirée de cet exemple de micorosft :http://support.microsoft.com/kb/467457/fr
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/11/2011, 10h54   #3
Invité de passage
 
Homme
Inscription : novembre 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Qatar

Informations forums :
Inscription : novembre 2011
Messages : 2
Points : 1
Points : 1
Par défaut Grand Merci a Toi

Je vais tester
redbull222 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h44.


 
 
 
 
Partenaires

Hébergement Web