Comparaison nom fichier excel avec valeur textbox [Résolu]

Signaler
Messages postés
35
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
7 avril 2008
-
Messages postés
35
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
7 avril 2008
-
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 !

est ce que quelqu'un pourrait m'aider ?

merci d'avance

8 réponses

Messages postés
35
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
7 avril 2008

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



    Set oFs = Application.FileSearch
    NomChercher = Dir(Chemin & "\*.xls")
    chaine = formulaire.TextBox1.Value
    
    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 !

merci pour votre aide
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Salut,

Ben commence par nous montrer le code que tu as fais....

A+
Exploreur

 Linux a un noyau, Windows un pépin
Messages postés
35
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
7 avril 2008

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



        fichier = Dir                                    ' recherche fichier suivant
    Loop
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
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
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Re,

Et oui Exploreur.....il y a plus court comme function ! Voir ici

A+
Exploreur

 Linux a un noyau, Windows un pépin
Messages postés
35
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
7 avril 2008

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 ?
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
14
Re,

Un mid ? Tu ne veux pas avoir l'extention du fichier...du moins tu ne t'en sers pas ?

A+
Exploreur

 Linux a un noyau, Windows un pépin
Messages postés
35
Date d'inscription
lundi 18 février 2008
Statut
Membre
Dernière intervention
7 avril 2008

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.