Comment bloquer les résultats aléatoires?

tigroo7 Messages postés 8 Date d'inscription   Statut Membre -  
 Tigroo7 -
Bonjour!

Cherchant à créer un mini logiciel de "jets de dés" j'ai affectée la formule "=1+ENT(6*ALEA())" à une image via une macro.

Quand je clique dessus, ça me génère des séries de chiffres de 1 à 6 dans les cases que j'ai indiqué, aprfait!

Le problème, c'est lorsque je fais une autre action, par exemple le simple fait d'écrire dans une case, la macro se répète et changent les chiffres!

Comment bloquer les résultats et instaurer une remise à zéro des cases avant de pouvoir les "rejouer"?

En vous remerciant!

7 réponses

  1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Bonjour
    effectivement ALEA change losrque l'on utliise une cellule.
    Si la formule est incluse dans votre macro, vous devriez la treminer par un copier /Coller Valeur sur les cellules impliquées, ça devrait résoudre votre problème, sachant que la formule se renouvellera au coup suivant, mais que les résultats affichés ne bougeront plus avant le prochain lancement.
    CRDLMNT
    0
    1. tigroo7 Messages postés 8 Date d'inscription   Statut Membre
       
      Donc rajouter une ligne à la macro ou les cellules?

      Quelle est la forme de cette formule? (C'est sans doute bête mais je débute dans la macro :))

      Merci :)
      0
      1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453 > tigroo7 Messages postés 8 Date d'inscription   Statut Membre
         
        Re
        Sub Macro2()
        Range("C10:H10").Select
        Selection.Copy
        Range("C10").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        End Sub
        Bien entendu, changer les Range par les adresses de vos cellules
        (Adressesd séparées par : prend le champ ecomplet entre les cellules limites, séparées par , prend les cellules individuellement si elles ne sont pas cote à cote)
        Vous pouvez bien entendu réaliser cette macro par enregistrement :
        Clquez sur Outil / Macro /Nouvelle macro et faites ce que vous souhaitez /Revenez sur Macro arrèter l'enregistrement.
        Enfin, pour voir le libellé de la macro:
        revenez sur Macro/Macro, sélectionnez dans la liste et choisissez "pas à pas détaillé ". vous pouvez alors copier la partie utile pour la rajouter dans une autre macro.
        CRDLMNT
        0
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    plutôt que de mettre une formule tu pourrais peut-être mettre une macro directement dans
    l'événement Clic de l'image.
    Un exemple..
    'Mettre 6 valeurs aléatoires dans cellule A1, A2, etc..
    'Cliquer met les 6 chiffres,
    'recliquer remet à zéro
    'etc...
    Private Sub Image1_Click()
    Dim i As Integer
    Static B As Boolean
        B = Not B
        Randomize Timer
        For i = 1 To 6
            If B Then
                Cells(1, i) = (Int((6 * Rnd) + 1))
            Else
                Cells(1, i) = 0
            End If
        Next i
    End Sub

    A+
    0
  3. tigroo7 Messages postés 8 Date d'inscription   Statut Membre
     
    [IMG]http://img207.imageshack.us/img207/5437/sanstitreqs5.jpg[/IMG]

    Pour vous aidez à me comprendre, une image vaut mieux qu'un long discours!
    0
    1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      Re
      essayez donc celle ci qui devrait vous donner satisfaction
      Sub GO()
      Range("E14").Select
      ActiveCell.FormulaR1C1 = "^Les dés sont jetés"
      Range("G10").Select
      ActiveCell.FormulaR1C1 = "=(1+INT(6*RAND()))"
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
      End Sub

      Chez moi, elle marche.
      CRDLMNT
      0
  4. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    En complément:
    Si vous sopugaitez plusieurs résultats alétaoires dans une rangée de cellule ( par exemple de G10 à G1(
    Sub GO()
    Range("E14").Select
    ActiveCell.FormulaR1C1 = "^Les dés sont jetés"
    Range("G10:G15").Select
    Selection.FormulaR1C1 = "=(1+INT(6*RAND()))"
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    End Sub
    CRDLMNT
    0
    1. tigroo7 Messages postés 8 Date d'inscription   Statut Membre
       
      "La méthode Paste Special de la Range a échoué" (débogage qui me fluote les 2 dernières lignes)

      Sinon elle marche mais ça change toujours!

      La réponse 6 marche mais j'arrive pas à choisir mes cellules! Quels paramètres je dois changer si je veux faire mes tirages dans les célulles de A1 à c3 par exemple?
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Re
    Comprend pas... qu'est ce qui marche et qu'est qui ne marche pas. Si message 6 marche, vos valeurs ne devraient pas changer pour choisir les cellules ou aplliquer la macro, prenez le message 6:

    Sur la ligne:
    Range ("G10")

    changez le G10 sans enlever les guillemets:mettez si vous voulez un champ de A1 à C3
    A1:C3 entre les guillemets
    et si vous voulez seulement les cellules A1 et C3
    A1,C3 entre les guillemets.
    Enfin, voyez message 7;
    Il faut chager
    Acticecell.FormulaR1C1 et remplacer par:
    Sélection.FormulaR1.C1 si vous voulez copier toutes ces cellules.
    C'est tout.
    bien entendu pour ce genre de manip pour info, il ne faut pas que votre feuille soit protègèe: si c'est le cas, sans mot de passe, commencez en 1° ligne, sous le titre de la macro:
    ActiveSheet.Unprotect
    et en dernière, juste avant End sub:
    Activesheet.Protect
    CRDLMNT
    0
  7. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Re re...!!
    un petit exemple pour faciliter la compréhension
    http://www.cijoint.fr/cjlink.php?file=cj200806/cij65rTrAQ.xls
    CRDLMNT
    0
  8. Tigroo7
     
    Avec votre tableur, j'y suis parvenu :) Merci beaucoup! Utile le bouton remise à zéro :)
    0