Déclencher une action sur une touche

Bonjour.

Je souhaite, si cela est possible, avoir des conseils pour résoudre le problème suivant.

Par l'appui sur une touche, je souhaite que le contenu d'un ensemble de cellules soit effacé sur toutes les feuilles d'un document Excel.

Je sais réaliser cela manuellement mais je souhaiterai éviter ces manipulations pour les futurs utilisateurs qui ne pratique pas EXCEL.

Explication détaillée sur la feuille "GESTIONS DES FICHES" du document joint.

Merci de vos conseils et explications.

Cordialement.

Paul

Bonsoir,

une proposition "au plus simple" :

Le code du bouton :

Sub RAZ()
    If MsgBox("En êtes vous sur ?", vbYesNo, "Suppression des données !") <> vbYes Then Exit Sub
    For i = 2 To Worksheets.Count
        Sheets(i).Range("B6:X36").ClearContents
    Next i
End Sub

@ bientôt

LouReeD

Merci beaucoup pour cette solution.

Comment as-tu fait pour mettre ce code sur le bouton?

Ensuite j'ai commis une petite erreur, la feuille TOTAUX ne doit pas être remise à zéro.

Je suppose que dans la boucle For/Next il me faut remplacer par 2 par 3 si j'ai bien compris.

J'ai pratiqué le langage BASIC il y plus une trentaine d'année mais aujourd'hui à 79 ans je n'ai plus la vivacité d'esprit pour apprendre le VBA bien que ça m'intéresse ne serait-ce que pour pouvoir résoudre ce genre de petit problème.

Curieux, j'essaye néanmoins de comprendre ce que tu as écris pour découvrir et progresser un peu.

Encore merci.

Cordialement.

Paul

Bonsoir,

Le code commenté :

Sub RAZ() ' nom de la procédure
    ' on affiche un message demandant si l'on est sur de vouloir le faire
    ' si la réponse est différente de vbYes [Oui] alors on quitte la procédure
    If MsgBox("En êtes vous sur ?", vbYesNo, "Suppression des données !") <> vbYes Then Exit Sub
    ' si l'on a pas quitté la procédure c'est que l'on doit tout effacer
    ' on lance une boucle sur l'ensemble des feuilles par l'intermédiaire de leur INDEX
    ' à savoir INDEX = 1 désigne la feuille se trouvant en place 1 en partant de la gauche, 2 la deuxième feuille, etc...
    ' C'est pourquoi j'ai déplacé la feuille du bouton pour qu'elle soit à gauche et on commence la boucle à 2
    ' comme vous l'avez deviné, si la feuille Totaux n'est pas à effacer il est simple de la mettre en deuxième position
    ' puis de commencer la boucle à 3. Le faire sur les INDEX permet de ne pas connaitre le noms des onglets
    ' si l'on ne connait pas le nombre de feuille, avec Worksheets.Count on récupère ce nombre
    For i = 2 To Worksheets.Count
        ' sur la feuille d'INDEX i on efface les données de la plage de cellules allant de B6 à X36
        Sheets(i).Range("B6:X36").ClearContents
    ' on boucle sur la feuille suivante tant qu'il en reste
    Next i
' fin de la procédure
End Sub

Une fois le code écrit, il suffit de faire un clic droit sur la forme (le shape ou autre) qui se trouve sur la feuille puis dans le menu contextuel qui s'ouvre de cliquer sur "affecter une macro", la choisir dans la fenêtre qui s'ouvre.

De mon côté j'ai commencé, il y a bien longtemps, avec du Basic, puis GFA Basic sur ATARI, puis VBA depuis 2009, mais je suis resté bloqué en 2014 !
Mais au vu de mes applications "jeu" et autre, même en 2014 on peut en faire des choses !

@ bientôt

LouReeD

Merci infiniment pour tes explications très claires.

Très bonne fin de soirée.

Bonne soirée à vous et n'hésitez pas !

@ bientôt

LouReeD

Rechercher des sujets similaires à "declencher action touche"