Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 
Hello,

VB:
Sub HelloNouvelleFeuille()
Yo = Range("A2")
For Each Man In Worksheets
    If Man.Name = Yo Then MsgBox "cette feuille existe": Exit Sub
Next
Set Nouvelle = ThisWorkbook.Sheets.Add
Nouvelle.Name = Yo
End Sub
 
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
 
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
154
Réponses
5
Affichages
120
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…