Bouton annuler d'une boite de dialogue [Résolu]

Signaler
Messages postés
185
Date d'inscription
mercredi 26 janvier 2011
Statut
Membre
Dernière intervention
6 octobre 2020
-
Messages postés
185
Date d'inscription
mercredi 26 janvier 2011
Statut
Membre
Dernière intervention
6 octobre 2020
-
Bonjour, le forum
J’utilise le code ci-dessous trouvé sur le net et je l’ai adapté à mon projet. La macro fonctionne bien
Sub export()
Dim wb As Workbook, nm As Name
Dim NomNWs As String
Dim NomNWb As String
Dim Repertoire As String
Dim Ws As Worksheet
Dim madate

On Error GoTo errorHandler
Application.ScreenUpdating = False

Feuil2.Visible = xlSheetVisible
If Feuil1.Visible = True Then Feuil1.Visible = xlSheetVeryHidden
If Feuil5.Visible = True Then Feuil5.Visible = xlSheetVeryHidden
If Feuil6.Visible = True Then Feuil6.Visible = xlSheetVeryHidden
Feuil2.Activate

ActiveWindow.DisplayWorkbookTabs = True


MsgBox ("Indiquer le repertoire ou sera enregistré le fichier")
Repertoire = ChoixDossier 'demande a l'utilisateur de saisir le repertoire ou se trouve le fichier
Application.DisplayAlerts = False

madate = Format(Now, "dddd dd mmmm yyyy")
NomNWs = "Tb_Infos"
NomNWb = "Sauvegarde-Base-GRIE"

With ActiveSheet
.Unprotect Password:="Recap"
.Copy
.Protect Password:="Recap"
End With

With ActiveWorkbook
With Sheets("Base")
.Shapes.Range(Array("curseur", "Rectangle 2")).Delete '"Rectangle 3", "Rectangle 4"

.Range("A3").Select
ActiveWindow.FreezePanes = False
.Name = NomNWs 'ou ceci --> ThisWorkbook.Sheets("Base").Range("P1")
End With

Set wb = ActiveWorkbook
'Suppression des noms exportés dans le nouveau classeur
For Each nm In wb.Names
nm.Delete
Next nm

.SaveAs Repertoire & "\" & NomNWb & "-" & version & " " & madate & ".xlsx"
.Close
End With

Feuil1.Visible = xlSheetVisible 'laisser toujours en premier !
Feuil2.Visible = xlSheetVeryHidden
Feuil3.Visible = xlSheetVeryHidden
Feuil4.Visible = xlSheetVeryHidden
Feuil5.Visible = xlSheetVeryHidden
Feuil6.Visible = xlSheetVeryHidden
Feuil1.Activate
Feuil1.Range("H17").Select



Application.DisplayAlerts = True


Exit Sub
errorHandler:
Application.ScreenUpdating = True
End Sub


Cela m'affiche une boite de dialogue pour sélectionner un dossier ou sera la feuille exportée. J'aimerai pouvoir gérer le bouton « annuler » de cette boite de dialogue, pour qu'il annule l'action.
Car la macro s’exécute comme si rien n’est fait.
Merci d'avance.

4 réponses

Messages postés
9755
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
10 octobre 2020
1 078
Bonjour,
Si j'ai bien compris vous voulez arrêter le code si aucun choix de répertoire...!
Donc, ajouter la ligne de code en jaune.

Messages postés
9755
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
10 octobre 2020
1 078
Bonjour,
En essayant votre code , à aucun moment une boîte de dialogue s'ouvre....!
Pas possible de donner une réponse dans se cas...!
Messages postés
185
Date d'inscription
mercredi 26 janvier 2011
Statut
Membre
Dernière intervention
6 octobre 2020
3
Bonjour Le pingou

tu as raison j'ai oublié la fonction choix de dossier
La voici:
Function ChoixDossier()
If val(Application.version) >= 10 Then
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = ActiveWorkbook.Path & "\"
.Show
If .SelectedItems.Count = 1 Then
ChoixDossier = .SelectedItems(1)
Else
ChoixDossier = ""
End If
End With
Else
ChoixDossier = InputBox("Répertoire?")
End If
End Function


Merci
Messages postés
185
Date d'inscription
mercredi 26 janvier 2011
Statut
Membre
Dernière intervention
6 octobre 2020
3
Merci bien le Pingou

Je fais et je comprends.