Common1dialog.Cancelerror

Résolu
Lokomass Messages postés 191 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 15 mai 2013 - 21 déc. 2009 à 10:29
Lokomass Messages postés 191 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 15 mai 2013 - 21 déc. 2009 à 11:21
Bonjour a tous,

Après avoir cherché sur divers forum, pour sortir de ma fonction (sans message d'erreur) lorsque le bouton annuler du commondialog est pressé, j'ai écrit cette fonction :


Private Function ExporterConf()
    Dim i As Integer
    Dim FileName As String
    Dim nStart As Long
    Dim Buffer As String
    
    On Error GoTo Experr
    
    CommonDialog1.InitDir = App.Path
    CommonDialog1.Filter = "Fichier Texte (*.txt)|*.txt"
    CommonDialog1.ShowSave
    CommonDialog1.FilterIndex = 1
    CommonDialog1.CancelError = True
    FileName = CommonDialog1.FileName
    
    
    'Corps de la fonction..........
    
    Exit Function
    
Experr:
    If Err <> 32755 Then
        Err.Clear
        Exit Function
    End If
    MsgBox "Fichier texte invalide ou port Com fermé"
    Exit Function
    
End Function



Le problème est que lorsque je click sur le bouton annuler, il ne va pas donc mon Experr et continu l'exécution de la fonction comme si j'avais fait "ouvrir" et j'avais choisi un fichier....

Je ne comprend pas, un peu d'aide serait la bienvenue :)

Merci

6 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 déc. 2009 à 10:39
tu active ton CancelError trop tard.
Il faut le faire avant le ShowSave (avant d'afficher la boite de dialogue, quoi)

idem pour le FilterIndex


Renfield - Admin CodeS-SourceS - MVP Visual Basic
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 déc. 2009 à 11:19
euh.... je sais ce que tu veux faire, mais relis ton code, tu fais tout le contraire :

tu demandes un Exit Function si ton erreur est differente de "Click sur le bouton annuler"

et tu affiches un Msgbox sinon : si click sur le bouton annuler

en clair, change <> en = !

Allez, ménage:
Private Function ExporterConf()
    Dim i As Integer
    Dim FileName As String
    Dim nStart As Long
    Dim Buffer As String
    
    On Error GoTo Cancelled
    With CommonDialog1
         .InitDir = App.Path
         .Filter = "Fichier Texte (*.txt)|*.txt|Tous les fichiers (*.*)|*.*"
         .CancelError = True
         .ShowSave
         FileName =.FileName
    End With
    
    'Corps de la fonction..........
    On Error Goto ExpErr
    
    Exit Function
Experr:
    MsgBox "Fichier texte invalide ou port Com fermé"
Cancelled:    
End Function


A noter que ton msgbox générqieu ne me convainc pas. Il serait préférable de vérifier s'il s'agit d'un port fermé, d'un fichier invalide ou d'un bug de codage

Renfield - Admin CodeS-SourceS - MVP Visual Basic
3
Lokomass Messages postés 191 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 15 mai 2013 1
21 déc. 2009 à 10:43
Alors cela fonctionne l'erreur est bien captée, seulement deuxieme petit soucis,

Il m'affiche :

"Fichier texte invalide ou port Com fermé"


Au lieu de faire un exit de la fonction.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 déc. 2009 à 11:00
Et ?

TU as pourtant bien mi un test qui dit que si l'erreur EST 32755 alors il doit afficher ce MsgBox ?

c'est donc bien ce qui est fait ^^

tu as fait :

Experr:
    If Err <> cdlCancel Then
        Err.Clear
        Exit Function
    End If
    MsgBox "Fichier texte invalide ou port Com fermé"
    Exit Function
End Function



Renfield - Admin CodeS-SourceS - MVP Visual Basic
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lokomass Messages postés 191 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 15 mai 2013 1
21 déc. 2009 à 11:09
J'ai peut etre mal fait alors, j'aurais voulu que lorsque quelqu'un clique sur Annuler, rien ne se passe rien ne s'affiche donc un => Exit Function. (Pour l'erreur 32755)

J'aimerai pas qu'il y ait le MsgBox, je sais pas si je suis clair.
Le messagebox sera pour une erreur autre que celle ci.
0
Lokomass Messages postés 191 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 15 mai 2013 1
21 déc. 2009 à 11:21
Merci bien de ton aide. Effectivement je me suis gourré avec le <>, je voulais que ça soit un égal. Pf quel nul.
Merci aussi pour le ménage.
0
Rejoignez-nous