XL 2016 vba boucle de suppression sur codename

Hervé

XLDnaute Barbatruc
Bonjour à tous :)

Seriez vous pourquoi ce code bug :

VB:
Application.DisplayAlerts = False
For i = 1 To Sheets.Count
    If Mid(Sheets(i).CodeName, 6) > 10 Then Sheets(i).Delete
Next i

je voudrais simplement supprimer les onglets dont la fin du codename est supérieur à 10

a plus
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Hervé,
Quand on créé une feuille le Codename est unique et ne change jamais.
Si on ajoute des feuilles et qu'on supprime, à chaque fois un nouveau Codename est crée.
Si bien que la liste des Codename peut avoir "des trous", par ex Sheets(6) existe mais pas Sheets(5).
Il vaut mieux donc passer par la scrutation de toutes les feuilles qui lui ne s'intéresse pas au Codename, avec :
VB:
Sub Supression2()
Application.DisplayAlerts = False
On Error GoTo Fin
For Each Feuille In Worksheets
    If Mid(Feuille.CodeName, 6) > 10 Then Feuille.Delete
Next Feuille
Exit Sub
Fin:
MsgBox Feuille & " n'existe pas "
End Sub
En PJ un ex avec trois boutons, un pour créer 10 feuilles, un pour votre macro, un pour la mienne.
 

Pièces jointes

  • Hervé.xlsm
    25.6 KB · Affichages: 6

Dranreb

XLDnaute Barbatruc
Bonjour.
Non, je ne sais pas. Il faudrait que je connaisse la valeur de Sheets(i).CodeName. Mettez un espion dessus. Assez probable quand même qu'il y ait autre chose que des chiffres à partir de sa position 6.
Peut être serait mieux If Val(Mid(Sheets(i).CodeName, 6)) > 10 Then Sheets(i).Delete
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16