Worksheet Delete

CyK

XLDnaute Junior
Est ce que quelqu'un peut m'expliquer cela

Dans un classeur je teste l'existence de certaines feuilles et je les efface j'ai d'abord essayé ceci :

Code:
    Dim Ws As Worksheet
    Application.DisplayAlerts = False
    For Each Ws In ActiveWorkbook.Sheets
    If Ws.Name = 'Expés 10 Jours Ouvrés'  Then
    Ws.Delete
    End If
    If Ws.Name = 'Stocks sur Expés' Then
    Ws.Delete
    End If
    If Ws.Name = 'Ruptures Expés' Then
    Ws.Delete
    End If
    Next
    Application.DisplayAlerts = True

Qui me retourne une belle erreur d'execution dont le code est incompréhensible si par contre je fais ceci :
Code:
    Dim Ws As Worksheet
    Application.DisplayAlerts = False
    For Each Ws In ActiveWorkbook.Sheets
    If Ws.Name = 'Expés 10 Jours Ouvrés' Or Ws.Name = 'Stocks sur Expés' Or Ws.Name = 'Ruptures Expés' Then
    Ws.Delete
    End If
    Next
    Application.DisplayAlerts = True

Tout fonctionne nickel !!!

Une idée sur l'explication de cette Erreur ?
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

Cela parait normal car si ta première ou ta deuxième condition est remplie il supprime ta feuille. Donc ta feuille n'existant plus il n'y a plus de ws.name d'où un bug lorsque tu arrive à la condition suivante If ws.name

Par contre dans ta 2ème macro il n'y a pas de problème tu fais le test qu'une fois

Si tu veux mettre des if à la suite il faut passer par des elseif

Code:
 For Each Ws In ActiveWorkbook.Sheets

    If Ws.Name = 'Expés 10 Jours Ouvrés'  Then

    Ws.Delete



   ElseIf Ws.Name = 'Stocks sur Expés' Then

    Ws.Delete



    ElseIf Ws.Name = 'Ruptures Expés' Then

    Ws.Delete

    End If

    Next

Bon courage
 

Discussions similaires

Réponses
7
Affichages
360

Membres actuellement en ligne

Statistiques des forums

Discussions
312 505
Messages
2 089 071
Membres
104 020
dernier inscrit
Mzghal