Comment bloquer les résultats aléatoires?

tigroo7 Messages postés 8 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!
A voir également:

7 réponses

Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 450
 
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
tigroo7 Messages postés 8 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
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 450 > tigroo7 Messages postés 8 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
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
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
tigroo7 Messages postés 8 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
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 450
 
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
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 450
 
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
tigroo7 Messages postés 8 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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 450
 
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
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 450
 
Re re...!!
un petit exemple pour faciliter la compréhension
http://www.cijoint.fr/cjlink.php?file=cj200806/cij65rTrAQ.xls
CRDLMNT
0
Tigroo7
 
Avec votre tableur, j'y suis parvenu :) Merci beaucoup! Utile le bouton remise à zéro :)
0