XL 2013 [Résolu] Remise à zéro des MFC et macro

eddy1975

XLDnaute Occasionnel
Bonsoir le Forum,

Je souhaiterai à l'ouverture du fichier que les MFC ne soient pas appliquées dans les cellules.

D'autre part, j'aimerais également que le bouton "RAZ" me supprime les MFC.

Enfin dernière question (et précision en même temps), j'ai appliqué les MFC sur les 5 premières cellules bleues. Avant que je continue à remplir les 45 autres, y a t-il un moyen d'aller plus vite que de les faire une par une.

Merci pour votre aide.
 

Pièces jointes

  • Grille_Flash.xlsm
    24.5 KB · Affichages: 60
Dernière édition:

job75

XLDnaute Barbatruc
Re : Remise à zéro des MFC et macro

Bonsoir eddy1975,

Utilisez une cellule auxiliaire, par exemple S13 (cachée par le bouton).

La macro Workbook_Open et le bouton RAZ lui donneront la valeur FAUX (False en VBA).

Le bouton FLASH lui donnera la valeur VRAI (True).

Et vous compléterez les formules des MFC avec =$S$13* au début.

A+
 

job75

XLDnaute Barbatruc
Re : Remise à zéro des MFC et macro

Re, salut MOMO42,

Au lieu de S13 utilisez plutôt X12 et déplacez les boutons vers la droite.

Vos MFC ne tiennent pas la route, effacez les toutes puis :

- sélectionnez D3:L21, formule de la MFC :

Code:
=$X$12*NB.SI($B$26:$B$30;D3)
- sélectionnez N3:V21, formule de la MFC :

Code:
=$X$12*NB.SI($C$32:$C$33;N3)

Bonne nuit.

Edit : je joins le fichier, bonne journée.
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Remise à zéro des MFC et macro

Bonjour le forum,

On peut aussi remplacer la cellule X12 par le nom défini flash.

Fichier joint.

Bonne journée.
 

Pièces jointes

  • Grille_Flash(1).xlsm
    22.7 KB · Affichages: 49
Dernière édition:

eddy1975

XLDnaute Occasionnel
Re : [Résolu] Remise à zéro des MFC et macro

Re Job75,

Je l'ai corrigé de mon côté, je ne me serai pas permis d'abuser de votre gentillesse en faisant un nouveau post alors que "le plus dur était fait" :eek:
Merci quand même Job.

@+
 

eddy1975

XLDnaute Occasionnel
Re : Remise à zéro des MFC et macro

Bonjour Job75,

Après réflexion, je me demandais s'il était possible de simuler une séquence. L'idée serait que dans la série des 50, 5 nombres "clignotent" pendant 5 secondes de manière aléatoire et d'un figer un (selon la MFC existante) et refaire la séquence avec 4 chiffres puis figer un deuxième et ainsi de suite.
Ensuite faire la même chose sur la série de 11.
Merci.

@+
 

job75

XLDnaute Barbatruc
Re : [Résolu] Remise à zéro des MFC et macro

Bonjour eddy1975,

J'aime bien les choses simples alors je me contenterai de faire clignoter les cellules colorées :

Code:
Sub Bouton1_Cliquer()
Dim c As Range, t, n As Byte
Randomize
For Each c In [A26:A75,B32:B42]
  c = Rnd
Next
With ThisWorkbook.Names
  t = Timer
  For n = 1 To 5 '5 clignotements
    While Timer < t + n
      .Add "flash", Timer < t + n - 0.5
      DoEvents
    Wend
  Next
  .Add "flash", True
End With
End Sub
Il n'y a plus de fonctions ALEA() dans la feuille.

Fichier (2)

A+
 

Pièces jointes

  • Grille_Flash(2).xlsm
    23.9 KB · Affichages: 50

job75

XLDnaute Barbatruc
Re : [Résolu] Remise à zéro des MFC et macro

Re,

Toujours simplement, si l'on veut un nouveau tirage à chaque clignotement :

Code:
Sub Bouton1_Cliquer()
Dim t, n As Byte, x As Boolean, c As Range
Randomize
t = Timer
For n = 1 To 5 '5 clignotements
  While Timer < t + n
    x = Timer > t + n - 0.5
    If x <> [flash] Then
      For Each c In [A26:A75,B32:B42]
        c = Rnd
      Next
      ThisWorkbook.Names.Add "flash", x
    End If
    DoEvents
  Wend
Next
End Sub
Fichier (3).

A+
 

Pièces jointes

  • Grille_Flash(3).xlsm
    23.9 KB · Affichages: 48

job75

XLDnaute Barbatruc
Re : [Résolu] Remise à zéro des MFC et macro

Bonjour eddy1975, le forum,

Je reviens car je ne m'étais pas beaucoup fatigué :

Code:
Dim encours As Boolean 'neutralise le bouton FLASH

Sub Bouton_FLASCH()
If encours Then Exit Sub
Dim p#, d As Object, choix%, t, n%, x As Boolean, c As Range
p = Val(Replace([X3], ",", ".")) 'période du clignotement
If p <= 0 Then Exit Sub
encours = True
[C26:C30,D32:D33] = "" 'RAZ
[B26:B30].Name = "Plage1"
[C32:C33].Name = "Plage2"
Set d = CreateObject("Scripting.Dictionary")
Randomize
For choix = 1 To 5 '5 valeurs
  t = Timer
  For n = 1 To 5 '5 clignotements
    While Timer < t + p * n
      x = Timer > t + p * (n - 0.5)
      If x <> [flash] Then
1       For Each c In [A26:A75,B32:B42]
          c = Rnd
        Next c
        d.RemoveAll
        For Each c In [B26:C30] 'recherche des doublons
          If c <> "" Then If d.exists(c.Value) Then GoTo 1
          d(c.Value) = ""
        Next c
        If choix < 3 Then
          d.RemoveAll
          For Each c In [C32:D33] 'recherche des doublons
            If c <> "" Then If d.exists(c.Value) Then GoTo 1
            d(c.Value) = ""
          Next c
        End If
        ThisWorkbook.Names.Add "flash", x, Visible:=False
      End If
      DoEvents
   Wend
  Next n
  '---fixation des valeurs---
  [C25].Offset(choix) = [B26]
  If choix < 3 Then [D31].Offset(choix) = [C32]
  '---redéfinition des plages---
  If choix < 5 Then [B26].Resize(5 - choix).Name = "Plage1"
  IIf(choix = 1, [C32], [D32:D33]).Name = "Plage2"
Next choix
[C26:C30].Name = "Plage1"
encours = False
End Sub

Sub Bouton_RAZ()
ThisWorkbook.Names.Add "flash", False, Visible:=False
[C26:C30,D32:D33] = ""
End
End Sub
Fichier (4), choisissez en X3 la période de clignotement que vous voulez.

Edit : j'avais mis 2 Dictionary, un seul suffit.

A+
 

Pièces jointes

  • Grille_Flash(4).xlsm
    28.2 KB · Affichages: 49
Dernière édition:

eddy1975

XLDnaute Occasionnel
Re : [Résolu] Remise à zéro des MFC et macro

Bonsoir Job,

C'est vraiment sympathique de votre part, je n'en attendais pas tant. Mais du coup, après cet élan de générosité, la demande initiale se rapproche.;)
Du coup, est-il possible de dissocier la séquence des cinq premiers nombres de celle de deux derniers (série de 1 à 11) ?
Faire le flash des nombres de 1 à 50 et ensuite le flash des nombres 1 à 11.
Le temps de 0.25 s peut-il être mis par défaut et que la liste déroulante n'apparaisse plus ?
Je suis prêt à attendre 3 jours. :p

Merci Job75.
 

job75

XLDnaute Barbatruc
Re : [Résolu] Remise à zéro des MFC et macro

Re,

Il suffit d'ajouter une boucle (grille) et quelques tests :

Code:
Dim encours As Boolean 'neutralise le bouton FLASH
Const p = 0.25 'période du clignotement, modifiable

Sub Bouton_FLASCH()
If encours Then Exit Sub
Dim d As Object, grille%, choix%, t, n%, x As Boolean, c As Range
encours = True
[C26:C30,D32:D33] = "" 'RAZ
Set d = CreateObject("Scripting.Dictionary")
Randomize
For grille = 1 To 2
  If grille = 1 Then [B26:B30].Name = "Plage1" Else [C32:C33].Name = "Plage2"
  For choix = 1 To IIf(grille = 1, 5, 2) 'nombre de valeurs
    t = Timer
    For n = 1 To 5 '5 clignotements
      While Timer < t + p * n
        x = Timer > t + p * (n - 0.5)
        If x <> [flash] Then
1         For Each c In IIf(grille = 1, [A26:A75], [B32:B42])
            c = Rnd
          Next c
          d.RemoveAll
          For Each c In IIf(grille = 1, [B26:C30], [C32:D33]) 'recherche des doublons
            If c <> "" Then If d.exists(c.Value) Then GoTo 1
            d(c.Value) = ""
          Next c
          ThisWorkbook.Names.Add "flash", x, Visible:=False
        End If
        DoEvents
      Wend
    Next n
    '---fixation des valeurs---
    If grille = 1 Then [C25].Offset(choix) = [B26] Else [D31].Offset(choix) = [C32]
    '---redéfinition des plages---
    If grille = 1 Then If choix < 5 Then [B26].Resize(5 - choix).Name = "Plage1" _
      Else [C26:C30].Name = "Plage1"
    If grille = 2 Then IIf(choix = 1, [C32], [D32:D33]).Name = "Plage2"
  Next choix
Next grille
encours = False
End Sub
Quant à la période de 0,25 seconde c'est bien court, on n'y voit que du feu :rolleyes:

Fichier (5).

Bonne soirée.
 

Pièces jointes

  • Grille_Flash(5).xlsm
    24.4 KB · Affichages: 56

Discussions similaires

Statistiques des forums

Discussions
312 248
Messages
2 086 594
Membres
103 250
dernier inscrit
keks974