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".
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
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
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
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
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