Incrémentation non voulue

Résolu
Heikro Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   -  
Heikro Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

dans un extrait d'une macro, je veux créer une feuille "Résultats Stats" pour y insérer tous les calculs précédents. Or si je crée et nomme une feuille Résultats Stats alors qu'il en existe déjà une ça m'affiche un message d'erreur. Du coup j'ai voulu palier à ça :

Dim WS_Count As Integer
WS_Count = ActiveWorkbook.Worksheets.Count
For a = 1 To WS_Count
 If ActiveWorkbook.Worksheets(a).Name = "Résultats Stats" Then
  Application.DisplayAlerts = False
  Worksheets("Résultats Stats").Delete
  Application.DisplayAlerts = True
  WS_Count = WS_Count - 1
 End If
Next
Sheets.Add
ActiveSheet.Name = "Résultats Stats"


Observations :
- Si aucune feuille Résultats Stats n'existe, ça marche
- Si une feuille Résultats Stats existe ET qu'elle est en dernière position (Exemple : "Feuille 1" "BD" "Résultats Stats", ça marche également
- Par contre si une feuille "Résultats Stats" existe ET qu'elle n'est pas en dernière position, ça bug. J'ai affiché des MsgBox à l'intérieur de la boucle et du if pour voir la progression de mon compteur a et du WS_Count. Lorsque la boucle arrive à la feuille Résultats Stats, ça supprime bien celle-ci, le WS_Count reçoit bien WS_Count - 1. Mais sla boucle continue à progresser jusqu'au WS_Count initial.

Avez-vous des idées pourquoi ?

Merci d'avance, Heikro

2 réponses

Yoda
 
Bonjour,

Il suffit d'ajouter l'instruction Exit For dans le If...En dIf

 If ActiveWorkbook.Worksheets(a).Name = "Résultats Stats" Then
    Application.DisplayAlerts = False
    Worksheets("Résultats Stats").Delete
    Application.DisplayAlerts = True
    Exit For
 End If


A+
1
Heikro Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   8
 
Parfait merci beaucoup !
0