fonction de recherche

  • Auteur de la discussion darkspoilt
  • Date de début

darkspoilt

Expert
Bonjour,
J'aimerais savoir comment je peux faire une fonction de recherche de fichier dans un répertoire défini que avec le début du nom (la fin pouvant changer).
Merci d'avance
 

hoegarden31

Expert
regarde ici j'ai poster la reponse pour chercher des fichiers
 

zeb

Modérateur
C'est bien compliqué, BièreBlanche.
darkspoilt, regarde du côté de la fonction DIR.
 

hoegarden31

Expert
lol c peut etre complique mais sa marche :D
tu sais je suis pas un pro en VBA alors je fais comme je peux et si sa marche je garde
 

darkspoilt

Expert
J'ai écris cette fonction mais elle veut pas fonctionner je ne sais pa pourquoi

[cpp]Public Function Liste_Fichiers(aa As Integer, mm As interger) As String
Dim rep As String
Dim chemin As String
'chemin du répertoire par défaut
chemin = "D:\Eric\dossier_projets\TDB\PJPF\"
'obtient le premier fichier ou répertoire qui est dans "c:\"
rep = Dir(chemin)
'boucle tant que le répertoire n'a pas été entièrement parcouru
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If Not (GetAttr(chemin & rep) And vbDirectory) = vbDirectory Then
'test sur l'année
If Mid(rep, 1, 2) = aa Then
'test sur le mois
If Mid(rep, 3, 2) = mm Then
'ajoute le jour dans une liste
liste_fichier = "D:\Eric\dossier_projets\TDB\PJPF\PJPF 20" & aa & "-" & rep & ".xls"
MsgBox rep
End If
End If
End If

'passe à l'élément suivant
rep = Dir
Loop
End Function

[/cpp]
 

zeb

Modérateur
liste_fichier n'est pas défini.
(Le nom de la finction est Liste_Fichiers, si c'est ça que tu voulais.)
Tu as utilisé l'Option Explicit ?

TIPS: La réponse à cette question doit être "Oui, bien sûr. Je l'utilise en connaissance de cause, car je me suis renseigné.".
 

zeb

Modérateur
Tu utilises une boucle pour remplir la variable non définie liste_fichier. :sarcastic:

Mais à chaque itération, tu écrases son contenu. C'est bête. Soit tu recherches à tout ramener, dans ce cas, le code suivant serait judicieux :
Code:
liste_fichier = ""
const SEPARATEUR = vbCrLf ' par exemple 
Do While ..
       liste_fichier = liste_fichier & SEPARATEUR & "D:\Eric\dossier_projets\TDB\PJPF\PJPF 20" & aa & "-" & rep & ".xls"

Sinon, si le premier trouvé te convient, un petit break (Exit do) juste à la place du MsgBox (pour les besoins du test je suppose) ne serait pas con.
 

darkspoilt

Expert
bah je n'ai besoin que du premier car il y a que un fichier commençant de cette maniere en fait rep je veux juste utiliser pour avoir le nom de fichier complet le reste c defini est il n'ya que un fichier commencant comme cela ce sont de fichier de stats créer une fois par moi la date est contenue dans le fichier mais le jour n'est pas identique tous les mois
 

zeb

Modérateur
Unséparateursertàséparer.Sil'espacen'existaitpas,parexemple,ilseraitdifficiledelirelesphrases.

Admettons que ton répertoire contienne 3 fichiers, Fichier1.xls, Fichier2.txt et Fichier3.xls.

La fonction MA_FONCTION_DIR de type String renvoye TOUS ces noms de fichiers. Il faut bien les séparer :

Séparateur = "/"[fixed]Fichier1.xls/Fichier2.txt/Fichier3.xls[/fixed]
Séparateur = vbCrLf[fixed]Fichier1.xls
Fichier2.txt
Fichier3.xls[/fixed]Séparateur = aucun. (Stro nul)[fixed]Fichier1.xlsFichier2.txtFichier3.xls[/fixed]Séparateur = ", "[fixed]Fichier1.xls, Fichier2.txt, Fichier3.xls[/fixed]

Mais ça, c'est au cas où tu as plusieurs choses à rencoyer. On a vu que ce n'était pas le cas.

[strike]Bon BièreBlanche, tu as fini d'écrire des conneries ![/strike]Evidemment, si môssieur édite ces posts :D
vbCrLf = CarriageReturn & LineFeed = Chr(13)&Chr(10) [strike] <> Chaîne vide[/strike] :sarcastic:
 

hoegarden31

Expert
1 : je n'ecris pas des conneries :p
2 : si je demande un truc c parce que sa peut me servir
et comme tu l'a tres bien expliquer je peux m'en servir
 

darkspoilt

Expert
J'ai toujours l'erreur:
" L'expression sur clic entrée comme lparamètre de la propriété de type évènement est a l'origine d'une erreur. Type défini par l'utilisateur non défini. Le résultat de l'expression n'est pas le nom d'une macro définie par l'utilisateur [event procedure]. Une erreur a peut être été comise lors de l'évalutation d'une fonction,d'un évènement ou d'une macro"

voila ce qui me marque comme erreur il veut meme pas lancer l'application dès que je met le code
 

zeb

Modérateur
J'espère que tu ne cherches pas à avoir une fonction à paramètre pour gérer l'événement Click d'un bouton ?
 

Freeman23

Expert
Code:
If Mid(rep, 1, 2) = aa Then
            'test sur le mois
            If Mid(rep, 3, 2) = mm Then
                'ajoute le jour dans une liste
                liste_fichier = "D:\Eric\dossier_projets\TDB\PJPF\PJPF 20" & aa & "-" & rep & ".xls"
                MsgBox rep
                End If
        End If

Dites moi c'est quoi mm et aa ?
 

darkspoilt

Expert
Non non du tout mais j'ai trouver la solution c'était une erreur de syntaxe mais ma fonction renvoi rien du tout
 

darkspoilt

Expert
mm est l'année et mm le mois qui sont des chaines de caracteres

[cpp]Public Function Liste_Fichiers(aa As String, mm As String) As String
Dim rep As String
Dim chemin As String
'chemin du répertoire par défaut
chemin = "D:\Eric\dossier_projets\TDB\PJPF\"
Liste_Fichiers = ""
'obtient le premier fichier ou répertoire qui est dans "c:\"
rep = Dir(chemin)
'boucle tant que le répertoire n'a pas été entièrement parcouru
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If Not (GetAttr(chemin & rep) And vbDirectory) = vbDirectory Then
'test sur l'année
If Mid(rep, 1, 2) = aa Then
'test sur le mois
If Mid(rep, 3, 2) = mm Then
'ajoute le jour dans une liste
Liste_Fichiers = "D:\Eric\dossier_projets\TDB\PJPF\PJPF 20" & aa & "-" & rep & ".xls"

End If
End If
End If
'passe à l'élément suivant
rep = Dir
Loop
End Function
[/cpp]
 

hoegarden31

Expert
ben ta fonction renvoie "D:\Eric\dossier_projets\TDB\PJPF\PJPF 20" & aa & "-" & rep & ".xls" qui est stocker dans Liste_Fichier alors je suppose que tu apelle cette foction depuis un Sub
 

darkspoilt

Expert
oui c ca en gros je veux par exemple avoir le nom du fichier appeler "PJPF2007-070510.xls"
je peux récupérér la partie "PJPF2007-0705" et il y aura que une solution la fin varie selon les mois et les années
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 131
Messages
6 717 957
Membres
1 586 383
Dernier membre
potofeu
Partager cette page
Haut