Sortir de la macro si annuler
moseca
Messages postés
32
Date d'inscription
Statut
Membre
Dernière intervention
-
moseca -
moseca -
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
'
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
'
A voir également:
- Vba sortir d'une macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Comment sortir du bios ✓ - Forum Windows
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Arreter une macro vba ✓ - Forum Excel
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!