Du cinéma avec Excel 2016
Dans le dernier article, nous avons soulevé un problème :
la macro « Movie » ne fonctionne que pour les versions d’Excel antérieures à 2016.
Remarque –
En fait, il manquait dans la rédaction originale de l’article précédent une commande
essentielle pour que le film fonctionne, même avec les versions d’Excel antérieures
à 20126, la commande Application.ScreenUpdating=True.
Cela a été corrigé a posteriori dans cet
article.
Mon collègue MVP Jon Peltier
a trouvé une solution pour ce type de situation : il faut utiliser la commande DoEvents qui,
si vous misez sur Internet les articles la concernant, n’est citée nulle part
comme ayant cet effet bénéfique dans l’animation cinématographique…
Le piège, c’est que cette commande seule ne suffit pas :
il faut exécuter au moins deux fois la commande pour que le cinéma fonctionne.
Si un lecteur trouve une explication cohérente à ce phénomène, je suis preneur
de son explication…
Voici donc la macro définitive, que nous associons au bouton
Cinéma :
Sub Movie()
For i = 1 To 400
Range("C2") = i
For j = 1 To 50
x = x + 12 ^ 2
Next j
DoEvents : DoEvents
Next i
End Sub
Exemples de
films en Excel
J’ai réalisé de nombreux modèles Excel dans lequel je faisais
du cinéma. En voici trois exemples pris dans les 20 dernières années, dans l’ordre
chronologique…
1. Simulation
des tapis roulants portant les bagages pour Aéroports de Paris. A titre
indicatif, il s’agissait alors d’un appel d’offres lancé par AdP, que j’ai
gagné et qui m’a valu ensuite des commandes de modèles de la part d’AdP durant
plus de 10 ans. Pour info, mon devis
était de 300 KF (c’était la dernière année avant les euros) et le second concurrent
le moins cher demandait 1,5 MF, soit cinq fois plus… J’étais le seul à proposer
une solution avec Excel…
2. Simulation
du fonctionnement d’une gare de péage en fonction des portes ouvertes et du
trafic attendu. Ce modèle a été vendu à plusieurs sociétés de péage. Le film
montrait dans le temps, pour les portes de péage ouvertes, le nombre de
véhicules en attente et le débit en une minute.
3. Simulation
du trafic routier dans une zone limitée. A titre indicatif, ce modèle de 50 K€ a
été amorti par le client en moins de 6 mois.
4.
Simulation du déplacement des piétons dans une aérogare.
1 Commentaire(s):
Bonjour,
Sub Movie()
For i = 1 To 400
Range("C2") = i
For j = 1 To 50
x = x + 12 ^ 2
Next j
DoEvents : DoEvents
Next i
End Sub
La fonction Timer() permet d'avoir l'heure au 1/100 de secondes.
Il sera donc facile de l'utiliser pour gérer le défilement.
Je ne suis pas un grand fan du ":". Une ligne, une commande.
Cela sera beaucoup plus simple en cas de relecture du code par un autre développeur.
By Benji, sur 2:51 PM
Enregistrer un commentaire
<< Accueil