XL 2016 Macro pour tester si des feuilles existent, si non les créer

Aliceploum

XLDnaute Nouveau
Bonjour à vous,

Je suis plus que débutante en macro, mais je bidouille des codes copiés collés ici où là….

J'ai fichier avec une feuille "Modèle" et une "Liste" de clients, et doit créer un onglet pour chaque client.
J'ai déjà une macro qui copie ma feuille "Modèle", en fonction de ma "Liste" et renomme la feuilles créée comme le nom du client...
Je voudrais pouvoir tester si une feuille existe déjà, si oui passer à la ligne de ma "Liste" suivante…., sinon la créer en copiant mon "Modèle" et en la renommant…
etc... etc...J'espère que je suis claire…. :) o_O

Voici la macro ...
Sub ajout_feuilles()
Dim nom As String, c As Range
For Each c In Range("Liste")
Worksheets("Modèle").Copy after:=Worksheets(ThisWorkbook.Sheets.Count)
With Worksheets(ThisWorkbook.Sheets.Count)
.Name = c.Value
If nom <> "" Then
Sheets.Add Count:=1, after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = nom
End If
End With
Set c = c.Offset(1, 0)
Next c
End Sub

Merci pour votre aide et bonne journée

PS: Pour moi c'est du chinois tout ce qui est écrit… j'espère bientôt faire une formation, je trouve ça trop cool :cool:
 

pierrejean

XLDnaute Barbatruc
Bonjour Aliceploum
Voici une fonction personnalisée qui te dira si une feuille existe
VB:
Function feuil_exist(Nom As String) As Boolean
On Error Resume Next
Set w = Sheets(Nom)
If Err.Number = 0 Then feuil_exist = True
On Error GoTo 0
End Function
 

Aliceploum

XLDnaute Nouveau
Bonjour PierreJean,

Merci pour votre retour...
Je place ça où dans ma macro…. au début je suppose?
Les "tabulations" ont de l'importance?
Merci encore
 

pierrejean

XLDnaute Barbatruc
Re

VB:
Sub ajout_feuilles()
Dim c As Range
For Each c In Range("Liste")
MsgBox (c.Value)
If c.Value <> "" And feuil_exist(c.Value) = False Then
Worksheets("Modèle").Copy after:=Worksheets(ThisWorkbook.Sheets.Count)
ActiveSheet.Name = c.Value
End If
Next c
End Sub
Function feuil_exist(Nom As String) As Boolean
On Error Resume Next
Set w = Sheets(Nom)
If Err.Number = 0 Then feuil_exist = True
On Error GoTo 0
End Function
 

Aliceploum

XLDnaute Nouveau
Merci,
ça marche… presque..
Je ne sais pas si on peu encore améliorer….
ça m'affiche une boite de dialogue avec le nom du client et je dois cliquer sur OK pour continuer, il n'y a moyen de "zapper" cette étape?
Actuellement, j'ai déjà 115 clients créés et si ma liste client évolue avec un nom qui s'intercale, je vais devoir cliquer 115 fois sur OK pour que ma nouvelle feuille se créée… de plus cette liste est toujours triée par ordre alphabétique, la nouvelle feuille créée ne se met pas à la place où elle se trouve dans cette liste….
Merci mille fois encore pour cette grosse avancée pour moi en tout cas...
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas