[Animation Excel] Sapin de Noël
- yuji fukami
- il y a 5 jours
- 7 min de lecture
aperçu
Cette fois-ci, nous allons vous présenter une animation de Noël créée à l'aide d'Excel VBA.
La neige tombe sur la cellule, le dégradé de couleurs des lettres « Joyeux Noël » change lentement, et les lumières du sapin de Noël tournent et scintillent doucement : il en résulte une œuvre empreinte de mouvement.
Tout d'abord, veuillez regarder la vidéo 👇
RP
Cet article a été créé dans le cadre du calendrier de l'Avent 2025 de la communauté Discord « Excel-Fun.xls* ».
Il s'agit d'une communauté amusante et instructive pour les passionnés d'Excel et de VBA, alors rejoignez-nous !
↓"Lien de participation à Excel-Fun.xls*"

Explication technique (sapin de Noël)
Ce blog portera sur les points techniques suivants :
Principes de base de l'animation Excel
Animation de changement de couleur d'un texte en dégradé (Joyeux Noël)
Mécanisme d'effet de neige (utilisant le code existant)
agencement d'illumination du sapin de Noël
Exprimer le clignotement avec un effet de « flou » lumineux
Cet article résume des idées pour utiliser Excel comme un « canevas » pour créer des animations, plutôt que comme un « logiciel de tableur statique ».
1. Principes de base de l'animation Excel
Nous allons tout d'abord expliquer les bases de l'animation Excel en utilisant l'animation ci-dessous d'une forme circulaire en rotation et en déplacement.
La vidéo comporte un bouton de démarrage, un bouton « Lancer l'animation » et un bouton « Arrêter ». Lorsque vous appuyez sur le bouton « Lancer l'animation », la forme circulaire se met à tourner et lorsque vous appuyez sur le bouton « Arrêter », elle s'arrête.
Le code proprement dit est expliqué ci-dessous :

Comme le montre le schéma ci-dessus, le processus d'animation est divisé en trois étapes principales.
① Référence de forme et paramètres initiaux
Commencez par obtenir la forme circulaire que vous souhaitez déplacer (dans cet exemple, le nom est « Cercle »),
Définissez des paramètres tels que la position du centre de rotation, le rayon et la vitesse de rotation.
La valeur définie ici sera utilisée dans les calculs de coordonnées ultérieurs.
Cela détermine « quelle position sera le centre et de combien elle se déplacera ».
② Désactivez le déclencheur d'arrêt et lancez l'animation.
Pour contrôler l'animation,
Nous avons préparé un indicateur d'arrêt (booléen) appelé PriJudgeStop.
Début de l'animation : Faux
Si le bouton d'arrêt est enfoncé : Vrai
Voici comment activer et désactiver les animations.
En s'assurant que ce drapeau est faux au départ,
La boucle Do-Loop continuera de s'exécuter correctement.
③ Traitement d'animation à l'aide d'une boucle Do-Loop
Le processus principal consiste en une répétition de la boucle Do-Loop.
Chaque boucle correspond à une image.
Dans la boucle, les étapes suivantes sont exécutées dans l'ordre :
Ensuite, nous expliquerons en détail le processus d'animation à l'intérieur de la boucle Do.

Le traitement encadré en rouge sur la figure est effectué dans une boucle Do ~
formes en mouvement et en transformation
Réflexion sur l'écran (DoEvents)
Détermination du processus d'arrêt
Elle possède une structure simple qui se contente de répéter ces trois étapes encore et encore.
① Formes en mouvement et en transformation
Tout d'abord, au début de la boucle, nous modifions la position et la forme du cercle.
Ici, les valeurs de Gauche, Haut, etc. sont recalculées en fonction des résultats du calcul des coordonnées, et le « mouvement et la transformation pour l'image suivante » sont déterminés. (Nous n'entrerons pas dans le détail du calcul des coordonnées ici.)
② Réflexion sur l'écran (DoEvents)
Appelez ensuite la fonction DoEvents pour que les modifications soient visibles à l'écran.
L'animation n'est pas visible lorsqu'on se contente de modifier une valeur ; elle n'est perçue comme un « mouvement » que lorsque la valeur est modifiée, affichée à l'écran, modifiée à nouveau, et ainsi de suite, de manière répétée à grande vitesse.
Dans ce code, la fonction DoEvents est exécutée deux fois de suite afin d'améliorer la stabilité de l'affichage. Si le mouvement est saccadé, vous pouvez ajuster le timing d'affichage en augmentant ou en diminuant le nombre d'appels à DoEvents.
③ Déterminer s'il convient d'arrêter le processus
Enfin, nous vérifions si le bouton d'arrêt a été enfoncé.
Du côté du bouton d'arrêt, la valeur PriJudgeStop = True est définie lorsqu'on clique dessus.
Ce drapeau est vérifié à chaque itération de la boucle Do ~ Loop, et si PriJudgeStop = True, la boucle est quittée avec Exit Do et le processus d'animation est terminé.
Les trois étapes ci-dessus,
"Mouvement/Transformation → Reflet à l'écran → Arrêter le jugement"
En répétant ce qui précède dans une boucle Do, on obtient une animation continue sur la feuille Excel.
Dans ce travail, « Arbre de Noël », nous faisons simplement quelque chose de plus complexe avec « ① Déplacement et transformation de formes », mais la structure de l'animation Excel est la même que celle ci-dessus.
2. Changement de couleur du texte en dégradé
Le texte « Joyeux Noël » affiché en bas de l'écran est défini sur un dégradé (deux couleurs) à l'aide de la fonction « Remplissage de texte » d'Excel.
Tout d'abord, dans le volet de mise en forme à droite,
Type : Dégradé
Points de bifurcation : 2 (couleur de gauche, couleur de droite)
C'est identique à la mise en forme de formes normale, et aucun code VBA n'est utilisé.

2-1. Réécrire deux couleurs dégradées à partir de VBA
Durant l'animation, ces deux couleurs sont redéfinies à chaque image par VBA.
Dans le code, pour la forme du logo
TextFrame2 → TextRange → Font → Fill → GradientStops(1),(2).Color.RGB
Cela met directement à jour les valeurs RGB de la « couleur de gauche » et de la « couleur de droite » du dégradé en passant par une propriété légèrement plus approfondie.
GradientStops(1).Color.RGB ... Couleur de gauche
GradientStops(2).Color.RGB ... Couleur de droite
En substituant les couleurs calculées en fonction du numéro d'image actuel K à ces deux endroits, la couleur de l'ensemble du logo changera lentement.
2-2. Le calcul des couleurs est divisé en deux fonctions
Le calcul de couleur réel est
Cal_Logo Couleur 1
Cal_Logo Couleur 2
La structure interne des deux fonctions est quasiment identique.
Déterminez les plages minimales et maximales pour chacun des paramètres R, G et B.
Utilisez une fonction trigonométrique (Cos) pour parcourir l'intervalle
Enfin, renvoyez le résultat sous forme d'une seule couleur au format RGB (R, G, B).
Voici le processus.

Étant donné que le nombre d'images pour un cycle (20 dans ce cas) est spécifié, la couleur reviendra à sa couleur d'origine toutes les 20 images, créant ainsi un changement de couleur en boucle.
2-3. Les deux cycles de couleurs sont décalés de 1/3.
La seule différence entre Cal_Logo Color 1 et Cal_Logo Color 2 est que le rythme du cycle (vague) est décalé de 1/3 .
Couleur de gauche : Le cycle commence à 0
Couleur de droite : décaler le début du cycle de 1/3
En gardant cette image à l'esprit, la « phase » de la fonction trigonométrique a été légèrement modifiée.
Cela signifie:
La couleur sur le côté gauche commence à changer,
Un peu plus tard, la couleur de droite apparaît.
Cela crée un changement de couleurs, produisant un effet plus progressif , plutôt que deux couleurs qui changent simultanément.
3. Animation de neige
La neige qui tombe sur l'écran est basée sur l'animation Excel « Chute de neige » que j'ai créée précédemment.
Pour plus de détails, veuillez consulter le lien ci-dessous.
4. Disposition des illuminations du sapin de Noël
Les guirlandes lumineuses sont composées de plusieurs petites formes circulaires.
L'idée est,
Création d'un « cône » virtuel dans l'espace tridimensionnel
Les lumières sont réparties uniformément sur la surface du cône.
Projetez-le en coordonnées 2D sur une feuille Excel.
Voici les étapes.
Bien que le fichier Excel affiche une surface plane, les coordonnées 3D sont calculées et converties en « axe X (gauche et droite) » et « axe Y (hauteur) » pour créer un arbre illuminé en trois dimensions .
Ce calcul utilise des vecteurs tridimensionnels et des matrices de rotation, mais comme il serait trop long, j'omettrai les détails cette fois-ci.
5. Recréez le scintillement des lumières avec un effet de flou.
On peut obtenir un éclairage doux en utilisant l'effet Soft Edge, qui peut être appliqué aux formes.
Ceci se traduit par une modification progressive de la « taille du flou » au cours de l'animation.

Dans la mise en forme des formes d'Excel, chaque forme dispose d'une option appelée [Format de la forme → Flou → Taille] . Normalement, cette fonction ne définit qu'une valeur fixe, mais dans ce cas, la valeur de la taille du flou est modifiée dynamiquement par VBA .
En traitement d'animation, pour chaque image
Calculer le « niveau de flou » en fonction du numéro d'image actuel
Attribuez la valeur calculée à la propriété SoftEdge.Radius de la forme.
De cette manière, l'intensité du flou est ajustée progressivement.
La fonction utilisée est une fonction trigonométrique simple (fonction périodique), qui donne
Le moment où il paraît lumineux
Au moment où la lumière s'éteint doucement
Dès que la lumière revient
Cela crée un changement naturel et progressif de la lumière.
En animant directement le degré de flou, même une forme circulaire statique peut être amenée à ressembler à des LED clignotantes ou à des lumières scintillantes magiques .
résumé
Dans cette œuvre d'animation,
Expressions périodiques utilisant des fonctions trigonométriques
Changement de couleur du dégradé au fil du temps
Calcul de projection 3D vers 2D
Effets de flou de forme animés
Elle combine diverses expressions qui peuvent également être réalisées dans Excel , telles que :
Excel VBA peut être utilisé non seulement pour l'automatisation des processus métier, mais aussi pour la création d'œuvres et de performances interactives comme celle-ci.
Nous continuerons à vous présenter des créations amusantes utilisant VBA et des mécanismes techniques, alors restez à l'affût !


Commentaires