VBA déplacer fichier selon nom fichier pdf variable

Bonjour le forum,

Voilà j'ai un code qui fonctionne lorque le fichier est entièrement connu (nom fixe).
Mais lorsque j'essaie de déplacer un fichier dont le nom est variable, cela ne fonctionne pas :

Sub range()
Dim LHeure As String, LaDate As String

'horodatage du fichier

LHeure = Format(Time, "HMS")
LaDate = Format(Date, "dd" & "." & "mm" & "." & "yyyy")

Dim Chemin As String, NouveauChemin As String, Fichier As String
Chemin = "O:\"
NouveauChemin = "O:\110\"
Fichier = "ETAT DES PERIODES DES FRAIS PAR PERSONNE le " & LaDate & " " & LHeure & ".pdf" -> il me retrouve pas le fichier
Name Chemin & Fichier As NouveauChemin & Fichier
End Sub

Sauriez-vous pourquoi ce code me génère une erreur type 53? j'aurais bien une autre idée qui serait d'aller chercher le fichier dont le nom commence par ETAT DES PERIODES DES FRAIS PAR PERSONNE, mais je ne sais pas comment procéder.

merci ^^

Bonjour Lolopixx,

LaDate = Format(Date, "dd" & "." & "mm" & "." & "yyyy")

Pour les noms des fichiers les caractères . et \ sont à proscrire. Ils sont réservés au système d'exploitation.

Dans ton cas le système ne sait plus quel est le type du fichier. S'il n'y avait que le point final de .pdf cela passerait.

Essaye plutôt avec l'underscore _

Bonne continuation.

X Cellus bonjour,

Cela ne fonctionne toujours pas, code erreur 53, cependant je garde à l'idée ton explication afin d'adapter intelligemment mes prochains codes :)
j'ai testé donc ceci avec tes conseils:

Sub range()
Dim LHeure As String, LaDate As String

'horodatage du fichier

LHeure = Format(Time, "HMS")
LaDate = Format(Date, "dd" & "_" & "mm" & "_" & "yyyy")

Dim Chemin As String, NouveauChemin As String, Fichier As String
Chemin = "O:\"
NouveauChemin = "O:\110\"
Fichier = "ETAT DES PERIODES DES FRAIS PAR PERSONNE le " & LaDate & " " & LHeure & ".pdf"
Name Chemin & Fichier As NouveauChemin & Fichier
End Sub

mais game over encore ^^' 

A nouveau,

Le souci vient aussi de cette ligne ci-dessous.

Name Chemin & Fichier As NouveauChemin & Fichier

Tu cherches a renommer un ancien fichier Chemin & Fichier en utilisant le même nom que le nouveau fichier.

Différencie l'ancien par oldFichier (donc sans date et heure) et le nouveau par newFichier.

Car l'erreur 53 vient de l'ancien fichier non-trouvé en cherchant celui-ci avec son nouveau nom.

Je suppose que l'ancien ne possède pas les extensions de date et d'heure. Contrairement au nouveau nom.

Bonne continuation.

Re de nouveau,

C'est moi qui dois mal m'exprimer dsl encore.

Je souhaiterai déplacer le fichier en gardant le même nom.

Exemple : "toto (+variable heure et date).pdf" dans "O:\" doit rester "toto (+variable heure et date).pdf" dans "O:\110\"

je sais pas si c'est plus clair ? :) n'hésite pas à me le dire sans soucis,

merci encore,

Bonjour Lolopixx,

Je pensais que mon précédent message t'aurait fait réfléchir... Apparemment non!

Exemple : "toto (+variable heure et date).pdf" dans "O:\" doit rester "toto (+variable heure et date).pdf" dans "O:\110\"

Comment peux tu, sauf à utiliser l'ordinateur de Matrix, être capable d'avoir un fichier existant (donc plus ou moins ancien fichier) pouvant porter

le même nom que celui d''aujourd'hui, par exemple.

Dans ton code tu fournis la date du jour et l'heure afin de renommer et déplacer. Exemple toto24_07_20 103000.

Penses tu vraiment que le fichier passé porte la même date et même heure que le jour présent ou tu lances ton programme?

Même à la seconde près cela est impossible.

A suivre...

Bonjour,

Pour vérifier qu'un fichier existe, vous pouvez tester grâce à Dir().

Exemple :

Sub essai()
    If Dir("C:\Users\Classeur*") <> vbNullString Then
        'ton fichier existe et tu l'as trouvé
        MsgBox Dir("C:\Users\Classeur*")
    End If
End Sub

Ici, on va chercher si un fichier existe, dont le nom commence par "Classeur", dans le répertoire "C:\Users\"

Bonjour pijaku

Je te confirme que le test fonctionne ^^ donc cela veut dire qu'avec le test il le trouve bien. Comment puis-je faire pour enfin faire en sorte que maintenant que le fichier existe et est connu, alors range le aillerus?

merci beaucoup à toi,

A nouveau,

Et quel nom de fichier le test te donne t'il?

Voir le lien ci-contre: Propriété Name

Suite,

En retour ton code modifié.

Sub Deplace()
'Format heure en 3 duos de chiffre soit un nbre de 6 chiffres
LHeure = Format(Time, "HMS")
'Format date sans séparateur "/"
LaDate = Format(Date, "dd" & "_" & "mm" & "_" & "yyyy")
Chemin = "O:\": RechFich = "ETAT DES PERIODES*"
If Dir(Chemin & RechFich) <> vbNullString Then OldFich = Dir(Chemin & RechFich) else MsgBox("Non trouvé"): Exit Sub
NouveauChemin = "O:\110\"
Fichier = "ETAT DES PERIODES DES FRAIS PAR PERSONNE le " & LaDate & " " & LHeure & ".pdf"
'Change l'ancien fichier par sa nouvelle appellation.
Name OldFich As NouveauChemin & Fichier
End Sub

re X cellus,

Sub Deplace()
'Format heure en 3 duos de chiffre soit un nbre de 6 chiffres
LHeure = Format(Time, "HMS")
'Format date sans séparateur "/"
LaDate = Format(Date, "dd" & "_" & "mm" & "_" & "yyyy")

Chemin = "O:\Exact\_Library-1-Production\FINANCE\NDF power query report\": RechFich = "ETAT DES PERIODES DES FRAIS PAR PERSONNE le*"

MsgBox ("ok trouvé")

If Dir(Chemin & RechFich) <> vbNullString Then OldFich = Dir(Chemin & RechFich) Else MsgBox ("Non trouvé"): Exit Sub
NouveauChemin = "O:\Exact\110\Expenses-Prod\Archive"
Fichier = "ETAT DES PERIODES DES FRAIS PAR PERSONNE le " & LaDate & " " & LHeure & ".pdf"

'Change l'ancien fichier par sa nouvelle appellation.
Name OldFich As NouveauChemin & Fichier

End Sub

Avec les chemins (ancien et nouveau) complet cela me génère :

image image

Pourtant il existe bien un fichier ETAT DES PERIODES DES FRAIS PAR PERSONNE le .. ci-bas:

image

Bon...

Sub Deplace()
Dim LHeure As String, LaDate As String, Chemin As String, RechFich As String, OldFich As String, NouveauChemin As String, Fichier As String
'Format heure en 3 duos de chiffre soit un nbre de 6 chiffres
LHeure = Format(Time, "HMS")
'Format date sans séparateur "/"
LaDate = Format(Date, "dd" & "_" & "mm" & "_" & "yyyy")

Chemin = "O:\Exact\_Library-1-Production\FINANCE\NDF power query report\"
RechFich = "ETAT DES PERIODES DES FRAIS PAR PERSONNE le*"

If Dir(Chemin & RechFich) <> vbNullString Then 
   OldFich = Chemin & Dir(Chemin & RechFich)
Else
   MsgBox ("Non trouvé")
   Exit Sub
End If
NouveauChemin = "O:\Exact\110\Expenses-Prod\Archive\"
Fichier = "ETAT DES PERIODES DES FRAIS PAR PERSONNE le " & LaDate & " " & LHeure & ".pdf"

'Change l'ancien fichier par sa nouvelle appellation.
Name OldFich As NouveauChemin & Fichier

End Sub

Ne fonctionnera pas à coup sur si plusieurs fichiers commencent par :

ETAT DES PERIODES DES FRAIS PAR PERSONNE le

Ok il ne faut pas se rater dans la définition des variables forcément :)

Merci à toi Pijaku ça fonctionne !

Merci à X cellus pour le temps passé dessus également :)

A nouveau,

D'abord change ton

MsgBox ("ok trouvé")

Par

MsgBox (OldFich & " trouvé")

Afin de voir quel fichier est ciblé. Et si c'est bien celui que tu indiques en image.

Ensuite il manque un \ final à ton code. Il va concaténer Archive et le nom du fichier nouveau.

NouveauChemin = "O:\Exact\110\Expenses-Prod\Archive"

Pour ma part j'ai testé sur disque C:\ et cela est passé sans souci.

Rechercher des sujets similaires à "vba deplacer fichier nom pdf variable"