Prise en compte compte du BOUTON "ANNULER" des boîtes de dialogue Microsoft

Leskwal

XLDnaute Occasionnel
Bonjour le Forum

Voici donc mon problème :
Dans l'exemple joint, j'essaie de reproduire ce qui se passe dans mon fichier réel.

1 - Les personnes remplissent un tableau .

2 - Les données étant inscrites, l'utilisateur doit exporter ce fichier à un endroit précis en cliquant sur le Bouton "EXPORTATION".

3- Création d'un classeur temporaire (Variable WkBk) qui prendra le nom inscrit en $A$2

4 - La boîte de dialogue "Enregistrer sous" apparait.

5 - En cliquant, sur le bouton "enregistrer", un code de traitement est lancé (Non inclus dans ce fichier exemple) et
- Fermeture et Enregistrement du fichier des données exportées
- Retour au fichier d'origine

6 - La cellule $A$5 prend la valeur "1", indiquant que le fichier à été exporté.

Ma demande est double :
- lors de l'ouverture de la boîte de dialogue "Enregistrer Sous", je demande la création d'un classeur temporaire :
Variable WkBk

SI L'UTILISATEUR CLIQUE NON PAS SUR "ENREGISTRER" MAIS SUR : "ANNULER"

1 - Comment fermer le classeur ayant pour nom celui de la variable WkBk sans l'enregistrer ( WkBk.Close ?? )

2 - Et aussi que $A$5 reste à "0" indiquant que le fichier n'a toujours pas été exporté.

UN GRAND MERCI D'AVANCE POUR VOS RÉPONSES.
Cordialement

Pascal
 

Pièces jointes

  • EnregistrementXLD.xls
    117.5 KB · Affichages: 87

Leskwal

XLDnaute Occasionnel
Re : Prise en compte compte du BOUTON "ANNULER" des boîtes de dialogue Microsoft

Bonjour Pierrot93

Désolé de m'être mal exprimé

Je ne comprends pas cette remarque
pas tout compris et sans la macro d'enregistrement...

Je vais essayer d'être plus clair dans ma formulation ce soir...:D

Merci d'avoir répondu aussi rapidement

Pascal
 

Pierrot93

XLDnaute Barbatruc
Re : Prise en compte compte du BOUTON "ANNULER" des boîtes de dialogue Microsoft

Re,

d'après ceci, je supposais un code lié à l'événement "Workbook_BeforeSave"...
En cliquant, sur le bouton "enregistrer", un code de traitement est lancé (Non inclus dans ce fichier exemple) et

essaye tout de même ce que je proposais à 15h45...
 

Leskwal

XLDnaute Occasionnel
Re : Prise en compte compte du BOUTON "ANNULER" des boîtes de dialogue Microsoft

Re

En fait ma question peut se résumer ainsi:

Quand je clique sur "annuler" plutôt que sur "Enregistrer" est-ce que cela est considéré comme une erreur ou alors est-ce qu'il existe une commande correspondante au fait de cliquer sur annuler du type :

Code:
BOUTON_ANNULER_Click
alors sortir fermeture de la boîte de dialogue

De manière à ce que j'écrive quelque chose du type

Code:
 Si le bouton Annuler est cliqué alors
Je ferme le fichier sans l'enregistrer WkBk
Je remets l'index $A$5 àà "0

Ce que je souhaite donc c'est connaitre l'équivalent de la commande "BOUTON_ANNULER_Click" si elle existe. ;)

Un Grand MERCI

Pascal
 

Pierrot93

XLDnaute Barbatruc
Re : Prise en compte compte du BOUTON "ANNULER" des boîtes de dialogue Microsoft

Bonjour,

regarde ceci :
Code:
Dim o As FileDialog
Set o = Application.FileDialog(msoFileDialogSaveAs)
With o
    .FilterIndex = 2
    .Show
    If .SelectedItems.Count > 0 Then
        .Execute
    Else
        MsgBox "action annulée"
    End If
End With

A noter que la méthode "execute" peut être exécutée même si bouton "annuler" clické, celle-ci n'aura aucun effet... on pourrait donc codé aussi ainsi :

Code:
Dim o As FileDialog
Set o = Application.FileDialog(msoFileDialogSaveAs)
With o
    .FilterIndex = 2
    .Show
    If .SelectedItems.Count = 0 Then MsgBox "action annulée"
    .Execute
End With

bonne journée
@+
 

Leskwal

XLDnaute Occasionnel
Re : Prise en compte compte du BOUTON "ANNULER" des boîtes de dialogue Microsoft

Bonjour Pierrot93

Merci pour cette réponse.

Je vais la tester. :eek:

Un TRÈS GRAND MERCI

Entre temps j'avais pensé à un code du type :

Code:
Select Case 
    Case vbSave
        'procédure si click sur Sauvegarde
    Case vbCancel
        'procédure si click sur Annuler
End Select

Qu'en penses-tu ?

Bon dimanche

Pascal
 

Pierrot93

XLDnaute Barbatruc
Re : Prise en compte compte du BOUTON "ANNULER" des boîtes de dialogue Microsoft

Bonjour,

on peut également le faire ainsi :
Code:
Dim o As FileDialog
Set o = Application.FileDialog(msoFileDialogSaveAs)
With o
    .FilterIndex = 1
    If .Show = -1 Then
        MsgBox "OK, enregistrement"
    Else
        MsgBox "action annulée"
    End If
    .Execute
End With

si tu veux utiliser un "select case" :
Code:
Dim o As FileDialog
Set o = Application.FileDialog(msoFileDialogSaveAs)
With o
    .FilterIndex = 1
    Select Case .Show
        Case -1
             'procédure si click sur Sauvegarde
            MsgBox "OK, enregistrement"
        Case 0
             'procédure si click sur Annuler
             MsgBox "action annulée"
    End Select
    .Execute
End With

A noter, l'instruction "Excute" enregistrera le fichier ou pas en fonction du bouton "clické"...

bonne journée
@+
 

Discussions similaires

Réponses
3
Affichages
303

Statistiques des forums

Discussions
312 331
Messages
2 087 359
Membres
103 528
dernier inscrit
hplus