OVH Cloud OVH Cloud

Utilisation du caractère *pour trouver un fichier

3 réponses
Avatar
Nicolas
Bonjour,
J'ai créé un programme qui recherche dans un dossier particulier, des
fichiers dont le nom commence par une lettre spécifique. Or il me retourne
l'ensemble des fichiers dont le nom contient cette lettre.
Pour vous aider, voici les instructions :

Sub trouverClasseur()
Set travail = Application.FileSearch

travail.LookIn = "C:\Documents and Settings\caride\Mes documents"
travail.Filename = "G*.xls"

If travail.Execute > 0 Then
For i = 1 To travail.FoundFiles.Count
If MsgBox("Désirez vous ouvrir " & travail.FoundFiles(i), vbYesNo +
vbCritical) = vbYes Then
Workbooks.Open (travail.FoundFiles(i))
End If
Next
End If

End Sub

Pouvez-vous m'aider ?
Merci

3 réponses

Avatar
Jacques93
Bonsoir Nicolas,
Nicolas a écrit :
Bonjour,
J'ai créé un programme qui recherche dans un dossier particulier, des
fichiers dont le nom commence par une lettre spécifique. Or il me retourne
l'ensemble des fichiers dont le nom contient cette lettre.
Pour vous aider, voici les instructions :

Sub trouverClasseur()
Set travail = Application.FileSearch

travail.LookIn = "C:Documents and SettingscarideMes documents"
travail.Filename = "G*.xls"

If travail.Execute > 0 Then
For i = 1 To travail.FoundFiles.Count
If MsgBox("Désirez vous ouvrir " & travail.FoundFiles(i), vbYesNo +
vbCritical) = vbYes Then
Workbooks.Open (travail.FoundFiles(i))
End If
Next
End If

End Sub




Il y a apparement un fonctionnement 'bizarre' de FileSearch
Si on indique :

.FileName = "G*.xls"

cela renvoie tous les classeurs contenant la lettre G
Si on on indique :

.FileName = "G*"
.FileType = msoFileTypeExcelWorkbooks

Cela renvoie les fichiers commençant par la lettre G, mais pas seulement
les .xls . Tu pourrais peut être avoir l'explication sur le groupe
microsoft.public.fr.excel

Sinon, soit tu adaptes, par exemple :

Sub trouverClasseur()
Dim i As Integer

With Application.FileSearch
.LookIn = "C:Documents and SettingscarideMes documents"
.Filename = "C*"
.FileType = msoFileTypeExcelWorkbooks
If .Execute > 0 Then
For i = 1 To .FoundFiles.Count
If UCase(Right(.FoundFiles(i), 4)) = ".XLS" Then
If MsgBox("Désirez vous ouvrir " & .FoundFiles(i), _
vbYesNo + vbCritical) = vbYes Then
Workbooks.Open (.FoundFiles(i))
End If
End If
Next
End If
End With
End Sub


soit tu changes de méthode :

Sub trouverClasseur()
Dim Path As String
Dim fName As String

Path = "C:Documents and SettingsAdministrateurMes documents"
fName = Dir(Path & "C*.xls")
While Len(fName) > 0
If MsgBox("Désirez vous ouvrir " & Path & fName, _
vbYesNo + vbCritical) = vbYes Then
Workbooks.Open (Path & fName)
End If
fName = Dir()
Wend
End Sub



--
Cordialement,

Jacques.
Avatar
Nicolas
Merci Jacques pour m'avoir orienté vers le forum Microsoft.public...qui
confirme l'existence d'un "bug" lors de l'utilisation de filesearch avec
Windows XP. Merci également pour la solution du path que je ne connaissais
pas.
--
Nicolas


"Jacques93" a écrit :

Bonsoir Nicolas,
Nicolas a écrit :
> Bonjour,
> J'ai créé un programme qui recherche dans un dossier particulier, des
> fichiers dont le nom commence par une lettre spécifique. Or il me retourne
> l'ensemble des fichiers dont le nom contient cette lettre.
> Pour vous aider, voici les instructions :
>
> Sub trouverClasseur()
> Set travail = Application.FileSearch
>
> travail.LookIn = "C:Documents and SettingscarideMes documents"
> travail.Filename = "G*.xls"
>
> If travail.Execute > 0 Then
> For i = 1 To travail.FoundFiles.Count
> If MsgBox("Désirez vous ouvrir " & travail.FoundFiles(i), vbYesNo +
> vbCritical) = vbYes Then
> Workbooks.Open (travail.FoundFiles(i))
> End If
> Next
> End If
>
> End Sub
>

Il y a apparement un fonctionnement 'bizarre' de FileSearch
Si on indique :

.FileName = "G*.xls"

cela renvoie tous les classeurs contenant la lettre G
Si on on indique :

.FileName = "G*"
.FileType = msoFileTypeExcelWorkbooks

Cela renvoie les fichiers commençant par la lettre G, mais pas seulement
les .xls . Tu pourrais peut être avoir l'explication sur le groupe
microsoft.public.fr.excel

Sinon, soit tu adaptes, par exemple :

Sub trouverClasseur()
Dim i As Integer

With Application.FileSearch
.LookIn = "C:Documents and SettingscarideMes documents"
.Filename = "C*"
.FileType = msoFileTypeExcelWorkbooks
If .Execute > 0 Then
For i = 1 To .FoundFiles.Count
If UCase(Right(.FoundFiles(i), 4)) = ".XLS" Then
If MsgBox("Désirez vous ouvrir " & .FoundFiles(i), _
vbYesNo + vbCritical) = vbYes Then
Workbooks.Open (.FoundFiles(i))
End If
End If
Next
End If
End With
End Sub


soit tu changes de méthode :

Sub trouverClasseur()
Dim Path As String
Dim fName As String

Path = "C:Documents and SettingsAdministrateurMes documents"
fName = Dir(Path & "C*.xls")
While Len(fName) > 0
If MsgBox("Désirez vous ouvrir " & Path & fName, _
vbYesNo + vbCritical) = vbYes Then
Workbooks.Open (Path & fName)
End If
fName = Dir()
Wend
End Sub



--
Cordialement,

Jacques.



Avatar
Jacques93
Bonjour Nicolas,
Nicolas a écrit :
Merci Jacques pour m'avoir orienté vers le forum Microsoft.public...qui
confirme l'existence d'un "bug" lors de l'utilisation de filesearch avec
Windows XP. Merci également pour la solution du path que je ne connaissais
pas.



Merci du retour :-)

--
Cordialement,

Jacques.