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

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
 

D.D.

XLDnaute Impliqué
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
 

fanfan38

XLDnaute Barbatruc
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
 

patricktoulon

XLDnaute Barbatruc
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
 

D.D.

XLDnaute Impliqué

En une ligne !
J'adore !
 

patricktoulon

XLDnaute Barbatruc
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
 

mapomme

XLDnaute Barbatruc
Supporter XLD
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
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…