génère un nouvel onglet

  • Initiateur de la discussion jim
  • Date de début
J

jim

Guest
Bonjour à tous,

Ma macro actuellement copie des données d'une feuille de calcul vers une nouvelle feuille de calcul, et la nommant avec le contenu d'un champ spécifique ("SelectSite" devient le nom "onglet").

Mon problème : si l'onglet n'existe pas, la manip se déroule correctement.
Si l'onglet existe, il y a un bug. En fait, je ne sais pas comment comparrer les noms d'onglets existants pour savoir si il existe déjà...

Ce que je voudrais, c'est que au moment de créer le nouvel onglet et le renommer, si un onglet existe déjà avec le même nom, qu'il y ai un message d'erreur affiché à l'attention de l'utilisateur, qui lui dise :
Un onglet existe déjà avec le même nom. Pouvez le remplacer en cliquant sur "remplacer" ou abandonner en cliquant sur "annuler". Avec 2 boutons :
-Remplacer
-Annuler


Ma macro qui est en brouillon...

Merci à tous


Sub Export_Save()
Dim ID, result, Worksheet
Dim e As Long
Dim onglet As String

'création d'un onglet pour le site selectionné
onglet = Range("SelectSite")

'vérifie que l'onglet n'existe pas déjà
ID = Worksheet.Names
result = StrComp(onglet, ID, 0)
If ID = onglet Then
MsgBox "Un onglet existe déjà avec le même nom. Pouvez le remplacer en cliquant sur remplacer ou abandonner en cliquant sur annuler."
Exit Sub
End If

Sheets.Add.Name = onglet
Sheets(onglet).Move After:=Sheets("tirage")

'copie du tirage en cours
Sheets("tirage").Select
e = Range("tirage!C8").Value
e = e + 10
Range("A10:H" & e).Select
Application.CutCopyMode = False
Selection.Copy
Range("A1").Select

Sheets(onglet).Select
Range("A1").Select
ActiveSheet.Paste
Cells.EntireColumn.AutoFit
Range("A1").Select

'enregistrement (CTRL + S)
ActiveWorkbook.Save
End Sub
 
Y

yeahou

Guest
Salut Jim, le forum

et voili avec un bouton ok, annuler

Cordialement, A+

Sub Export_Save()
Dim ID, result, Worksheet
Dim e As Long
Dim onglet As String

'création d'un onglet pour le site selectionné
onglet = Range("SelectSite")

'vérifie que l'onglet n'existe pas déjà
'ID = Worksheet.Names
'result = StrComp(onglet, ID, 0)
result = False
For Each ID In Sheets
If ID.Name = onglet Then result = True: Exit For
Next ID
If result = True Then
result = MsgBox("Un onglet existe déjà avec le même nom. Pouvez le remplacer en cliquant sur Ok ou abandonner en cliquant sur annuler.", vbOKCancel)
If result = 1 Then
Application.DisplayAlerts = False
Sheets("coucou").Delete
Application.DisplayAlerts = True
Else
Exit Sub
End If
End If

Sheets.Add.Name = onglet
Sheets(onglet).Move After:=Sheets("tirage")

'copie du tirage en cours
Sheets("tirage").Select
e = Range("tirage!C8").Value
e = e + 10
Range("A10:H" & e).Select
Application.CutCopyMode = False
Selection.Copy
Range("A1").Select

Sheets(onglet).Select
Range("A1").Select
ActiveSheet.Paste
Cells.EntireColumn.AutoFit
Range("A1").Select

'enregistrement (CTRL + S)
ActiveWorkbook.Save
End Sub
 
@

@+Thierry

Guest
Bonjour Jim, Yeahou, le Forum

J'avais commencé pour ma part à tout reprendre car il y a un peu de bazard dans ce code ! Surtout sur cette déclaration : "Dim ID, result, Worksheet " (!)

Donc, finalement j'ai tout refait et je passe par un UserForm pour avoir le message personnalisé avec "Remplacer" ou "Annuler", plus deux ou trois astuces avec l'utilisation de Variables Publics pour ce UserForm qui ne déclenche strictement aucune action, il n'est que Bollean... On notera aussi la suppresion de tous ces Selects...

Bon Appétit à tous et toutes
@+Thierry
 

Pièces jointes

  • USF_Message_Boolean_Public.zip
    24.7 KB · Affichages: 39

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 183
dernier inscrit
karelhu35