XL 2010 Executer code si onglet introuvable

Niouf

XLDnaute Occasionnel
Bonjour,

J'ai une ligne de code qui fait référence à un onglet Excel, et lorsque l'onglet est introuvable, la macro bug.

Est-ce donc possible d'exécuter un code (Pour créer l'onglet manquant par exemple) au lieu de bugger la macro ?

Merci d'avance pour votre aide !
 

vgendron

XLDnaute Barbatruc
Hello

avec ce bout de code à inserer dans ta macro.. au bon endroit..

Code:
Sub Macro1()
  
   'nom de la feuille à créer si besoin  
    strNomFeuille = "Test"
'test de son existance
    FeuilleInexistante = IsError(Evaluate("='" & strNomFeuille & "'!A1"))
   
' si elle n'existe pas. il faut la créer. c'est comme pantashop.. :-) 
    If (FeuilleInexistante = True) Then
        Sheets.Add
        ActiveSheet.Name = strNomFeuille    
    End If
End Sub
 

Niouf

XLDnaute Occasionnel
Merci beaucoup messieurs !

Juste une question, que veut dire cette ligne de code concrètement :
Code:
     FeuilleInexistante = IsError(Evaluate("='" & strNomFeuille & "'!A1"))
J'ai du mal à comprendre la partie dans la parenthèse à vrai dire ...

Elle bug ma macro, et c'est difficile pour moi de la corriger sans la comprendre...
 

pierrejean

XLDnaute Barbatruc
Re

Elle signifie : évalue (ou calcule) le contenu de la cellule A1 de la feuille nommée strNomFeuille
Si cette feuille n'existe pas cela produit une erreur et FeuilleInexistante vaudra 1
Pour la corriger il suffit de l’écrire correctement !!!!
 

Niouf

XLDnaute Occasionnel
Donc j'ai faux quelque part ... ?
Code:
Private Sub CommandButton1_Click()
Dim robot As Integer
Dim semaine As String
Dim jour As String

robot = ActiveSheet.Range("AV1").Value
semaine = ActiveSheet.Range("BK1").Value
jour = ActiveSheet.Range("CK1").Value

Workbooks.Open "chemin" & robot & " fichier"
'nom de la feuille à créer si besoin
  'strnomfeuille = semaine
'test de son existance
  FeuilleInexistante = IsError(Evaluate("='" & semaine & "'!A1"))

' si elle n'existe pas. il faut la créer.
  If (FeuilleInexistante = True) Then
  'Call CreerFeuille_Clic
  MsgBox ("Feuille Inexistante")
  ElseIf (FeuilleInexistante = False) Then
  Worksheets(semaine).Select

  End If
End Sub
 

pierrejean

XLDnaute Barbatruc
Re

A tester:

Code:
Private Sub CommandButton1_Click()
Dim robot As Integer
Dim semaine As String
Dim jour As String
robot = ActiveSheet.Range("AV1").Value
semaine = ActiveSheet.Range("BK1").Value
jour = ActiveSheet.Range("CK1").Value
NomFichier = "chemin" & robot & " fichier"
Workbooks.Open NomFichier
  If Not FeuilleExiste(semaine, NomFichier) Then
    Call CreerFeuille_Clic
    MsgBox ("Feuille Inexistante")
  Else
     Workbooks(NomFichier).Worksheets(semaine).Select
  End If
End Sub

Function FeuilleExiste(NomFeuille, NomFichier)
On Error Resume Next
Set F = Workbooks(NomFichier).Sheets(NomFeuille)
   If Err.Number = 0 Then
     FeuilleExiste = True
   Else
      FeuilleExiste = False
   End If
On Error GoTo 0
End Function
 

Niouf

XLDnaute Occasionnel
Ecoutes bien, lorsque j'appui sur le bouton pour lancer la macro elle bug.
Lorsque je la lance en pas à pas avec F8 pour chercher d'où vient l'erreur, tout se passe bien ...

Sinon j'ai mis l'extension du fichier, et du coup la fonction seule fonctionne oui ^^
 

Niouf

XLDnaute Occasionnel
Oui j'ai bien compris la difficulté ...

Cette fonction n'est pour l'instant pas utilisée .
J'ai juste demandé un MsgBox pour voir si le code fonctionne.
Mais tu n'as pas d'explication sur le fait qu'en mode pas à pas je n'ai pas de bug ?
Le code fonctionne correctement, et mon MsgBox s'affiche ...

Code:
Private Sub CommandButton1_Click()
Dim robot As Integer
Dim semaine As String
Dim jour As String
robot = ActiveSheet.Range("AV1").Value
semaine = ActiveSheet.Range("BK1").Value
jour = ActiveSheet.Range("CK1").Value
NomFichier = "\\aerolia.corp\import\ME\PROJETS\Lean.Chantiers_Et_Projets\Manufacturing_ME\00-dossiers stagiaires\Apprenti Lean Assemblage - Clément MARGAT - Oct 2015 - Oct 2016\TRG\Essai Automatisation\TRG Erebus " & robot & " T11 SA.xlsm"
Workbooks.Open NomFichier
   If Not FeuilleExiste(semaine, NomFichier) Then
     'Call CreerFeuille_Clic
     MsgBox ("Feuille Inexistante")
   Else
      Workbooks(NomFichier).Worksheets(semaine).Select
   End If
End Sub

Function FeuilleExiste(NomFeuille, NomFichier)
 On Error Resume Next
 Set F = Workbooks(NomFichier).Sheets(NomFeuille)
  If Err.Number = 0 Then
  FeuilleExiste = True
  Else
  FeuilleExiste = False
  End If
 On Error GoTo 0
 End Function
 

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16