Copier/coller fichier excel VBA

Résolu/Fermé
Marie - 31 mars 2008 à 20:36
 Marie - 1 avril 2008 à 14:48
Bonjour,

voilà j'essaye désespérement de savoir comment rechercher un fichier excel dans un répertoire, j'ai trouvé des bouts de codes mais lorsque je lance la recherche ca ne fonctionne pas. bon encore ca passons je trouverai bien l'erreur.

mais j'ai une question qui me chagrine, lorsque je trouve le fichier xls souhaité, il faut que je le copie en entier, et il faut que je le mette dans un nouveau dossier, en renommant le fichier "copie".
mon problème est que je ne sais pas qu'elle commande utiliser en VBA pour faire ca.

est ce quelqu'un pourrait m'aider à voir plus clair SVP

merci
A voir également:

6 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
31 mars 2008 à 22:35
bonjour

comment rechercher un fichier excel dans un répertoire
lorsque je trouve le fichier xls souhaité, il faut que je le copie


Fichier = dir(chemin complet répertoire)
do
if fichier = classeur_cherché
    Workbooks.Open chemin répertoire & fichier 
    Workbooks.SaveAs chemin nouveau répertoire & "copie" & fichier 
    Workbook.Close
    exit do
end if
dir
loop
0
Merci pour l'aide,

je vais essayer, je te tiens au courant,

@+
0
j'ai vraiment du mal à faire cette méthode.

en fait je n'arrive pas à atteindre mon dossier où se trouve mon fichier à copier.
j'ai mis de type ".xls", je suis passé par une "Application.FileSearch" ensuite avec des création d'objet avec crestaObject...
j'ai essayé plein d etruc mais je n'y arrive pas, je m'écroule sur les tonnes d'informations que je peux trouver sur le net!

mon cas concret est :

mon utilisateur rentre un semblant d'info dans un textbox, en fonction de cette info, le fichier xls correspondant doit être récupéré dans le répertoire qui lui reste le même dans tous els cas.
ce fichier xls doit etre copié et collé dans un autre dossier puis renommé par l'utilisateur et pas par mon code ce qui m'aurait arrangé!!

je suis désolée de vous importuner mais j'ai vraiment beaucoup de mal avec VBA, je suis débutante et le jonglage de fichier je crois que c'est pas encore ma tasse de thé.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
1 avril 2008 à 11:12
bonjour

je suis passé par une "Application.FileSearch"

Pourquoi pas mais pour ton souci, c'est tellement plus simple avec DIR.

Voici une macro complète testée qui fonctionne :
Public Sub recherche_fichier()
Dim nouveau As Variant
Dim cherche As String
Dim fichier As String
Dim chemin As String
chemin = "C:\fichiers\excel\"      '  à remplacer par ton répertoire
nouveau = "D:\mano"                '  à remplacer par ton nouveau répertoire
cherche = "classeur.xls"           '  à remplacer par ton classeur
fichier = Dir(chemin)              '  recherche premier 
Do
    If fichier = cherche Then      '  fichier trouvé
        Workbooks.Open chemin & fichier    '  fichier ouvert 
                                                      ' 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
    Exit Do  ' sortie procédure
    End If
    fichier = Dir                '  recherche fichier suivant
Loop
End Sub

Dis nous les soucis que tu peux avoir
0
c'est vrai que le Dir est plus facile ;-b

mon soucis se pose sur le lien de mlon chemin car mes données se trouvent sur le réseau, comment je peux récupérer le chemin ? car en faisant le copié collé en cliquant dessus ca me donne rien . c'est bien comme ca non ?

désolée de cette question bête mais je trouve ca bizarre
en tout cas merci pour tout !!!!!
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
1 avril 2008 à 11:26
bonjour

comment je peux récupérer le chemin ?

Si tu cherches ton fichier avec l'explorer tu peux bien faire ctrl+c sur le chemin du répertoire sélectionné ?
0
c'est bon j'ai plus d'erreur, en copiant et collant j'avais supr une lettre d'où le fait de ne pas trouver le chemin.

mais maintenant que je récupère bien le chemin lorsque je fais :
fichier = Dir(chemin)

lorsque je me mets en debugg pas à aps sur la var fichier le résultat est vide "", du coup je ne rentre pas dans la boucle.
pourtant en suivant le chemin j'ai bien un fichier xls

c'est normal ?
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
1 avril 2008 à 12:18
bonjour

Le chemin doit être écrit ainsi
chemin = "C:\fichiers\excel\"
nom complet du répertoire avec le "\" de fin mais sans le fichier.
0
j'ai mis chemin complet qui se termine par \*.xls\ car je cherche que les fichiers dont l'extension est xls c'est peut être ca mon pb.
non ?
0
Marie > Marie
1 avril 2008 à 14:45
voilà pour que ca récupère mes fichiers xls :

chemin = "chemin entier \" ' répertoire
nouveau = "chemin entier\" ' nouveau répertoire
fichier = Dir(chemin & "\*.xls")

maintenant ca fonctionne.

merci de ta patience !!

bonne aprem
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
1 avril 2008 à 14:43
bonjour

c'est peut être ca mon pb

eh bien oui !!

Pas de pitié si tu ne respecte pas la syntaxe :
Dir demande un chemin de répertoire : chemin = "C:\fichiers\excel\"

Un point c'est tout car ensuite on filtre sur ton fichier.

Cela ne fonctionne pas comme "Application.FileSearch" qui peut aussi balayer tous les sous répertoires alors que Dir ne le fait pas et je n'y puis rien !
0
merci
0