XL 2016 Vérifier si une feuille existe sinon la créer..

Pamela_Supermoto

XLDnaute Nouveau
Bonjour à tous,
J'ai besoin d'un petit coup de main svp sur:
Dans mon classeur, j'ai ma première feuille 'CANEVAS'.
A l'aide d'un bouton, j'ouvre un user form qui me demande un numéro de commande et si une feuille existe, il me l'ouvre sinon il la crée en copiant la feuille1 "CANAVAS".

Quel code me conseillez-vous?

merci beaucoup...
 

job75

XLDnaute Barbatruc
Puique On Error Resume Next existe je ne vois pas pourquoi on en aurait la phobie :
VB:
Function SheetsExist(nom): Dim s As Object: On Error Resume Next: Set s = Sheets(nom): SheetsExist = Not s Is Nothing: End Function
Ni pourquoi on aurait une peur bleue des boucles :
VB:
Function SheetsExist(nom)
Dim i&
For i = 1 To Sheets.Count
    If Sheets(i).Name = nom Then Exit For
Next
SheetsExist = i <= Sheets.Count
End Function
 

youky(BJ)

XLDnaute Barbatruc
Bonjour tous,
Faut encore tester la variable nom
si je lui mets comme nom d'onglet . . . 100/2
C'est pour mettre mon grain de sel au moulin hihi
Voici un code pour Pamela
Bruno
VB:
Private Sub btnValider_Click()
On Error Resume Next ' on gère les erreurs
Sheets(Me.tbxOf.Text).Activate 'on tente d'activer
If Err > 0 Then
Err.Clear
Sheets("CANEVAS").Copy After:=Sheets(1): ActiveSheet.Name = Me.tbxOf.Text
If Err > 0 Then
Application.DisplayAlerts = False
 MsgBox "Votre N° OF est erroné": Sheets(2).Delete
Application.DisplayAlerts = True
Exit Sub
Else
 MsgBox "Le nouveau rapport à bien été créé": Me.tbxOf = ""
End If
End If
'on ferme
    Unload Me
End Sub
 

patricktoulon

XLDnaute Barbatruc
re
excuse pour le retard mais pour ton test Staple1600 c'est pas bon
Bonjour le fil, Bonjour à tous

Tout d'abord, je m'excuse pour ce qui va suivre ;)
VB:
Function L_existence_précède_l_essence(OCB As String, Optional Dixit As String = "J-P Sartre") As Boolean
L_existence_précède_l_essence = Not WorksheetFunction.IsErr(Evaluate("'" & OCB & "'!A1"))

.........
Mais bon, le week-end est prolongé, alors je m'amuse dans mon VBE ;)

EDITION: Bonjour job75
re bonsoir Staple1600 c'est bien ce que je pensais : si le sheets est un xlchart il me dit qu'il n’existe pas

je crois que mapomme m'a refiler un casse tete

@job75 je prive personne de rien
perso les "on error..." si je peux les Eviter ca m'arrange elle peuvent masquer une autre erreur dans un code
après c'est le sport de trouver une solution hors du commun qui m'eclate juste du sport
 

Staple1600

XLDnaute Barbatruc
Re

Celle-ci fonctionne pour les feuilles, les graphiques, les feuilles MacroXL4 et les boites de dialogue Excel 5 ;)
VB:
Sub test_II()
MsgBox Existe(Sheets, "Toto")
End Sub
Function Existe(obj As Object, Nom As String) As Boolean
Dim o As Object
On Error Resume Next
Set o = obj(Nom): Existe = (err.Number = 0)
err.Clear
End Function ' credits: Peter Albert
 

fanch55

XLDnaute Barbatruc
Salut à tous,
Perso, j'utilise le code suivant pour tester toutes sortes de feuilles avec un nom complet ou générique :
VB:
Function IsFeuille(ByVal Cible As String, Optional FType As XlSheetType = xlWorksheet) As Boolean
Dim Elem    As Object
IsFeuille = False

  For Each Elem In ThisWorkbook.Sheets
'    Debug.Print Elem.Type, Elem.Name, Elem.CodeName
    Select Case True
        Case Elem.Type <> FType
        Case Elem.Name Like Cible:         IsFeuille = True
        Case Elem.CodeName Like Cible:     IsFeuille = True
    End Select
    If IsFeuille Then Exit For
  Next
 
End Function

Appel comme ci-dessous, attention au choix du générique ....
VB:
If IsFeuille("Ma Feuille") then ... <-- pour une feuille de nom Ma Feuille
If IsFeuille("Ma*", xlWorksheet) then ... <-- pour la première feuille commençant par Ma
If IsFeuille("*phiq*,xlChart) then .... <-- pour le premier graphique ayant phiq dans son nom
 

Discussions similaires

Réponses
4
Affichages
530

Statistiques des forums

Discussions
312 080
Messages
2 085 140
Membres
102 792
dernier inscrit
NKO