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 Sub

2 - 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 String

etc.

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 Sub

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 ?

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.

Rechercher des sujets similaires à "chemin acces inconnues"