Procédure incomprise

Bonjour à tous,

Je travaille sur des fichiers excel créés et mis à jour par des personnes avec qui je n'ai pas de contact. J'ai donc des problèmes pour l'appropriation des fichiers et des codes. Notamment avec une procédure qui est appelé dans pas mal de macro, avec "Call", et qui m'empêche d'exécuter ces macros car celle-ci ne "fonctionne pas".
J'espère que vous avez compris mon problème, je souhaiterez donc que quelqu'un arrive à m'expliquer ce que fait la procédure et pourquoi elle ne fonctionne pas:

Je précise que "FichierEstOuvert" est une fonction de type booléen qui renvoie True si le fichier est ouvert et False s'il est fermé.

Public Sub Ouvrir_Archives()
Dim Nom_fichier As String

10 nom_chemin = ActiveWorkbook.Path & "\"
Nom_fichier = nom_chemin & "fichier1.xls"

If FichierEstOuvert(Nom_fichier) = True Then
    Application.StatusBar = "Macro en cours, veuillez patienter..."
    Secondes = 1
    Début = Timer
    Fin = Début + Secondes
    Do Until Timer >= Fin
        DoEvents
    Loop
    GoTo 10
Else
    Workbooks.Open (nom_chemin & "\fichier1.xls")
    Workbooks("Archives_Suivi_Pieces.xls").Activate
    ActiveWorkbook.RunAutoMacros xlAutoOpen
End If

If FichierEstOuvert(Nom_fichier) = False Then GoTo 10

Application.StatusBar = False

End Sub

Bonjour, pour le workbook open il y un "\" de trop car il existe déjà dans nom_chemin

Et pour la rédaction j'écrirai plutôt ainsi puisque votre variable chemin + nom fichier existe déjà :

Workbooks.Open Filename:= Nom_fichier

à la place de 

Workbooks.Open (nom_chemin & "\fichier1.xls")

Personnellement j'aurai codé dans l'autre sens ( si fichier fermé alors on ouvre ) sinon le code continue...

çà évite les go to 10 les loops et compagnie.

Celà reste étrange quand même de voir tester si fichier ouvert = non ....

Puis refaire le même test si fichier ouvert = oui ???

Dans la logique : Test si fichier ouvert=non .. alors on ouvre et puis on continue le code.

pas besoin de retester si fichier ouvert=oui.

Je changerai tout le code par :

Public Sub Ouvrir_Archives()
Dim Nom_fichier As String  ' Déclaration de la variable Nom_Fichier et chemin du fichier

'Chemin du fichier = même chemin que le classeur actuellement ouvert
nom_chemin = ActiveWorkbook.Path & "\"
'Nom_fihier à ouvrir = chemin précédemment trouvé + "fichier1.xls"
Nom_fichier = nom_chemin & "fichier1.xls"

'CONDITION  Si fichier n'est pas ouvert alors ouvrir
If FichierEstOuvert(Nom_fichier) = False Then
Workbooks.Open Filename:=Nom_fichier
Workbooks("Archives_Suivi_Pieces.xls").Activate
End If

'Ensuite la procédure continue il devient inutile de tester l'inverse : FichierEstOuvert(Nom_fichier) = True
'Evidemment si dans le premier test le fichier n'était pas False alors c'est qu'il est True. pas besoin de vérifier.

ActiveWorkbook.RunAutoMacros xlAutoOpen

    Application.StatusBar = "Macro en cours, veuillez patienter..."
    Secondes = 1
    Début = Timer
    Fin = Début + Secondes
    Do Until Timer >= Fin
        DoEvents
    Loop
Application.StatusBar = False

End Sub

Ok super merci beaucoup Xmenpl, votre réponse résout mon problème et m'a permis en plus de comprendre votre raisonnement.
Comment puis-je utiliser cette procédure depuis une macro n'appartenant pas au même projet VBA ?

De plus, est-ce que vous savez ce que signifie ce bout de code ? j'ai du mal à le comprendre:

Dim fs, f ' On déclare les variables
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFile(nom_complet) ' retourne le nom du fichier
    f.Attributes = f.Attributes And Not 1 'ReadOnly
Rechercher des sujets similaires à "procedure incomprise"