audreyOM
Messages postés35Date d'inscriptionlundi 18 février 2008StatutMembreDernière intervention 7 avril 2008
-
1 avril 2008 à 15:21
audreyOM
Messages postés35Date d'inscriptionlundi 18 février 2008StatutMembreDernière intervention 7 avril 2008
-
2 avril 2008 à 10:27
salut !
j'essaye de comparer le contenu d'un textbox renseigné par une personne avec un nom de fichier excel mais sans résultat.
en réalité voilà ma situation :
lorsque je clique sur un bouton cela récupère la valeur du textbox, va chercher les fichier XLs dans un dossier spécifié, pour ensuite faire une copie de ce fichier, le coller et renommer dans un autre dossier. ca c'est ok
le seul truc c'est que dans ma recherche, je n'utilise pas la valuer du textbox qui doit permettre de trouver le fichier xls aqéquate à la demande. de plus quand je fais ma recherche je ne récupère que le premier fichier xls du dossier.
j'ai donc un pb de condition que je ne sais pas comment écrire et une mauvaise boucle que je viens de virer !
audreyOM
Messages postés35Date d'inscriptionlundi 18 février 2008StatutMembreDernière intervention 7 avril 2008 2 avril 2008 à 10:27
bon pour les personnes que ca pourraient interresser, j'ai changé mon code de cette sorte et maintenant ca fonctionne. ca parcours mon bon dossier, récupére le fichier correspondant à la valeur du text box même si celle ci n'est à orthographiée entièrement, copie, colle, renomme le fichier xls copier dans un autre répertoire.
Dim NomChercher As String
Dim oFs As Variant
Dim NomFichier As String
Dim I As Integer
Dim nouveau As Variant
Const Chemin = "\chemin comple\
"
nouveau = "\chemin complet bis\
" ' nouveau répertoire
With oFs
.LookIn = Chemin
.FileType = msoFileTypeExcelWorkbooks
If .Execute > 0 Then
For I = 1 To .FoundFiles.Count
If LCase(Mid(NomChercher, 1, 6)) = LCase(Mid(chaine, 1, 6)) Then
Workbooks.Open Chemin & NomChercher ' fichier ouvert et demande du nouveau nom
nouveau = Application.GetSaveAsFilename(nouveau, fileFilter:="classeurs (*.xls), *.xls", Title:="Saisissez votre nouveau nom")
If nouveau <> False Then ' fichier saisi ?
ActiveWorkbook.SaveAs nouveau ' sauvegarde nouveau
MsgBox "Sauvé sous " & nouveau ' message
ActiveWorkbook.Close ' fermeture
Else
MsgBox "Classeur non sauvegardé"
End If
End If
NomChercher = Dir()
Next I
Else
MsgBox "Aucun fichier n'a été trouvé."
End If
End With
MsgBox "Fin de recherche"
en espérant que ca puisse aider certaines personnes !
audreyOM
Messages postés35Date d'inscriptionlundi 18 février 2008StatutMembreDernière intervention 7 avril 2008 1 avril 2008 à 15:43
tout d'abord merci, et ensuite voila mon code :
Dim nouveau As Variant
Dim cherche As String
Dim fichier As String
Dim chemin As String
chemin = "\chemin complet" ' répertoire
nouveau = "\chemin complet bis" ' nouveau répertoire
fichier = Dir(chemin & "\*.xls") ' recherche premier
chaine = renseignement_tranche.TextBox1.Value
Do
'If fichier Like "*chaine*" Then
If fichier <> "" Then
Workbooks.Open chemin & fichier ' fichier ouvert et demande du nouveau nom
nouveau = Application.GetSaveAsFilename(nouveau, fileFilter:="classeurs (*.xls), *.xls", Title:="Saisissez votre nouveau nom")
If nouveau <> False Then ' fichier saisi ?
ActiveWorkbook.SaveAs nouveau ' sauvegarde nouveau
MsgBox "Sauvé sous " & nouveau ' message
ActiveWorkbook.Close ' fermeture
Else
MsgBox "Classeur non sauvegardé"
End If
End If
Exit Do ' sortie procédure
cs_Exploreur
Messages postés4822Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 1 avril 2008 à 16:12
Re,
Bon, je ne sais pas si cela va répondre exactement à ta demande, mais cela va te mettre sur la voie je pense...
Regarde ce petit bout de code(modifié) :
Private Sub Command1_Click()
' On recherche tous les fichiers *Xls
If FindFilesFromDirectory("C:", "*.xls") Then
' ici ton traitement car ton fichier dans le rep existe
Else
MsgBox "N'existe pas !"
End If
End Sub
Public Function FindFilesFromDirectory(ByVal sDir As String, Optional ByVal sFilter As String = "*.*") As Boolean
'**************************************************************************/
' Fonction qui vérifie la présence de certains fichiers /
'**************************************************************************/
' Init function
FindFilesFromDirectory = False
If RightB$(sDir, 2) <> "" Then sDir = sDir & ""
' formate le chemin
Dim sFile As String
sFile = Dir(sDir & sFilter, vbHidden Or vbSystem)
If LenB(sFile) > 0 Then
' boucle sur les fichiers que l'on cherche
Do
' si le fichier existe(comparaison entre ce qui se trouve
' dans le répertoire et ton TextBox
If sFile = renseignement_tranche.TextBox1.Value Then
FindFilesFromDirectory = True
Exit Function
End If
sFile = Dir ' Nom du fichier
Loop Until LenB(sFile) = 0
End If
End Function
A+
Exploreur
Linux a un noyau, Windows un pépin
Vous n’avez pas trouvé la réponse que vous recherchez ?
audreyOM
Messages postés35Date d'inscriptionlundi 18 février 2008StatutMembreDernière intervention 7 avril 2008 1 avril 2008 à 16:26
oui ca m'a éclairci sur un point que j'ai modifié sur mon code de base et ca marche à condition que l'utilisateur rentre correctement le nom du fichier dans le textbox s'il veut que l'appli le trouve.
en essayant avec like cela ne fonctionne pas. vois tu se que je pourrais mettre à la place ? un mid ?
audreyOM
Messages postés35Date d'inscriptionlundi 18 février 2008StatutMembreDernière intervention 7 avril 2008 1 avril 2008 à 16:45
disons que pour l'utilisateur l'emplacement du fichier est invisible. en fonction de sa donnée pour moi la "tranche", l'appli va chercher le modèle xls correspondant à la tranche.
je pense qu'en imposant l'écriture de la tranche qui est unqiue je peux bien récup le bon fichier, c'est pour ca que le mid me tente bien et pour l'instant ca à l'air de marcher en faisant :
If LCase(Mid(fichier, 1, 2)) = LCase(Mid(chaine, 1, 2))
chaine étant ma valeur du textbox
il me reste plus qu'à mettre la boucle de parcours du dossier au bon endroit
chose pas facile pour le moment.