Utilisation de Delete dans une instruction VB
Aulane
Messages postés
84
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
J'ai créé un petit programme pour ne conserver que 2 feuilles sur un nouveau classeur Excel, donc effacer toutes celles qui le composent à partir de la 3e incluse, j'ai écrit à cet endroit:
With Classeur ’ Active le « nouveau classeur » créé, dans une boucle With
For i = 3 To .Worksheets.count ' active une boucle For dont le compteur (i) démarre à 3
.WorkSheets(i).Delete ’ Toutes les fois que la boucle rencontre une 3e feuille elle doit l'effacer
et c'est là que le bât blesse, Excel affiche une boîte de dialogue, demandant de confirmer l'effacement!
Comment éviter cette boîte et provoquer l'effacement immédiat?
D'autant que s'il y a beaucoup de feuilles a effacer ça prend du temps, et ce n'est pas le but recherché
et je termine la boucle For par
Next i
Mille fois merci à celui ou celle qui m'indiquera comment faire
Aulane
J'ai créé un petit programme pour ne conserver que 2 feuilles sur un nouveau classeur Excel, donc effacer toutes celles qui le composent à partir de la 3e incluse, j'ai écrit à cet endroit:
With Classeur ’ Active le « nouveau classeur » créé, dans une boucle With
For i = 3 To .Worksheets.count ' active une boucle For dont le compteur (i) démarre à 3
.WorkSheets(i).Delete ’ Toutes les fois que la boucle rencontre une 3e feuille elle doit l'effacer
et c'est là que le bât blesse, Excel affiche une boîte de dialogue, demandant de confirmer l'effacement!
Comment éviter cette boîte et provoquer l'effacement immédiat?
D'autant que s'il y a beaucoup de feuilles a effacer ça prend du temps, et ce n'est pas le but recherché
et je termine la boucle For par
Next i
Mille fois merci à celui ou celle qui m'indiquera comment faire
Aulane
A voir également:
- Utilisation de Delete dans une instruction VB
- Hiberfil.sys delete - Guide
- Utilisation chromecast - Guide
- Télécharger gratuitement notice d'utilisation - Guide
- Juste delete me - Guide
- Vb - Télécharger - Langages
2 réponses
Bonjour,
Exemple type :
Lupin
Exemple type :
Sub EffaceFeuille() Dim Boucle As Long, Limite As Long Application.DisplayAlerts = False With ActiveWorkbook Limite = .Worksheets.Count For Boucle = Limite To 3 Step -1 .Worksheets(Boucle).Delete Next End With Application.DisplayAlerts = True End Sub '
Lupin
re :
c'est pourquoi, il vous faut capturer la valeur de [ .Worksheets.Count ] dans une variable
Lupin
' Ici vous ne pouvez pas utiliser le propriété [ .Worksheets.Count ] ' puisque celle-ci est décrémenté à chaque instruction [ .Worksheets(i).delete ] ' For i = 3 To .Worksheets.Count ' Ajout de la propriété DisplayAlerts avec la valeur False pour stopper l'invite de confirmation Application.DisplayAlerts = False .Worksheets(i).delete Next i
c'est pourquoi, il vous faut capturer la valeur de [ .Worksheets.Count ] dans une variable
Sub EffaceFeuille() Dim Boucle As Long ' Ici la variable pour boucler -> équivalent à [ i ] Dim Limite As Long ' Ici la variable qui capture le nombre de feuille ' avant la première suppression Application.DisplayAlerts = False With ActiveWorkbook ' Capture du nombre de feuille Limite = .Worksheets.Count ' Boucle pour supprimer les feuilles en commençant par la dernière For Boucle = Limite To 3 Step -1 ' Ici la propriété [ .Worksheets.Count ] est décrémenté automatiquement .Worksheets(Boucle).Delete Next End With Application.DisplayAlerts = True End Sub '
Lupin
Merci pour la réponse et sa rapidité, mais à force de chercher, j'avais trouvé une solution, confortée par votre réponse.
Je vous mets ci dessous la façon dont j'avais rectifié le "tir", et ça marche, est-ce mieux ou moins bien que ce que vous me proposez?
For i = 3 To .Worksheets.Count
' Ajout de la propriété DisplayAlerts avec la valeur False pour stopper l'invite de confirmation
Application.DisplayAlerts = False
.Worksheets(i).delete
Next i
' Restauration de la valeur True à la propriété DisplayAlerts car VBA ne le fait pas automatiquement
Application.DisplayAlerts = True
Encore merci et peut être à bientôt
Aulane