Icône de la ressource

Le Mot Le Plus Long - Anagrammes – Word Scramble (Mots mélangés) V3.1

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

crocrocro

XLDnaute Impliqué
crocrocro a soumis une nouvelle ressource:

Le Mot Le Plus Long - Inspiré du jeu télévisé Le Mot Le Plus ou sous son nom plus récent Des Chiffres et des Lettres.

Le Mot Le Plus Long
Inspiré du jeu télévisé Le Mot Le Plus Long qui date de 1965 ou sous son nom plus récent Des Chiffres et des Lettres.
Regarde la pièce jointe 1227491

Installation
Le fichier zip à télécharger contient :
  • - Le classeur Excel du Jeu
  • - Un fichier Dictionnaire de format texte de plus de 300 000 mots.
  • - Quelques fichiers sons (.wav) de signalement de fin de compte à rebours.
  • - Un fichier pdf de description détaillée du...

En savoir plus sur cette ressource...
 
Une amélioration visuelle avec un chrono plus dynamique et sans l instruction Wait.
Bonjour @Rheeem et merci pour la proposition.
Comme je l'ai écrit en commentaire dans le code de la procédure TopChrono, j'ai dû remplacer, Sleep par Wait
VB:
        'Utilisation de Wait et non Sleep car Sleep ne rend pas la main !!! => pas d'affichage du chrono
        Application.Wait Now + TimeValue("00:00:01") ' Pause 1 seconde
Dans votre code, l'instruction DoEvents est appelée à chaque boucle, soit plus de 1000 fois pour un chrono de 30 secondes. La multiplicatiob de DoEvents est connue por poser parfois problème.
Et si je remplace le Wait dans mon code par
Code:
        Sleep 1000
        DoEvents
, le chrono a des ratés (il n'affiche pas toutes les secondes.
En faisant de même (dans mon code), avez-vous le même problème ?
 
Dans votre code, l'instruction DoEvents est appelée à chaque boucle, soit plus de 1000 fois pour un chrono de 30 secondes. La multiplicatiob de DoEvents est connue por poser parfois problème.
Les deux fonctions sont utilisés (DoEvents et Sleep)
Sleep est appelé avec la plus minimum délai possible pour éviter que le cpu s'emballe
sinon on peut envisager d'appeler DoEvent que lorsque la progression avance d'un pas (ici un degré) il y aura au max 360 appels quel que soit le délai
 
Dernière édition:
Et si je remplace le Wait dans mon code par
Code:
        Sleep 1000
        DoEvents
, le chrono a des ratés (il n'affiche pas toutes les secondes.
En faisant de même (dans mon code), avez-vous le même problème ?
Salut,
c'est normal que le chrono semble avoir des ratés avec un sleep d' 1 seconde , la durée du sleep conditionne la précision entre 2 affichages de chrono. Un sleep de 100 ms ou 50 ms semble raisonnable. Et si on veut un temps d'une seconde, il faut faire par exemple une boucle avec 20 fois un sleep 50 et un doEvents. Cela n'est pas très précis , l'utilisation d'un timer comme le fait rheeem est plus précis avec son sleep de 5ms.
Nullosse
 
Dernière édition:
Une nouvelle version V1.1 est disponible.
Les Mises à jour par rapport à la V1 :
  • Retouches de présentation,
  • Améliorations de la visualisation des solutions erronées trouvées par les joueurs.
 
Une nouvelle version V2 est disponible.
Les Mises à jour par rapport à la Version précédente :
  • Ajout du Jeu Scramble
  • Ajout d'une option de forçage du Tirage (Macro TirageChoisi activée par CTRL + t).
Merci de me signaler les anomalies si vous en rencontrez.
 
Une nouvelle version V3 est disponible.
Les Mises à jour par rapport à la Version précédente :
  • Ajout du Jeu Anagramme
  • Déplacement du Bouton Charger le Dictionnaire sur la feuille Paramétrage
Merci de me signaler les anomalies si vous en rencontrez.
 
Une nouvelle version V3.1 est disponible.
Les Mises à jour par rapport à la Version précédente :
  • Améliorations de la visualisation des mots trouvés (majuscules accentués) dans la feuille Résultats.
  • Petites corrections de la lecture à haute voix des mots trouvés
Merci de me signaler les anomalies si vous en rencontrez. Faites moi également part de vos suggestions.
 
pour les cas rares qu'on est autour de minuit 🤓
VB:
    Start = Timer
     For i = TempsRestant To 0 Step -1
          If Start > Timer Then Start = Start - 86400     'depasser minuit ***********
          ActiveSheet.Shapes("CHRONO_CERCLE").TextFrame.Characters.Text = i
 
pour les cas rares qu'on est autour de minuit 🤓
VB:
    Start = Timer
     For i = TempsRestant To 0 Step -1
          If Start > Timer Then Start = Start - 86400     'depasser minuit ***********
          ActiveSheet.Shapes("CHRONO_CERCLE").TextFrame.Characters.Text = i
Bonjour @bsalv et merci pour le retour.
Je retiens la proposition mais elle ne s'applique pas ici.
Dans la boucle de mon code, je fais appel à la Sub Pause qui fait un Sleep de 1 seconde.
Je regarderai cependant dans mes codes VBA où je fais un Timer - Start.
VB:
        ' Boucle de décompte du temps
        For i = TempsRestant To 0 Step -1
            Application.ScreenUpdating = False
            .Shapes("CHRONO_CERCLE").TextFrame.Characters.Text = i
            If i < 6 Then
                ' en rouge les 5 dernières secondes
                .Shapes("CHRONO_CERCLE").TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(255, 0, 0)
                .Shapes("CHRONO_CERCLE").Line.ForeColor.RGB = RGB(255, 0, 0)
            Else
                ' en bleu foncé
                .Shapes("CHRONO_CERCLE").TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(55, 96, 146)
                .Shapes("CHRONO_CERCLE").Line.ForeColor.RGB = RGB(55, 96, 146)
            End If
            Application.ScreenUpdating = True
            
            Pause 1000
        Next i
 
exemple,
  • on lance la macro à minuit moins 5 sec (timer = 86400-5 = 86395) avec un TempsRestant de 10 sec, donc normallement jusqu'à 86405, mais ...
  • après 5 sec = environ 4-5ième boucle du FOR...NEXT, le timer se reset à 0, donc uniquement à ce moment, si on soustrait 86400 au "start", il deviendra -5.
  • quelque lignes plus loin, dans le même boucle et les boucles suivants, dans le DO...LOOP UNTIL, "Delta = Timer - Start" comme le start est maintenant -5, donc on ajoute 5 et tout se passe comme il faut.
mais, je le dis, on verra cette erreur seulement quand on lance la macro pendant les 10 dernières secondes d'une journée.

PS. autre solution, plus facile, c'est simplement changer cette ligne
VB:
 Delta = (Timer - Start + 86400) Mod 86400
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour