Vérifier si onglet présent si pas le créer (Array)

Bonjour à tous,

J'aimerais que ma macro puisse vérifier si il existe bien 3 onglets dans mon fichier, si pas les créer

Je pars sur ce principe :

Onglets= Array("OngletA", OngletB", "OngletC")

Pour la suite j'ai trouvé ceci à adapter par rapport à ma demande mais je ne suis pas convaincu que ce soit la meilleur des solutions, je n'aime pas les "Vis cachés" style : On Error Resume Next

Function FExist(NomF As String) As Boolean ' test si la feuille existe 

On Error Resume Next 
FExist = Not Sheets(NomF) Is Nothing 

End Function 

if FExist( "Le nom de ta feuille") Then
   'Une feuille de ce nom existe déjà
   '...
  Else
   'La feuille n'existe pas
    '...
  End if

Merci pour votre aide.

Bonjour,

Un petit test rapide basé une une valeur PRESENCE définie sur False, qu'on fait passer à True si la feuille est rencontrée dans les boucles. Si c'est toujours faux à la fin de la boucle alors on sait que la feuille n'est pas présente, dans ce cas on la créé et on passe au nom suivant :

Sub EXISTE()
Dim FEUILLES(), I As Byte, FEUILLE As Worksheet, PRESENCE As Boolean
FEUILLES = Array("OngletA", "OngletB", "OngletC")
PRESENCE = False
For I = LBound(FEUILLES) To UBound(FEUILLES)
    For Each FEUILLE In Worksheets
        If FEUILLE.Name = FEUILLES(I) Then PRESENCE = True
    Next FEUILLE
    If PRESENCE = False Then
        Worksheets.Add After:=Worksheets(Worksheets.Count)
        ActiveSheet.Name = FEUILLES(I)
    End If
Next I
End Sub

Cdlt,

Merci Ergotamine

Ca marche comme je le veux, le seul souci c'est que si il y a un seul onglet manquant il ne va pas le créer

Bonjour,

En effet c'est de ma faute, j'ai mal placé ma valeur booleenne de PRESENCE excusez moi. J'ai testé sur tous les noms ensembles, mais pas séparés.

J'en ai profiter pour ajouter un exit for qui permet de sortir de la boucle dès lors qu'une feuille est trouvée et de passer au nom suivant pour accélérer le code :

Sub EXISTE()
Dim FEUILLES(), I As Byte, FEUILLE As Worksheet, PRESENCE As Boolean
FEUILLES = Array("OngletA", "OngletB", "OngletC")
For I = LBound(FEUILLES) To UBound(FEUILLES)
    PRESENCE = False
    For Each FEUILLE In Worksheets
        If FEUILLE.Name = FEUILLES(I) Then PRESENCE = True: Exit For
    Next FEUILLE
    If PRESENCE = False Then
        Worksheets.Add After:=Worksheets(Worksheets.Count)
        ActiveSheet.Name = FEUILLES(I)
    End If
Next I
End Sub

Cdlt,

Magnifique,

Merci à toi

Problème résolu et rapidement

Rechercher des sujets similaires à "verifier onglet present pas creer array"