Sortir de la macro si annuler

Fermé
moseca
Messages postés
32
Date d'inscription
samedi 19 avril 2014
Statut
Membre
Dernière intervention
17 mai 2022
- 19 avril 2014 à 22:44
 moseca - 20 avril 2014 à 17:51
Bonjour, j'ai un code qui permet d'enregistrer des données Excel en fichier csv. La macro me donne un interface ou je dois choisir le lieu où enregistrer ainsi que le nom du fichier. Il y a aussi le bouton annuler à côté, pour dire que l'opérateur peut sortir de l'enregistrement en faisant annuler.

Mon problème c'est je n'arrive pas à bien programmer le cas où l'opérateur fait annuler. J'ai ajouté if cancel <> true then exit sub ou if cancel <>false then exit sub mais soit la macro ne fiat rien soit ca s'exécute même si l'usager appuie sur cancel.

NB: la macro fonctionne très bien, elle fait ce que je lui demande, en créant un fichier csv. le problème c'ets juste que l'opérateur puisse annuler pour quitter l'interface d'enregistrement.

MERCI PAR AVANVCE !!

Voici mon code

Dim Workbook2 As Workbook
Dim Worksheet2 As Worksheet
Dim wksheet1 As Worksheet
Dim wkbook1 As Workbook
Dim fFolderName As String
Dim fAbsolutePathName As String
Dim fBaseName As Variant
Dim FSO As Object

Dim t As Integer
t = 10
Set FSO = CreateObject("Scripting.FileSystemObject")
fFolderName = FSO.GetParentFolderName(Application.GetSaveAsFilename())

fBaseName = ActiveSheet.Name & ".csv"
If fBaseName = False Then Exit Sub

fAbsolutePathName = fFolderName & "\" & fBaseName


Application.DisplayAlerts = False
For k1 = 1 To 1
Select Case k1
Case 1: Period = "pour Synchro"

End Select
Set wkbook1 = ThisWorkbook
Set wksheet1 = wkbook1.Worksheets(Period)
wkbook1.Save

wksheet1.Activate

While t < 95
If WorksheetFunction.IsErr(Range("E" & t)) Then
Range("A" & t & ":" & "O" & t + 3).ClearContents
End If
t = t + 1
Wend
t = 14
Set wkbook2 = workbooks.Add
wkbook2.Activate
Set wksheet2 = wkbook2.Sheets.Add(, Sheets(wkbook2.Sheets.Count), 1, xlWorksheet)
wksheet2.Activate
wksheet2.Cells.Clear
wksheet1.Range("A1:A100").Copy ' SELECTION DES DÉBITS TOTAUX
wksheet2.Range("a1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
wksheet2.Range("a1").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
wksheet2.Name = "Volume" 'CRÉATION DU CSV ET NOMINATION DU FICHIER
wksheet2.Select
wkbook2.SaveAs Filename:="\Volume_" & Period & ".csv", FileFormat:=xlCSVMSDOS, CreateBackup:=False

Set wksheet2 = wkbook2.Sheets.Add(, Sheets(wkbook2.Sheets.Count), 1, xlWorksheet)
wksheet2.Activate
wksheet2.Cells.Clear
' wksheet1.Range("A23:N45").Copy ' SELECTION DES LANE GROUP DATA: PHF_HV
' wksheet2.Range("a1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
' wksheet2.Name = "PHF_HV" 'CRÉATION DU CSV ET NOMINATION DU FICHIER
wksheet2.Select
' wkbook2.SaveAs Filename:=fFolderName & "\PHF_HV_" & Period & ".csv", FileFormat:=xlCSVMSDOS, CreateBackup:=False
' Set wksheet2 = wkbook2.Sheets.Add(, Sheets(wkbook2.Sheets.Count), 1, xlWorksheet)
' wksheet2.Activate
' wksheet2.Cells.Clear
' wksheet1.Range("A47:N69").Copy 'SELECTION DES LANE GROUP DATA : PEDS_BICYCLES
' wksheet2.Range("a1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
' wksheet2.Name = "Peds_Bicycles" 'CRÉATION DU CSV ET NOMINATION DU FICHIER
' wksheet2.Select
' wkbook2.SaveAs Filename:=fFolderName & "\Peds_Bicycles_" & Period & ".csv", FileFormat:=xlCSVMSDOS, CreateBackup:=False
wkbook2.Close
Next
' CSV Macro

Sheets("Bienvenue_").Select
'

2 réponses

f894009
Messages postés
16610
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
6 juillet 2022
1 646
20 avril 2014 à 07:30
Bonjour,

sortie sur annuler ou croix fermeture fenetre

Set FSO = CreateObject("Scripting.FileSystemObject")
fFolderName = FSO.GetParentFolderName(Application.GetSaveAsFilename())

If fFolderName = "" Then Exit Sub
0
Excusez-moi,
mais il y a un petit problème

En fait, je peux sauver le fichier n'importe ou sauf sur mon bureau, comme si il doit être sauvé dans un dossier.
C'est lié à cette ligne
wkbook2.SaveAs Filename:="\Volume_" & Period & ".csv", FileFormat:=xlCSVMSDOS, CreateBackup:=False

Cependant, si je mets " fFolderName" après le signe égal, c'est l'inverse, je peux sauver n'Importe où sauf dans mes documents (C).

Merci de votre aide!
0
Merci! ca marche.
0