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

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