Incrémentation non voulue

Résolu
Heikro Messages postés 43 Statut Membre -  
Heikro Messages postés 43 Statut Membre -
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

  1. 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
  2. Heikro Messages postés 43 Statut Membre 8
     
    Parfait merci beaucoup !
    0