Code en VBA

Résolu
Bonjour,
je suis presque arrivé à faire quelque chose de correct avec les macro exel. mais je bloc la dessus.
gmao = Application.InputBox(Prompt:="n'oubliez pas d'extraire dans résultat le RMP05 " & "& gmao & ", Title:="entrez votre code GMAO")
Workbooks.Open Filename:="C:\Documents and Settings\ZINDIEN\Bureau\jeu flash\" & gmao & ".xls"

mon code fonctionne très bien sauf si le fichier n'existe pas. comment faire pour qu'il sorte de la macro sans poser de question ou simplement en disant que le fichier n'existe pas?
merci d'avance
Configuration: Windows XP
Internet Explorer 7.0

8 réponses

  1. Bonjour daiman,

    Pour sortir de la macro sans plantage, c'est simple :

    On Error Resume Next
    gmao = Application.InputBox(Prompt:="n'oubliez pas d'extraire dans résultat le RMP05 " & "& gmao & ", Title:="entrez votre code GMAO")
    Workbooks.Open Filename:="C:\Documents and Settings\ZINDIEN\Bureau\jeu flash\" & gmao & ".xls"


    Je cherche la solution pour afficher un message (j'ai peu pratiqué la gestion des erreurs, je m'intéresse donc à ton problème pour ma culture personnelle).

    Cordialement.
    1. Rebonjour daiman,

      J'ai trouvé, j'ai testé, ça fonctionne :
      gmao = Application.InputBox(Prompt:="n'oubliez pas d'extraire dans résultat le RMP05 " & "& gmao & ", Title:="entrez votre code GMAO")
      With Application.FileSearch
            .NewSearch
            .Filename = gmao & ".xls"
            .LookIn = "C:\Documents and Settings\ZINDIEN\Bureau\jeu flash\"
            .SearchSubFolders = False
            If .Execute = 0 Then
              MsgBox "Fichier inexistant !", vbOKOnly + vbExclamation
              Exit Sub
            End If
      End With
      Workbooks.Open Filename:="C:\Documents and Settings\ZINDIEN\Bureau\jeu flash\" & gmao & ".xls"

      Tu peux bien sûr modifier le code en lieu et place de
      MsgBox "Fichier inexistant !", vbOKOnly + vbExclamation
      mais il faut conserver
      Exit Sub
      sinon ça plante.

      J'espère que ça marchera aussi chez toi !

      Cordialement.
      1. bonjour daiman,

        On Error Resume Next
        ......

        If Err.Number <> 0 then
        MsgBox "Erreur: le ficher " & gmao & ".xls n'existe pas.",,"Message erreur"
        ' Ici ton code que doit éxecuter ton programme ex: Exit Sub
        End If

        bon courage

        ;o)
        1. Bravo Polux31,

          C'est beaucoup plus simple que ma version et ça fonctionne tout aussi bien.
          J'en prend note !

          Merci.

          Cordialement.
          1. Bonjour,
            merci sa fonctionne très bien. par contre je vais essayé de trouve unmoyen de rebouclé sur gmao = Application.InputBox(Prompt:="n'oubliez pas d'extraire dans résultat le RMP05 " & "& gmao & ", Title:="entrez votre code GMAO").
            de façon à ce qu'il demande un nom jusqu'au bon.
            mais vous pouvez m'aider aussi je suis pas contre.
            encore merci
            1. Dans ce cas tu fais une fonction qui retourne un booléen.

              Par exemple:

              Function OuvrirFichier() As Boolean

              On Error Resume Next
              gmao = Application.InputBox(Prompt:="n'oubliez pas d'extraire dans résultat le RMP05 " & "& gmao & ", Title:="entrez votre code GMAO")
              Workbooks.Open Filename:="C:\Documents and Settings\ZINDIEN\Bureau\jeu flash\" & gmao & ".xls"

              If Err.Number <> 0 then
              MsgBox "Erreur: le ficher " & gmao & ".xls n'existe pas.",,"Message erreur"
              OuvrirFichier = False
              Exit Function
              Else
              OuvrirFichier = True
              End If

              End Function

              // Appel de la fonction OuvrirFichier

              Sub Command1_click()
              Dim vrai As Boolean

              vrai = False
              While vrai = False
              vrai = OuvrirFichier
              Wend

              End Sub

              Ne pas prendre comme ça, c'est un exemple fait de tête ... a toi de l'adapter
              1. merci polux31,
                sa fonctionne.
                j'était loin d'y arrivé, je cherchais à faire une boucle............