automatisation d'une tâche via une variable

yannick63430

XLDnaute Junior
bonsoir,

j'ai besoin de votre aide afin d'automatiser ma macro.
en fait j'ai dans les cellules B1 à B13 des chemins d'accès (C:\Users\ya...) et en C1 un chemin d'accès général et unique
j'ai une macro qui a besoin de se référencer à B1 pour "ouvrir" ce chemin d'accès et de l'autre le chemin d'accès en C1.
J'aimerai pouvoir mettre une variable avec du style "for to next" afin que la macro automatise la tâche pour B1&C1, puis B2&C1 jusqu'à B13&C1

pour ma macro, je me suis inspirer du travail de frederic.sigonneau et la voici :
Sub Deplacer2()

sSource = "C:\Users\ya...\*.pdf"
sDestination = "C:\Users\yannick\"
' "h:\temp\"

Set fs = CreateObject("Scripting.FileSystemObject")

fs.MoveFile sSource, sDestination

MsgBox "Terminé."
End Sub

j’espère avoir été clair.
Merci d'avance

Cordialement
yannick
 

Papou-net

XLDnaute Barbatruc
Re : automatisation d'une tâche via une variable

bonsoir,

j'ai besoin de votre aide afin d'automatiser ma macro.
en fait j'ai dans les cellules B1 à B13 des chemins d'accès (C:\Users\ya...) et en C1 un chemin d'accès général et unique
j'ai une macro qui a besoin de se référencer à B1 pour "ouvrir" ce chemin d'accès et de l'autre le chemin d'accès en C1.
J'aimerai pouvoir mettre une variable avec du style "for to next" afin que la macro automatise la tâche pour B1&C1, puis B2&C1 jusqu'à B13&C1

pour ma macro, je me suis inspirer du travail de frederic.sigonneau et la voici :
Sub Deplacer2()

sSource = "C:\Users\ya...\*.pdf"
sDestination = "C:\Users\yannick\"
' "h:\temp\"

Set fs = CreateObject("Scripting.FileSystemObject")

fs.MoveFile sSource, sDestination

MsgBox "Terminé."
End Sub

j’espère avoir été clair.
Merci d'avance

Cordialement
yannick

Bonsoir Yannick,

Sans pouvoir tester, je te propose de modifier ton code ainsi :

Code:
Sub Deplacer2()
sDestination = Range("C1")
For f = 1 To 13
  sSource = Range("B" & f)
  Set fs = CreateObject("Scripting.FileSystemObject")
  fs.MoveFile sSource, sDestination
Next
MsgBox "Terminé."
End Sub

Sauf erreur de ma part, ça devrait fonctionner.

Cordialement.
 

yannick63430

XLDnaute Junior
Re : automatisation d'une tâche via une variable

bonjour,

merci pour ton aide, ta macro marche du tonnerre.
cependant j'ai un souci si un de mes dossiers via le chemin d'accès ne contient pas de fichiers, la macro plante en s'arrêtant sur le dernier dossier.
donc je sais pas s'il est possible de lui dire que s'il n'y a pas de fichier correspondant (type pdf dans ma macro), il passe à la cellule suivante, etc... jusqu'à B13.

voici ma macro pour le moment :
Sub z()
Dim f As Integer

sDestination = Range("C1")

For f = 1 To 13
sSource = Range("B" & f) & "*.pdf"
Set fs = CreateObject("Scripting.FileSystemObject")
fs.MoveFile sSource, sDestination
Next

MsgBox "Terminé."

End Sub

et pour mes chemins d'accès :

I:\MODELE DOSSIER\D\
I:\MODELE DOSSIER\E\
I:\MODELE DOSSIER\F\
I:\MODELE DOSSIER\G\
I:\MODELE DOSSIER\H\
I:\MODELE DOSSIER\J\
I:\MODELE DOSSIER\L\
I:\MODELE DOSSIER\M\
I:\MODELE DOSSIER\N\
I:\MODELE DOSSIER\O\
I:\MODELE DOSSIER\P\
I:\MODELE DOSSIER\R\
I:\MODELE DOSSIER\S\


en espérant avoir été clair
merci d'avance

Cordialement
yannick
 

Papou-net

XLDnaute Barbatruc
Re : automatisation d'une tâche via une variable

bonjour,

merci pour ton aide, ta macro marche du tonnerre.
cependant j'ai un souci si un de mes dossiers via le chemin d'accès ne contient pas de fichiers, la macro plante en s'arrêtant sur le dernier dossier.
donc je sais pas s'il est possible de lui dire que s'il n'y a pas de fichier correspondant (type pdf dans ma macro), il passe à la cellule suivante, etc... jusqu'à B13.

voici ma macro pour le moment :
Sub z()
Dim f As Integer

sDestination = Range("C1")

For f = 1 To 13
sSource = Range("B" & f) & "*.pdf"
Set fs = CreateObject("Scripting.FileSystemObject")
fs.MoveFile sSource, sDestination
Next

MsgBox "Terminé."

End Sub

et pour mes chemins d'accès :

I:\MODELE DOSSIER\D\
I:\MODELE DOSSIER\E\
I:\MODELE DOSSIER\F\
I:\MODELE DOSSIER\G\
I:\MODELE DOSSIER\H\
I:\MODELE DOSSIER\J\
I:\MODELE DOSSIER\L\
I:\MODELE DOSSIER\M\
I:\MODELE DOSSIER\N\
I:\MODELE DOSSIER\O\
I:\MODELE DOSSIER\P\
I:\MODELE DOSSIER\R\
I:\MODELE DOSSIER\S\


en espérant avoir été clair
merci d'avance

Cordialement
yannick


Bonsoir Yannick,

Bien que ce ne soit pas très élégant, mais comme je ne me rappelle plus la méthode pour vérifier si un fichier existe, tu peux essayer de régler le problème de cette manière :

Code:
Sub Deplacer2()
[COLOR="Red"][B]On Error Resume Next[/B][/COLOR]
sDestination = Range("C1")
For f = 1 To 13
  sSource = Range("B" & f)
  Set fs = CreateObject("Scripting.FileSystemObject")
  fs.MoveFile sSource, sDestination
Next
MsgBox "Terminé."
End Sub

Le problème sera transparent (tu n'auras pas de message d'avertissement), mais la macro ne devrait plus bloquer. A tester.

Une recherche sur FileSystemObject devrait pouvoir nous éclairer davantage. Je note ce point dans mes tablettes.

Cordialement.
 

Statistiques des forums

Discussions
312 232
Messages
2 086 461
Membres
103 219
dernier inscrit
Akyrah