XL 2016 Si une feuille existe alors ... Sinon la créer

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Slip_Officiel

XLDnaute Nouveau
Bonjour à tous,

Je fais appelle à vous car je n'arrive pas à trouver le code VBA qui correspond à l'action suivante :

Si la feuille portant le nom de la case A2 existe, alors msgbox " cette feuille existe"
sinon, créer la feuille portant le nom de la case A2

Merci d'avance
 
Bonjour,
VB:
Sub temp()
 Dim i As Integer
 For i = 1 To Sheets.Count
   If Sheets(i).Name = Range("A2").Value Then
     MsgBox ("Cette feuille existe")
     Exit Sub
   End If
 Next
  Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = Range("A2").Value
End Sub

A+ François
 
Bonjour le fil

sinon
VB:
Sub test()
MsgBox SheetsExist("Feuil5")' le nom du classeur est optional 
End Sub

Function SheetsExist(nom, Optional classeur As String = "") As Boolean
    If IsError(TypeName(Evaluate("='[" & IIf(classeur = "", ThisWorkbook.Name, classeur) & "]" & nom & "'!A:B"))) Then Exit Function Else SheetsExist = TypeName(Evaluate(nom & "!A:B")) = "Range"
End Function
 
Bonjour le fil

sinon
VB:
Sub test()
MsgBox SheetsExist("Feuil5")
End Sub

Function SheetsExist(nom, Optional classeur As String = "") As Boolean
    If IsError(TypeName(Evaluate("='[" & IIf(classeur = "", ThisWorkbook.Name, classeur) & "]" & nom & "'!A:B"))) Then Exit Function Else SheetsExist = TypeName(Evaluate(nom & "!A:B")) = "Range"
End Function

En une ligne !
J'adore !
 
re
sinon sans boucle aussi mais avec gestion d'erreur post Call
et ca prend en charge les sheets graphiques
VB:
Sub test2()
    MsgBox SheetsExist2("Feuil5")
End Sub

Function SheetsExist2(nom, Optional classeur As String = "") As Boolean
On Error Resume Next
SheetsExist2 = True
Set x = Workbooks(IIf(classeur = "", ThisWorkbook.Name, classeur)).Sheets(nom)
If Err.Number > 0 Then SheetsExist2 = False: Err.Clear
End Function
 
Surtout pour tous vous saluer 🙂,

D'après l'idée de Patrick, en trois instructions:
VB:
Function SheetsExist(nom, Optional classeur As String = "") As Boolean
On Error Resume Next: SheetsExist = LCase(Workbooks(IIf(classeur = "", ThisWorkbook.Name, classeur)).Sheets(nom).Name) = LCase(nom): On Error GoTo 0
End Function
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
181
Réponses
2
Affichages
153
Réponses
5
Affichages
120
Retour