Monsieur Excel
Pour tout savoir faire sur Excel !

20 avril 2018

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.

Voici ce que donne l'exemple n°3 :




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 Blogger Benji, sur 2:51 PM  

Enregistrer un commentaire

<< Accueil