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

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
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…