Faire apparaître et disparaître un cercle sur des cellules à intervalles

Bonjour,
Je fais face à un besoin un peu inhabituel relevant de l'utilisation d'excel.

Sur un damier de 12 cellules sur 12, constitué de cellules colorées avec du texte, je cherche à faire apparaître et disparaître de façon aléatoire à des intervalles variés un cercle sur des cellules de ce damier (entraînement neuro cérébral).

Est-ce possible par excel ?

Bonjour,

Dans le fichier joint, Cliquez sur le cercle, celui-ci va se positionner successivement dans 5 cellules différentes avec une temporisation de 2 secondes entre chaque changement ( vous pouvez changer les valeurs dans la macro), avec retour à la position de départ en fin de cycle.

Cdlt

Ououah Excellent !

Ai été voir la macro;
Ai compris comment paramétrer le tempo et comment influer sur le nombre de déplacements du cercle...

ot 2024 03

A) Comment lire, respectivement adapter les règles de déplacement définies dans la macro ?
Lig = Int((12 - 2 + 1) * Rnd) + 3 'position de la ligne
Col = Int((13 - 2 + 1) * Rnd) + 3 'position de la colonne

B) Pouvez-vous me dire 2 mots sur le fonctionnement de la macro :
.Top = Cells(2, "O").Top
.Left = Cells(2, "O").Left
.Top signifie-t-il que le cercle est positionné en colonne O sur la 2ème ligne en partant du haut de la feuille ou du range ?
.Left signifie-t-il que le cercle est positionné en colonne O et que le bord droit du range se trouve deux cellules plus à gauche ?

Comment puis-je configurer la macro pour qu'elle intègre les conditions suivantes ?
1) Définition du range du damier (dans mon cas de E6 à P17)
2) Peut-on définir un tempo inférieure à la seconde 00:00:00:9 me renvoie une erreur

essayez ceci:

Sub Position_Cercle()
    Dim Lig As Long, Col As Long, i As Long
    Randomize
    For i = 1 To 6 'de 1 à 5 positions affichées
        Lig = Int((16 - 5 + 1) * Rnd) + 5 'position de la ligne
        Col = Int((16 - 5 + 1) * Rnd) + 5 'position de la colonne
        With ActiveSheet.Shapes("Cercle")
            .Top = Cells(Lig, Col).Top 'position de la ligne la cellule correspondante
            .Left = Cells(Lig, Col).Left 'position de la colonne la cellule correspondante
        End With
        DoEvents
        DoEvents
        Tempo
    Next i
    'Retour à la position de départ
        With ActiveSheet.Shapes("Cercle")
            .Top = Cells(6, "R").Top
            .Left = Cells(6, "R").Left
        End With
End Sub

Sub Tempo()
    For j = 1 To 60000000
    Next j
End Sub

pour la temporisation, modifiez la valeur 60000000 pour augmenter ou diminuer la durée de temporisation.

pour les questions A et B: vous avez tout compris

Cdlt

Si cela vous convient, passez le post en "Résolu".

Un grand merci pour ce retour.

Pas sûr d'avoir déjà tout compris cependant :
les déplacements aléatoires ne vont pas dans les deux lignes du bas mais vont une ligne au-dessus du tableau (en ligne 5)
Comment dois-je lire en français l'instruction suivante ?
Lig = Int((16 - 6 + 1) * Rnd) + 5 'position de la ligne
Col = Int((16 - 5 + 1) * Rnd) + 5 'position de la colonne

Je voulais avoir plusieurs cercles sur lesquels cliquer pour pratiquer à des vitesses différentes.
J'ai copié et renommé les macros dans le même module. Est-ce pour cela que c'est toujours le même cercle qui est exécuté quand bien même j'ai trois cercles différents auxquels j'associe trois macros différentes ?
Dois-je créer autant de modules que de macros ? pour dérouler les macros avec des cercles différents ?
En d'autres termes, comment affecter 3 versions de ces macros à des objets différents (cercles de couleurs différentes du coup correspondant à des vitesses d'exécution différente ?

screenshot 2024 03 009

Ci-joint le fichier avec 3 vitesses différentes, vert = vitesse lente, orange = vitesse moyenne et rouge = vitesse rapide.

Brillantissime !

Mes futurs utilisateurs devront énoncer la couleur de fond ou le texte de la cellule en fonction du positionnement du cercle. J'ai donc adapter le format du cercle en conséquence. Il est cependant positionné .top .left. J'ai tenté de mettre du center un peu naïvement et bien sûr j'ai des erreurs de compilation en retour.
comment faire en sorte que le cercle apparaisse centré dans le tableau et en fin d'exécution.

C'est génial ce que vous m'avez proposé !
Un grand Merci

screenshot 2024 03 011 screenshot 2024 03 010

Bonjour

comment faire en sorte que le cercle apparaisse centré dans le tableau et en fin d'exécution

il suffit d'ajouter une valeur, à toutes les lignes similaires pour obtenir le décalage, exemple:

.Top = Cells(Lig, Col).Top + 3.5

.Left = Cells(Lig, Col).Left + 3.5

Cdlt

Merci infiniment !
Vous m'avez permis de transformer un bête tableau de couleur en outil de neuro-visualisation !

Je vous souhaite une bonne continuation
Eric

Rechercher des sujets similaires à "apparaitre disparaitre cercle intervalles"