Erreur d'execution '9'

  • Initiateur de la discussion Initiateur de la discussion jflegros
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

jflegros

Guest
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
 
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
 
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
7
Affichages
450
Réponses
2
Affichages
528
Réponses
5
Affichages
575
Réponses
4
Affichages
737
Retour