Chemin d'accès à inconnues
Bonjour,
Je viens vers vous car je rencontre de problème d'accès à un fichier que je dois ensuite copier et coller dans un autre répertoire.
Le nom du fichier tout comme certains paramètres du chemin sont des variables.
J'ai une erreur qui m'est signalée par rapport à la variable "Convocation" lorsque je vérifie son existence alors que la même opération fonctionne parfaitement avec la variable "CheminInitial".
Voici mon code :
Sub Fiche_Convoc()
Dim chemin, CheminInitial, CheminFinal As String
Dim i, j, k As Integer
Dim Nom_Fournisseur, Num_Commande, Code_Fournisseur As String
Dim sDir As String, sOld As String, sNew As String
Dim fso
Dim Convocation As String
Set fso = CreateObject("Scripting.FileSystemObject")
Windows("Macro Achats.xlsm").Activate
Sheets("Feuil1").Activate
For i = 6 To Range("B" & Rows.Count).End(xlUp).Row
If Cells(i, 11) = "SST" And Cells(i, 1) <> "dossier existant" And Cells(i, 10) = "" Then
Nom_Fournisseur = Cells(i, 7)
Num_Commande = Cells(i, 2)
Code_Fournisseur = Cells(i, 6)
CheminFinal = "U:\06_Dossiers_numeriques\HPR\" & Nom_Fournisseur & "\" & Num_Commande & "\"
sDir = "U:\08_SUIVI FOURNISSEURS\FOURNISSEURS\" 'Remplacer HPR par SST"
CheminInitial = sDir & "*_" & Code_Fournisseur
If Dir(CheminInitial, vbDirectory) <> "" Then
Convocation = CheminInitial & "\" & Num_Commande '& "\" & "Convoc*"
If Dir(Convocation, vbDirectory) <> "" Then
fso.CopyFolder Convocation, CheminFinal, True
Else
Convocation = sDir & "*\" & Num_Commande & "\" & "Convoc*"
If Dir(Convocation) <> "" Then
fso.CopyFolder Convocation, CheminFinal, True
End If
End If
End If
Next
End Sub
Je vous remercie par avance,
Daisy
Bonjour Daisy, bonjour le forum,
Sans vraiment répondre a ton problème, je constate deux problèmes dans ton code :
1 - Après identation du code, il semblerait qu'il manque un End If :
Sub Fiche_Convoc()
Dim chemin, CheminInitial, CheminFinal As String
Dim i, j, k As Integer
Dim Nom_Fournisseur, Num_Commande, Code_Fournisseur As String
Dim sDir As String, sOld As String, sNew As String
Dim fso
Dim Convocation As String
Set fso = CreateObject("Scripting.FileSystemObject")
Windows("Macro Achats.xlsm").Activate
Sheets("Feuil1").Activate
For i = 6 To Range("B" & Rows.Count).End(xlUp).Row
If Cells(i, 11) = "SST" And Cells(i, 1) <> "dossier existant" And Cells(i, 10) = "" Then
Nom_Fournisseur = Cells(i, 7)
Num_Commande = Cells(i, 2)
Code_Fournisseur = Cells(i, 6)
CheminFinal = "U:\06_Dossiers_numeriques\HPR\" & Nom_Fournisseur & "\" & Num_Commande & "\"
sDir = "U:\08_SUIVI FOURNISSEURS\FOURNISSEURS\" 'Remplacer HPR par SST"
CheminInitial = sDir & "*_" & Code_Fournisseur
If Dir(CheminInitial, vbDirectory) <> "" Then
Convocation = CheminInitial & "\" & Num_Commande '& "\" & "Convoc*"
If Dir(Convocation, vbDirectory) <> "" Then
fso.CopyFolder Convocation, CheminFinal, True
Else
Convocation = sDir & "*\" & Num_Commande & "\" & "Convoc*"
If Dir(Convocation) <> "" Then
fso.CopyFolder Convocation, CheminFinal, True
End If
End If
End If
'End If ' <------ ICI
Next
End Sub2 - Moins gênant mais quand tu déclares plusieurs variable dans la même ligne, tu dois spécifier le type de chacune d'entre elles. Sinon elle prendra le type Variant par défaut, le plus gourmand en mémoire...
Dim chemin As String, CheminInitial As String, CheminFinal As Stringetc.
Bonjour ThauThème,
J'ai corrigé la déclaration de variable et remis le "End If" manquant, merci
Je reste néanmoins confronté au même problème
Bonjour,
peux-tu préciser le code d'erreur et l'instruction qui provoque l'erreur ?
Bonjour,
C'est lorsque j'exécute la ligne :
If Dir(Convocation, vbDirectory) <> "" Then
J'ai l'erreur 52 (nom ou numéro de fichier incorrect)
Bonjour,
l'erreur est due à une erreur de syntaxe dans le paramètre de la commande dir
tu ne peux pas mettre d'astérisque avant le caractère "\",
pour corriger, il faut nous expliquer ce que tu cherches à faire en mettant cet astérisque à cet endroit-là dans la commande.
Re bonjour,
J'ai essayé d'exécuter jusqu'à avant "\Convoc*" mais j'ai là également une erreur.
L'astérisque est là pour aller chercher les fichiers commençant par "Convoc". ça peut être Convoc, Convocations ou Convocs. C'est noté différemment en fonction du dossier.
Le but recherché par ma macro est d'aller chercher, pour un numéro de commande donné (et un code fournisseur) le dossier de convocation si celui-ci existe et de le copier dans un autre fichier.
Le problème est que je ne sais pas à l'avance l'emplacement exact de ce fichier lorsqu'il existe. Je connais simplement des brides de chemins me permettant d'y remonter.
Pour chaque dossier fournisseur, j'ai une organisation différente.
Daisy
Bonjour,
une proposition de correction du code (que je n'ai pas pu tester)
Sub Fiche_Convoc()
Dim chemin, CheminInitial, CheminFinal As String
Dim i, j, k As Integer
Dim Nom_Fournisseur, Num_Commande, Code_Fournisseur As String
Dim sDir As String, sOld As String, sNew As String
Dim fso
Dim Convocation As String
Set fso = CreateObject("Scripting.FileSystemObject")
Windows("Macro Achats.xlsm").Activate
Sheets("Feuil1").Activate
For i = 6 To Range("B" & Rows.Count).End(xlUp).Row
If Cells(i, 11) = "SST" And Cells(i, 1) <> "dossier existant" And Cells(i, 10) = "" Then
Nom_Fournisseur = Cells(i, 7)
Num_Commande = Cells(i, 2)
Code_Fournisseur = Cells(i, 6)
CheminFinal = "U:\06_Dossiers_numeriques\HPR\" & Nom_Fournisseur & "\" & Num_Commande & "\"
sDir = "U:\08_SUIVI FOURNISSEURS\FOURNISSEURS\" 'Remplacer HPR par SST"
CheminInitial = sDir & "*_" & Code_Fournisseur
Ch = Dir(CheminInitial, vbDirectory)
If Ch <> "" Then
Convocation = sDir & "\" & Ch & "\" & Num_Commande & "\" & "Convoc*" 'on a trouvé un répertoire
If Dir(Convocation, vbDirectory) <> "" Then
fso.CopyFolder Convocation, CheminFinal, True
Else
Convocation = sDir & "\" & Ch & "\" & Num_Commande & "\" & "Convoc*" ' on a trouvé un fichier
If Dir(Convocation) <> "" Then
fso.CopyFile Convocation, CheminFinal, True
End If
End If
End If
End If
Next
End SubMerci pour les corrections dans mon code H2SO4 mais il y a quelque chose qui me chagrine...
Tu appelles Ch et sDir dans la variable Convocation alors que Ch est composé de sDir...
Est-ce normal ?
Je viens de tester le code mais il ne fonctionne pas malheureusement
Daisy_Hibou a écrit :Merci pour les corrections dans mon code H2SO4 mais il y a quelque chose qui me chagrine...
Tu appelles Ch et sDir dans la variable Convocation alors que Ch est composé de sDir...
Est-ce normal ?
le résultat de la commande dir("U:\08_SUIVI FOURNISSEURS\FOURNISSEURS\*_" & code_fournisseur,vbdirecory)
donne le nom du répertoire qui contient _ &code_fournisseur, mais ne donne pas le chemin complet.
pour le reste je suis désolé de ne pas pouvoir t'aider, ne pouvant pas tester.