Erreur d'execution '9'

jflegros

XLDnaute Nouveau
Bonjour,
j'ai un code qui bloque sur la dernière ligne (RRRrrr!!) mais je n'arrive pas à comprendre ce qui cloche.
Si quelqu'un peut me donner un coup de main ce serait top..

Merci


Application.DisplayAlerts = False
Sheets("ROSTER").Activate

For Each Cel In Range("C1:I1")
nom = Format(Day(Cel.Value), "00") & "-" & Format(Month(Cel.Value), "00")
For Each Feuil In Worksheets
If Feuil.Name <> nom Then
If Feuil.Name <> "ROSTER" Then
If Feuil.Name <> "Tables" Then
If Feuil.Name <> "Modèle" Then
PasDedans = True: Exit For
End If
End If
End If
End If
Next
Next

If PasDedans = True Then ThisWorkbook.Sheets("Feuil").Delete
 

gilbert_RGI

XLDnaute Barbatruc
Re : Erreur d'execution '9'

Bonjour,

testez ce code

Code:
Sub test()

Application.DisplayAlerts = False
Sheets("ROSTER").Activate
For Each Cel In Range("C1:I1")
nom = Format(Day(Cel.Value), "00") & "-" & Format(Month(Cel.Value), "00")
For Each Feuil In Worksheets
If Feuil.Name <> nom Then
If Feuil.Name <> "ROSTER" Then
If Feuil.Name <> "Tables" Then
If Feuil.Name <> "Modèle" Then
PasDedans = True: Exit For
End If
End If
End If
End If
Next
If PasDedans = True Then Feuil.Delete: PasDedans = False
Next
End Sub
 

Misange

XLDnaute Barbatruc
Re : Erreur d'execution '9'

Bonjour
If PasDedans = True Then ThisWorkbook.Sheets("Feuil").Delete
cherche à déléter une feuille qui s'appelle FEUIL : si tu mets les guillemets, ce n'est plus une variable

If PasDedans = True Then ThisWorkbook.Sheets(Feuil).Delete

Mais tu peux accélérer ce code

Code:
Public Function IsInArray(ValeurCherchée As Variant, ArrayDeRecherche As _
   Variant) As Boolean
    If Not IsArray(ArrayDeRecherche) Then Exit Function
    IsInArray = InStr(1, vbNullChar & Join(ArrayDeRecherche, _
     vbNullChar) & vbNullChar, vbNullChar & ValeurCherchée & _
     vbNullChar) > 0
End Function

Sub VireLaFeuille()
Dim Tblo
Tblo = Array("truc", "bidule", "machin")
For Each feuil In Worksheets
 If not IsInArray(feuil.Name, Tblo) Then feuil.Delete
Next
End Sub

remplace dans la ligne Tblo= array... truc machin et bidule par les noms de tes feuilles

Code testé avec une version 2013. Si tu as un problème avec 2003, utilise cette version (moins rapide) de la fonction IsInArray :

Code:
Public Function IsInArray(ByRef ArrayDeRecherche as Variant, ByVal ValeurCherchée as Value) As Boolean 
Dim a 
For a = LBound(ArrayDeRecherche) To UBound(ArrayDeRecherche)    
   If ArrayDeRecherche(a) = ValeurCherchée then         
     IsInArray = True         
     Exit For    
   End If 
Next a 
End Function
 
Dernière édition:

Statistiques des forums

Discussions
312 726
Messages
2 091 384
Membres
104 902
dernier inscrit
fred46170