Suppression de feuilles de calcul dans une macro (Microsoft Excel)
La plupart des commandes Excel sont disponibles pour une utilisation dans vos macros, à condition que vous connaissiez les commandes VBA appropriées pour accomplir la tâche à accomplir. Vous pouvez utiliser la macro-commande suivante pour supprimer la feuille de calcul active:
ActiveSheet.Delete
Si vous émettez la commande dans votre macro, vous constaterez qu’Excel met la macro en pause et vous demande si vous êtes sûr de vouloir supprimer la feuille de calcul.
Lorsque vous cliquez sur Oui, la feuille de calcul est supprimée et la macro reprend.
L’idée derrière les macros, bien sûr, est d’automatiser de nombreuses tâches que vous effectuez régulièrement. S’arrêter et demander une confirmation peut être la solution la plus sûre, mais cela ne contribue pas beaucoup à la cause de l’automatisation. Si vous souhaitez que la feuille de calcul soit supprimée sans interruption, vous pouvez effectuer plusieurs opérations. Tout d’abord, vous pouvez utiliser la méthode SendKeys pour simuler le fait d’appuyer sur la touche Entrée, ce qui revient à cliquer sur Oui dans la boîte de dialogue de confirmation. Tout ce que vous avez à faire est d’ajouter une seule ligne avant la ligne qui supprime la feuille de calcul:
Application.SendKeys ("{ENTER}") ActiveSheet.Delete
SendKeys ne fait rien d’autre que bourrer les touches dans la mémoire tampon du clavier, comme si vous les aviez tapées à partir du clavier. Ainsi, la ligne SendKeys doit précéder la ligne Delete afin que la touche Entrée se trouve dans la mémoire tampon avant qu’elle ne soit nécessaire.
Tout développeur de macros de longue date peut signaler plusieurs problèmes potentiels liés à l’utilisation de SendKeys, le principal problème étant que vous ne pouvez pas l’utiliser pour spécifier que vous acceptez l’option Oui dans la boîte de dialogue de confirmation, et uniquement dans cette boîte de dialogue. Cependant, peu probable, si une autre boîte de dialogue apparaît (peut-être générée par un programme différent) au bon moment, la pression de la touche Entrée sera appliquée à cette boîte de dialogue, pas à celle que vous attendiez.
Une meilleure solution consiste à désactiver les capacités d’alerte d’Excel pendant une courte période. Considérez le code macro suivant:
Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True
Ce code désactive les alertes, supprime la feuille de calcul, puis réactive les alertes. Lorsqu’ils sont désactivés, Excel n’affichera pas la boîte de dialogue de confirmation, mais agira comme s’il avait été affiché et l’option par défaut (Oui) sélectionnée.
Il est important de se souvenir de la dernière ligne de code affichée ici. Si vous ne redéfinissez pas la propriété DisplayAlerts sur True, Excel n’affichera plus de messages d’alerte, même après la fin de la macro. Cela pourrait poser des problèmes, comme vous pouvez l’imaginer. Il est préférable de ne le définir sur False que pendant le court laps de temps nécessaire pour désactiver les alertes.
Même avec DisplayAlerts défini sur False, vous verrez toujours des messages d’erreur, le cas échéant. Par exemple, si vous exécutez le code ci-dessus et qu’il n’y a qu’une seule feuille de calcul dans le classeur, vous verrez toujours un message d’erreur. (Cela se produit parce que vous ne pouvez pas supprimer la dernière feuille de calcul d’un classeur.)
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (2293) s’applique à Microsoft Excel 97, 2000, 2002 et 2003.