Utilisation de Delete dans une instruction VB
Aulane
Messages postés
95
Statut
Membre
-
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
- Just 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