Probleme VBA avec une fonction

Bonjour à tous,

voilà, j'ai créé une petite fonction qui me permet de tester les fichiers associé à mon document Excel.

Elle test si le Pathname est vide ou indique un FALSE, si un indicateur PSW est bien contenu dans le nom du fichier, et surtout et là le bas blesse, si leDir(Pathname) est vide ou existant: c'est alors que systématiquement il déclare mon Dir() inexistant alors que le fichier existe bien.

Quelqu'un voit t'il une erreur dans mon code?

Merci d'avance de votre aide.

Function testParametresFichiers(chemin, PSW)

Dim test1, test2, test3 As Byte

            'Test présence d'un document"
            If chemin = "" Or chemin = False Then
            MsgBox "Veuillez sélectionner un fichier pour : " & PSW, vbInformation, "Cher professionnel"
            test1 = 0

            'Test de correspondance entre indicateur et nom de fichier
            ElseIf InStr(chemin, PSW) = 0 Then
            MsgBox "Les initiales du professionnel " & PSW & " et le nom de son fichier ne se correspondent pas. Veuillez vérifier l'un ou l'autre.", vbCritical
            test2 = 0

            'Test d'existence du fichier
            ElseIf Dir(chemin) = "" Then
            MsgBox "Fichier invalide. Veuillez sélectionner un fichier valide pour : " & PSW, vbCritical
            test3 = 0

            End If

If test1 = 0 Or test2 = 0 Or test3 = 0 Then     'Si l'un des trois test échoue
testParametresFichiers = 0                      'la fonction renvoie zéro
Else                                            'sinon
testParametresFichiers = 1                      'elle renvoie 1
End If
End Function

Edit Dan : modifié titre du sujet

Bonjour,

Normalement, une fonction retourne une valeur ou un tableau de valeurs donc pas de message ou autre comme action. Je verrai plutôt la fonction comme ceci :

Function testParametresFichiers(chemin, PSW) As String

    'Test présence d'un document"
    If chemin = "" Or chemin = False Then

        testParametresFichiers = "Paramètre fichier absent"
        Exit Function

    End If
    'Test de correspondance entre indicateur et nom de fichier
    If InStr(chemin, PSW) = 0 Then

        testParametresFichiers = "Initiales invalides"
        Exit Function

    End If

    'Test d'existence du fichier
    If Dir(chemin) = "" Then

        testParametresFichiers = "Fichier introuvable"
        Exit Function

    End If

    testParametresFichiers = "Fichier existant"

End Function

Salut Theophile

Perso, ta méthode de développement ne me gène pas, chacun ses besoins, il ne faut pas les changer.

Je pense savoir ou se pose le problème, c'est sur la chaine de ton chemin qui doit impérativement finir par un anti-slash

Voici ton code corrigé et qui fonctionne

Function TestParametresFichiers(chemin, PSW)
  Dim test1, test2, test3 As Byte
  ' Vérifier si chemin à un anti-slash à la fin pour le DIR
  If Right(chemin, 1) <> "\" Then chemin = chemin & "\"
  'Test présence d'un document"
  If chemin = "" Or chemin = False Then
    MsgBox "Veuillez sélectionner un fichier pour : " & PSW, vbInformation, "Cher professionnel"
    test1 = 0

    'Test de correspondance entre indicateur et nom de fichier
  ElseIf InStr(chemin, PSW) = 0 Then
    MsgBox "Les initiales du professionnel " & PSW & " et le nom de son fichier ne se correspondent pas. Veuillez vérifier l'un ou l'autre.", vbCritical
    test2 = 0

    'Test d'existence du fichier
  ElseIf Dir(chemin) = "" Then
    MsgBox "Fichier invalide. Veuillez sélectionner un fichier valide pour : " & PSW, vbCritical
    test3 = 0
  End If

  If test1 = 0 Or test2 = 0 Or test3 = 0 Then     'Si l'un des trois test échoue
    TestParametresFichiers = 0                      'la fonction renvoie zéro
  Else                                            'sinon
    TestParametresFichiers = 1                      'elle renvoie 1
  End If
End Function

A+

Rechercher des sujets similaires à "probleme vba fonction"