IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Erreur non prise en compte


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 140
    Par défaut Erreur non prise en compte
    Bonjour,

    J'ouvre un doc pdf via vb et j'aimerai avoir une erreur lorsque le document n'est pas trouvé ! Voilà ce que j'ai comme code mais ca ne marche pas (le manque de document n'est pas detecté par exemple )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    On Error GoTo TraiteErreur
    If InStr(Documentjoint, ".pdf") > Then 
       ShellExecute Me.hwnd, "open", document, vbNullString, chemin, 1
    end if
    TraiteErreur:
    MsgBox "DOCUMENT NON TROUVE !"
    Quand le fichier est présent aucun souci, c'est quand il est absent que je voudrai detecter son absence et envoyer un message d'erreur.
    Merci de vos remarques

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Qu'est censé faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If InStr(Documentjoint, ".pdf") > Then
    Relever si ".pdf" existe dans la chaine de caractères correspondant à Documentjoint ...

    D'où vient donc cette chaine de caractères ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 140
    Par défaut
    Documentjoint contient le lien complet du document à ouvrir. Ex: C\Mes documents\ fichier_voulu.pdf
    Je detecte simplement s'il s'agit d'un doc pdf et si oui, je l'ouvre avec ShellExecute

    Cela marche très bien, exepté que le manque de doc n'est pas detecté, signalé

  4. #4
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim sTemp as string
    sTemp=""
    on error resume next
    sTemp= dir(Documentjoint)
    on error goto 0
    if sTemp="" then
      MsgBox "DOCUMENT NON TROUVE !"
    else
      If InStr(Documentjoint, ".pdf") <>0 Then 
        ShellExecute Me.hwnd, "open", Documentjoint, vbNullString, vbNullString, 1
      else
         msgbox "Document joint non conforme"
      end if
    end if

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 140
    Par défaut
    Oui, merci bien Delbeke, c'est une bonne piste. Mais telle quelle, je ne detecterai pas les erreur liées à l'utilisation du lecteur pdf (je veux dire autre que l'absence du fichier).

    Avec word ou excel, par exemple, cela marche bien et la moindre erreur est bien detectée et genere donc le msgbox d'erreur.


  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Il te faut appeler alors la fonction ShellExecute en lui attribuant une valeur de retour ...

    Genre :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
     
    Public Enum EShellShowConstants
    	zouSW_HIDE = 0
    	zouSW_MAXIMIZE = 3
    	zouSW_MINIMIZE = 6
    	zouSW_SHOWMAXIMIZED = 3
    	zouSW_SHOWMINIMIZED = 2
    	zouSW_SHOWNORMAL = 1
    	zouSW_SHOWNOACTIVATE = 4
    	zouSW_SHOWNA = 8
    	zouSW_SHOWMINNOACTIVE = 7
    	zouSW_SHOWDEFAULT = 10
    	zouSW_RESTORE = 9
    	zouSW_SHOW = 5
    End Enum
     
    Private Const ERROR_FILE_NOT_FOUND = 2&
    Private Const ERROR_PATH_NOT_FOUND = 3&
    Private Const ERROR_BAD_FORMAT = 11&
    Private Const SE_ERR_ACCESSDENIED = 5 ' accès interdit
    Private Const SE_ERR_ASSOCINCOMPLETE = 27
    Private Const SE_ERR_DDEBUSY = 30
    Private Const SE_ERR_DDEFAIL = 29
    Private Const SE_ERR_DDETIMEOUT = 28
    Private Const SE_ERR_DLLNOTFOUND = 32
    Private Const SE_ERR_FNF = 2 ' Fichier non trouvé
    Private Const SE_ERR_NOASSOC = 31
    Private Const SE_ERR_PNF = 3 ' chemin inconnu
    Private Const SE_ERR_OOM = 8 ' dépassement de mémoire
    Private Const SE_ERR_SHARE = 26
     
    Private Sub Command1_Click()
      ShellEx "d:\blabla\essai.pdf" 'pour ouvrir, si possible, le fichier de ce chemin
    End Sub
     
     
    Public Function ShellEx(ByVal sFile As String, _
    	Optional ByVal eShowCmd As EShellShowConstants = zouSW_SHOWDEFAULT, _
    	Optional ByVal sParameters As String = "", _
    	Optional ByVal sDefaultDir As String = "", _
    	Optional sOperation As String = "open", _
    	Optional Owner As Long = 0) As Boolean
    	Dim lR As Long
    	Dim lErr As Long, sErr As String
    	If (InStr(UCase$(sFile), ".EXE") <> 0) Then
    		eShowCmd = 0
    	End If
    	On Error Resume Next
    	IR = ShellExecute(Owner, sOperation, sFile, sParameters, sDefaultDir, eShowCmd)
    	if (lR < 0) Or (lR > 32) Then
    		ShellEx = True
    	Else
    		lErr = vbObjectError + 1048 + lR
    	 Select Case lR
    			Case 0
    				lErr = 7: sErr = "Dépassement de mémoire"
    			Case ERROR_FILE_NOT_FOUND
    				lErr = 53: sErr = "Fichier non trouvé"
    			Case ERROR_PATH_NOT_FOUND
    				lErr = 76: sErr = "Chemin inconnu"
    			Case ERROR_BAD_FORMAT
    				sErr = "L'exécutable n'est pas valide ou est corrompu"
    			Case SE_ERR_ACCESSDENIED
    				lErr = 75: sErr = "Erreur/ accès au répertoire ou au fichier"
    			Case SE_ERR_ASSOCINCOMPLETE
    				sErr = "Ce type de fichier est sans association valable"
    			Case SE_ERR_DDEBUSY
    				lErr = 285: sErr = "Le fichier n'a pu être ouvert car en cours d'utilisation. Recommencez plus tard SVP."
    			Case SE_ERR_DDEFAIL
    				lErr = 285: sErr = "Le fichier n'a pu être ouvert car la transaction DDE a failli. Recommencez plus tard SVP."
    			Case SE_ERR_DDETIMEOUT
    				lErr = 286: sErr = "Le fichier n'a pu être ouvert (délai max dépassé). Recommencez plus tard SVP."
    			Case SE_ERR_DLLNOTFOUND
    				lErr = 48: sErr = "Impossible de trouver la DLL spécifiée."
    			Case SE_ERR_FNF
    				lErr = 53: sErr = "Fichier non trouvé"
    			Case SE_ERR_NOASSOC
    				sErr = "No application is associated with this file type."
    			Case SE_ERR_OOM
    				lErr = 7: sErr = "Mémoire épuisée"
    			Case SE_ERR_PNF
    				lErr = 76: sErr = "Chemin inconnu"
    			Case SE_ERR_SHARE
    				lErr = 75: sErr = "Violation de partage !."
    			Case Else
    				sErr = "Une erreur a surgi au moment d'essayer d'ouvrir ou d'éditer le fichier choisi."
    		End Select
     
    		MsgBox "Erreurr n° " & CStr(lErr) & Chr(13) & sErr, vbCritical
    		ShellEx = False
    	End If
    End Function
    dans cet exemple, la valeur de retour est IR .

    En te précisant que la fonction retourne une valeur < 32 en cas d'erreur et que l'on examine alors cette valeur pour connaître la raison de l'erreur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur Date non prise en compte
    Par priest69 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 23/02/2006, 23h46
  2. Installation SP2 + RAM non prise en compte
    Par laure_belette dans le forum Windows XP
    Réponses: 3
    Dernier message: 13/10/2005, 12h46
  3. [css] Feuille de style non prise en compte
    Par Neuromancien2 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 29/06/2005, 11h49
  4. [netbeans] Modifications non prises en compte
    Par nadass dans le forum NetBeans
    Réponses: 6
    Dernier message: 07/04/2005, 13h49
  5. Lecture de fichier - dernière ligne non prise en compte
    Par JulienPles dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 16/03/2005, 11h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo