Re : Macro qui tourne en boucle
- Pourrais tu stp me dire ce que signifie :
Application.ScreenUpdating = False
Application.EnableEvents = False
=> Est ce que c'est ce qui t'as permis d'éviter la redondance de la macro ?
J'ai égelement vu que tu as déclaré une variable
Public Mois As Byte
J'aimerais savoir ce que signifie "Public" & "Byte"
Bonsoir Philippe,
Application.ScreenUpdating = False gèle le rafraîchissement de l'écran pendant le déroulement de la macro. Outre le fait d'augmenter la rapidité d'exécution, cela évite également un sautillement désagréable pour les yeux.
Application.EnableEvents = False est l'instruction qui empêche la redondance de la macro qui génère dans bien des cas une boucle infinie. Effectivement, si cette procédure opère une modification dans la cellule à l'origine de son déclenchement, alors la macro reprend dès le début ce qui est assez simple à comprendre. Mettre cette instruction à
False empêche VBA d'intercepter tout nouvel événement lors du déroulement de la procédure.
Attention, dans les deux cas il ne faut pas oublier de remettre ces paramètres à True sinon bonjour les problèmes. Pour ma part, lorsque je les utilise, j'écris toujours la ligne de remise à
True dans la foulée puis j'insère mon code entre ces deux lignes.
La déclaration de la variable Mois est
Public, ce qui signifie qu'elle est accessible depuis n'importe quel module de code dans le projet. Par défaut, VBA la met à
Private, ce qui la rend accessible uniquement dans le module ou dans la procédure qui la contiennent. J'ai déclaré son type en
Byte, qui est un format numérique économe en mémoire vive mais qui limite ses valeurs de 0 à 255. Ce n'est pas un problème dans ce cas puisque les mois sont compris entre 1 et 12, donc on est largement dans la plage.
De mon côté, je n'ai toujours pas compris comment tu as créé ta liste déroulante au-dessus de la cellule C6, je ne la retrouve nulle part.
Voilà, espérant avoir répondu de façon claire et compréhensible.
Bonne fin de WE.
Cordialement.