Common1dialog.Cancelerror [Résolu]

Messages postés
191
Date d'inscription
jeudi 7 janvier 2010
Dernière intervention
15 mai 2013
- 21 déc. 2009 à 10:29 - Dernière réponse :
Messages postés
191
Date d'inscription
jeudi 7 janvier 2010
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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
21 déc. 2009 à 10:39
3
Merci
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

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de Renfield
Meilleure réponse
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
21 déc. 2009 à 11:19
3
Merci
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

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de Renfield
Messages postés
191
Date d'inscription
jeudi 7 janvier 2010
Dernière intervention
15 mai 2013
21 déc. 2009 à 10:43
0
Merci
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.
Commenter la réponse de Lokomass
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
21 déc. 2009 à 11:00
0
Merci
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
Commenter la réponse de Renfield
Messages postés
191
Date d'inscription
jeudi 7 janvier 2010
Dernière intervention
15 mai 2013
21 déc. 2009 à 11:09
0
Merci
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.
Commenter la réponse de Lokomass
Messages postés
191
Date d'inscription
jeudi 7 janvier 2010
Dernière intervention
15 mai 2013
21 déc. 2009 à 11:21
0
Merci
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.
Commenter la réponse de Lokomass

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.