Bogue de macro, si on annule l'enregistrement

iStarOSX

XLDnaute Junior
Bonjour à tous.

Je fais encore une fois appel aux experts d'Excel !!!

Voila j'ai une macro dans un classeur qui me permet de sauvegarder une feuille de mon classeur dans un fichier ".txt" comme je le veux.
Si ce fichier existe déja, Excel affiche un message pour le signaler et demander si on veut le remplacer.
Je veux avoir cette fonctionnalité, sauf que si l'utilisateur choisit "Non", cela fait boguer
XL.

J'aimerais que si on choisit "Non" cela mette fin a la macro et en exécute une autre.

Voici ma macro :


Code:
Sub Export()

 Application.ScreenUpdating = False

'Protection :
ActiveWorkbook.Unprotect
Sheets("Types_a_Créer").Unprotect

    Sheets.Add.Name = "Export"
        Sheets("Types_a_Créer").Select
    Sheets("Types_a_Créer").Range("E12").Select
    Sheets("Types_a_Créer").Range(Selection, Selection.End(xlToRight)).Select
    Sheets("Types_a_Créer").Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("Export").Select
    Sheets("Export").Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        
    ChDir ThisWorkbook.Path
Application.ScreenUpdating = False
    Sheets("Export").Copy
    ActiveWorkbook.SaveAs Filename:=Range("A1").Value & ".txt", FileFormat:=xlCSV, CreateBackup:=False
    ActiveSheet.Range("A1").ClearContents
    ActiveWorkbook.Save
    Application.DisplayAlerts = False
    ActiveWindow.Close
        
    Sheets("Export").Delete
        
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
        
'Protection :
Sheets("Types_a_Créer").Protect, DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowSorting:=True, AllowFiltering:=True
    ActiveSheet.EnableSelection = xlUnlockedCells
ActiveWorkbook.Protect, Structure:=True, Windows:=False

 Application.ScreenUpdating = True
End Sub



Merci pour le coup de main.
 

kjin

XLDnaute Barbatruc
Re : Bogue de macro, si on annule l'enregistrement

Bonjour,
Code:
Sub Export()
Dim r$, f$, rng As Range, wb As Workbook, nom$
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With Sheets("Types_a_Créer")
    r = ThisWorkbook.Path & "\"
    f = .Range("E12") & ".txt"
    If Dir(r & f) <> "" Then
        If MsgBox(f & "existe déjà" & vbCrLf & "enregistrer ?", vbQuestion + vbYesNo) = 7 Then Exit Sub
    End If
    .Unprotect
    Set rng = .Range("E12").CurrentRegion
    Set wb = Workbooks.Add
    With wb
        With .Sheets(1)
            .Range("A1").Resize(rng.Rows.Count, rng.Columns.Count) = rng.Value
            .Range("A1").ClearContents
            .Name = "Export"
        End With
        .SaveAs r & f, FileFormat:=xlCSV, CreateBackup:=False
        .Close
    End With
    .Protect
End With
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
A+
kjin
 
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : Bogue de macro, si on annule l'enregistrement

Bonsoir Kjin:) le forum
oui kjin OK pour ta modif mais le problème ne vient pas de là puisque il a le bug lors de la réponse non , hors le msgbox n'existe pas dans sa macro, alors e, rajouter un OK mais pour moi cela ne va pas régler son souci, enfin je pense que!!!!
a+
papou:)
 

iStarOSX

XLDnaute Junior
Re : Bogue de macro, si on annule l'enregistrement

Bonjour et merci à vous de m'aider.

Paritec :
bah oui mais tu n'as pas mis la partie de macro qui gère le message oui non

J'ai pas de msg box puisque c'est un message de excel en lui même qui apparait au moment ou il veut enregistrer puisque le fichier existe déja.

Pour la macro de kjin, je ne la comprend pas trop (Je suis pas une bête du VBA !!!)

Il y a pas une solution pour que tout bêtement si l'utilisateur click sur "Non" cela arrête l’exécution de ma macro et ferme le classeur actif.

Merci en tout cas d'essayer de m'aider c'est sympa.

A+
 

kjin

XLDnaute Barbatruc
Re : Bogue de macro, si on annule l'enregistrement

Bonjour,
Code:
With Sheets("Types_a_Créer")
    r = ThisWorkbook.Path & "\"
    f = .Range("E12") & ".txt"
    If Dir(r & f) <> "" Then
        If MsgBox(f & "existe déjà" & vbCrLf & "enregistrer ?", vbQuestion + vbYesNo) = 7 Then Exit Sub
Cette partie du code vérifie que le fichier existe déjà ou non dans le répertoire spécifié
- s'il n'existe pas, la macro poursuit et enregistre normalement
- s'il existe une boite s'affiche pour demander si on enregistre, si on répond oui, on écrase l'ancien donc sinon on quitte la procédure
Pour le reste, je n'ai fait que reprendre ta macro avec les éléments que l'on a, c'est à dire...pas grand chose
A+
kjin
 

iStarOSX

XLDnaute Junior
Re : Bogue de macro, si on annule l'enregistrement

Merci kjn pour cette réponse

Je vais tester.

J'avais résolu mon problème en enlevant les alerte d'excel. Mais le problème c'est qu'il enregistre même si le fichier existe !!!

Donc je vais modifier mon code avec ta solution.

Encore merci pour ce coup de mains
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 922
Messages
2 093 644
Membres
105 775
dernier inscrit
assen