Fonction aléatoire sur excel

Résolu/Fermé
milsabor - 13 févr. 2005 à 16:01
 pampam1983 - 13 avril 2014 à 09:28
Bonjour
j'aimerais savoir si, sur excel 97, il existe une fonction permettant de choisir une cellule au hasard parmi une liste prédéfinie, car je n'en trouve pas.
merci beaucoup de pouvoir m'aider
A voir également:

67 réponses

Non, pas dur! lol

'Utilisation de Randomize pour éviter la répétition de séries identiques:
Randomize

' Remplace 4 par (le nombre de mots dans ta colonne) -1:
tirage = 1 + Round(4 * Rnd)
'tirage contiendra donc une valeur entre 1 et le nombre de mots dans ta colonne

' Ici, on remplit la cellule cible (remplace 'ligneCelluleCible' et 'colonneCelluleCible' par les valeurs numériques correspondantes):
Sheets("NomDeLaFeuille").Cells(ligneCelluleCible,colonneCelluleCible).Value=Sheets("NomDeLaFeuille").Cells(tirage+1,1).Value

'Enfin, j'ai ajouté tirage+1, car je suppose que tu as un ligne de titre à ta colonne qui contient tes mots (si en plus tu as une ligne vide entre la ligne de titre et le début de tes mots, remplace '+1' par '+2').


Voilà...y'a plus qu'à glisser un bouton sur ta feuille, mettre ce code sur l'évènement clic! (clic droit sur le bouton...tu devrais trouver)

@+! Samy
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 686
22 avril 2005 à 23:46
bonjour

J'aimerais qu'excel me choisisse un mot au hasard dans une liste

dans la cellule où tu veux récupérer le choix, tu mets la formule :

=RECHERCHEH(1;liste;ENT(ALEA()*NB(liste))+1;)

pour que cette formule fonctionne, il faut que tu remplace "liste"
par la plage où tu as ta liste (A1:A500 par exemple)
où mieux que tu sélectionne ta liste et que tu tapes 'liste'
dans la zone nom au-dessus de la cellule A1.

cette formule te choisis la valeur d'une cellule de ta liste
et pour en choisir un nouveau tu tapes sur la touche F9

Moi je souhaiterais faire un truc très simple

çà me parait simple !
à toi jay de nous dire...

mais je n'y comprend rien aux macros !!!

pas besoin de macro !

0
electronath Messages postés 19 Date d'inscription samedi 10 mai 2008 Statut Membre Dernière intervention 21 juillet 2018
10 mai 2008 à 10:41
comme je veux faire un outil rien que pour moi pour un tirage au sort tout simple d'un element dans un liste de mot, j'ai voulu j'ai mis cette formule dans une cellule quelconque de ma feuille:

bonjour



=RECHERCHEH(1;liste;ENT(ALEA()*NB(A1:A7))+1;)
(parceque j'ai commencé l'essai avec 7 noms)

la formule s'inscrit donc en fx mais lorsque je clique "entrée", il m'est écrit ça:

"la formule que vous avez tapée contient une erreur"
suivi de 3 diferents point pour avoir de l'aide.


Est ce que quelqu'un voit où est l'erreur?
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 686 > electronath Messages postés 19 Date d'inscription samedi 10 mai 2008 Statut Membre Dernière intervention 21 juillet 2018
10 mai 2008 à 12:14
bonjour

Pas tout compris dans ta question, mais je pense que ceci devrais être plus approprié
=INDIRECT("A"&(ENT(ALEA()*NBVAL(liste)+1)))
0
electronath Messages postés 19 Date d'inscription samedi 10 mai 2008 Statut Membre Dernière intervention 21 juillet 2018 > gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020
10 mai 2008 à 15:04
Rhooooo merci gbinform, je ne m'y connais absolument pas en excel mais c'est bon, c'est exactement ce que je voulais.
Ca fonctionne superbement bien.

Pour la peine , je te fais un gros bisou SMOUIIIIIIIK
0
Bonjour gbinforme, j'ai lu toutes les pages de la question et a chaque fois vous proposez une réponse qui va parfaitement
Donc j'aurais beoin de votre aide s'il vous plaît
Je voudrais creer un programme de révision sur excel 2000, je voudrai qu'une fenêtre de saisie (userform) apparaîse et ensuite me pose les questions dans l'ordre ou au hasard et moi il faudrait que je rentre la réponse à la questions poser. Une répondu à la question quand j'appurai sur un bouton serait-il possible qu'il me dise si c'est la bonne réponse que j'ai mise.
Les questions sont de A1 à A44
Les réponses sont de B1 à B44
La réponse à la questions en A1 se trouve en B1
La réponse à la questions en A2 se trouve en B2

Merci

je suis sur excel version 2000
0
goldenboy68 Messages postés 130 Date d'inscription vendredi 3 octobre 2003 Statut Membre Dernière intervention 11 janvier 2010 50
7 mai 2005 à 11:05
Lol ... ça m'arrange que tu aies trouvé tout seul!

...j'avais quand même réfléchi un p'tit peu à l'époque!

Bon apprentissage!

@+! Samy
0
BOUCLE30 Messages postés 7 Date d'inscription vendredi 23 septembre 2005 Statut Membre Dernière intervention 11 octobre 2005
23 sept. 2005 à 17:16
Bonjour Samy et autres,

Suite à une recherche de fonction aléatoire, je suis tombé sur tes programmes, qui m'ont bien aidés.
J'ai testé le programme pour les densités, impect, j'arrive a sortir un truc, mais y a un HIC... il me sort des chiffres négatif.

Alors voila que je t'explique un peu mon truc.
J'ai 13 personnes, et 13 secteurs. Je souhaiterais affecté un secteur à chaque personne aléatoirement (idem que pour les densités, le secteur doit sortir kune seule fois).
J'ai testé le code que tu as donné a Manina. Je l'ai bien sur adapté a ma feuille.
Le problème comme je disais plus haut, c'est qu'il me ressort 2 à 3 chiffre négatif, et toujours les mm (-1), ché pas pourkoi, et du
coup il me supprime 2 à 3 chiffres.
Voilà si quelqu'un a une idée, please, pouvez-vous me contacter...
Je pense que le problème viens de ma boucle
For i = 1 To 13

animTiree = -13
While animTiree = -13

Randomize

tirage = 1 + Round(12 * Rnd)


Voila voila, si kkun a une info ça serait SUPER
MERCI
0
goldenboy68 Messages postés 130 Date d'inscription vendredi 3 octobre 2003 Statut Membre Dernière intervention 11 janvier 2010 50
29 sept. 2005 à 18:56
Salut,

Alors à priori, y'a pas de pb pour adapter ce code, j't'ai fait un p'tit canevas:

//******************** CODE ****************************
Public Sub tirage(colonne As Integer)

Dim densite1, densite2, densite3, densite4, densite5, densite6, ..., densite13, densiteTiree As Double
Dim tirage As Integer
Dim densite1Tiree, densite2Tiree, densite3Tiree, densite4Tiree, densite5Tiree, densite6Tiree, ..., densite13Tiree As Boolean

densite1 = ActiveSheet.Cells(2, 2).Value
densite2 = ActiveSheet.Cells(3, 2).Value
densite3 = ActiveSheet.Cells(4, 2).Value
densite4 = ActiveSheet.Cells(5, 2).Value
densite5 = ActiveSheet.Cells(6, 2).Value
densite6 = ActiveSheet.Cells(7, 2).Value
...
densite13 = ActiveSheet.Cells(14, 2).Value

densite1Tiree = False
densite2Tiree = False
densite3Tiree = False
densite4Tiree = False
densite5Tiree = False
densite6Tiree = False
...
densite13Tiree = False


For i = 1 To 13

densiteTiree = -999

While densiteTiree = -999

'Utilisation de Randomize pour éviter la répétition de séries identiques:
Randomize

tirage = 1 + Round(12 * Rnd)

Select Case tirage
Case 1
If densite1Tiree <> True Then
densiteTiree = densite1
End If
densite1Tiree = True
Case 2
If densite2Tiree <> True Then
densiteTiree = densite2
End If
densite2Tiree = True
Case 3
If densite3Tiree <> True Then
densiteTiree = densite3
End If
densite3Tiree = True
Case 4
If densite4Tiree <> True Then
densiteTiree = densite4
End If
densite4Tiree = True
Case 5
If densite5Tiree <> True Then
densiteTiree = densite5
End If
densite5Tiree = True
Case 6
If densite6Tiree <> True Then
densiteTiree = densite6
End If
densite6Tiree = True
...
Case 13
If densite13Tiree <> True Then
densiteTiree = densite13
End If
densite13Tiree = True
End Select
Wend

ActiveSheet.Cells(i + 1, colonne).Value = densiteTiree

Next i

End Sub
//******************* FIN CODE *************************

Voilà pour la fonction

Pour les boutons...ben c'est encore plus intuitif!

Le seul point à vérifier, c'est la correspondance avec la colonne qui contient tes nombres de 1 à 13 :

densite1 = ActiveSheet.Cells(2, 2).Value
densite2 = ActiveSheet.Cells(3, 2).Value
densite3 = ActiveSheet.Cells(4, 2).Value
densite4 = ActiveSheet.Cells(5, 2).Value
densite5 = ActiveSheet.Cells(6, 2).Value
densite6 = ActiveSheet.Cells(7, 2).Value
...
densite13 = ActiveSheet.Cells(14, 2).Value

les 13 nombres sont dans la colonne 2 de la ligne 2 à la ligne 14!

@+! Samy
0
BOUCLE30 Messages postés 7 Date d'inscription vendredi 23 septembre 2005 Statut Membre Dernière intervention 11 octobre 2005 > goldenboy68 Messages postés 130 Date d'inscription vendredi 3 octobre 2003 Statut Membre Dernière intervention 11 janvier 2010
11 oct. 2005 à 09:25
Salut Samy

Je te remercie pour ta réponse, c'est super sympa, je vais tester ça desuite
Merci je te dis si ça marche
bonne journée
0
BOUCLE30 Messages postés 7 Date d'inscription vendredi 23 septembre 2005 Statut Membre Dernière intervention 11 octobre 2005 > BOUCLE30 Messages postés 7 Date d'inscription vendredi 23 septembre 2005 Statut Membre Dernière intervention 11 octobre 2005
11 oct. 2005 à 10:04
c'est encore MOI,
Voilà j'ai testé, mais rien à y faire, j'ai toujours 2 ou 3 fois le -1, j'ai vraiment tout testé c'est fou ça !!!!
J'ai mm changé ma fonction de place, je l'ai mise directement ds le code de ma feuille, et ds la page module, (ds la page module j'ai un HIC, encore ;-( il me dit que la fonction TIRAGE () n'est pas définie .... rhhhhhhhhhhhg
je sens que je vais faire un MALHEUR....BON merci quand mm à toi SAMY,
a++
kari
0
goldenboy68 Messages postés 130 Date d'inscription vendredi 3 octobre 2003 Statut Membre Dernière intervention 11 janvier 2010 50 > BOUCLE30 Messages postés 7 Date d'inscription vendredi 23 septembre 2005 Statut Membre Dernière intervention 11 octobre 2005
11 oct. 2005 à 10:09
Si t'as des -1, c'est que les correspondances dont j'ai parlé ne doivent pas être bonnes (elles sont stockées où les valeurs que tu veux afficher?

Pour la fonction Tirage...je vois pas pourquoi il la reconnaîtrait pas...bizarre!

Mets-moi ton fichier à disposition qqpart que je puisse y jeter un oeil!

@+! Samy
0

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

Posez votre question
BOUCLE30 Messages postés 7 Date d'inscription vendredi 23 septembre 2005 Statut Membre Dernière intervention 11 octobre 2005
11 oct. 2005 à 10:25
RE,

ui, donc il me semble que mes correspondances sont bonnes, elles se trouvent dans la deuxième colonne à partire de la ligne 16 --> 28,
je voudrais bien te faire passer mon fichier, mais j'ai pas de FTP, de donc ... pas de possibilité de te donner un accès, par contre si tu veux je peux te l'envoyer sur ta boite mail, si bien sur cela te dérange pas...
Tiens je te laisse mon mail cbb_kari@hotmail.com si tu veux m'envoyer le tiens, et je te joins mon SUPER FICHIER
a++ kari
0
goldenboy68 Messages postés 130 Date d'inscription vendredi 3 octobre 2003 Statut Membre Dernière intervention 11 janvier 2010 50
11 oct. 2005 à 11:06
Hmmm...étourderie quand tu nous tiens!!!

Alors ton problème avec la fonction tirage...faut faire:

Public Sub tirage... et pas Private Sub tirage

Ensuite, les -1 ils apparaissent car t'as mal fait ton copier-coller dans le case 4:

Pas bon:
Case 4
If anim4Tiree <> True Then
animTiree = anim4
End If
animTiree = True

Bon:
Case 4
If anim4Tiree <> True Then
animTiree = anim4
End If
anim4Tiree = True

Un petit 4 qui manquait au milieu!

@+! Samy
0
BOUCLE30 Messages postés 7 Date d'inscription vendredi 23 septembre 2005 Statut Membre Dernière intervention 11 octobre 2005
11 oct. 2005 à 11:19
lol

merci, je me fais toute petite...
voila, tu vois bien, je m'en doutais qu'il s'agissait d'un tout petite truc, lol, Merci beaucoup
a++ kari,
0
BOUCLE30 Messages postés 7 Date d'inscription vendredi 23 septembre 2005 Statut Membre Dernière intervention 11 octobre 2005
11 oct. 2005 à 11:25
Super, merci, tout fonctionne correctement, je vais enfin pouvoir continuer mon projet
je sais je me repete, mais MERCI BEAUCOUP
A++ Kari
0
BOUCLE30 Messages postés 7 Date d'inscription vendredi 23 septembre 2005 Statut Membre Dernière intervention 11 octobre 2005
11 oct. 2005 à 11:31
Super, merci, tout fonctionne correctement, je vais enfin pouvoir continuer mon projet
je sais je me repete, mais MERCI BEAUCOUP
A++ Kari
0
goldenboy68 Messages postés 130 Date d'inscription vendredi 3 octobre 2003 Statut Membre Dernière intervention 11 janvier 2010 50
11 oct. 2005 à 11:49
mais de rien...toujours là pour rendre service!

@+! Samy
0
bonjour
Je recherche une fonction dans Excel pour afficher dans une cellule la date de sauvegarde du fichier. Ca existe ?
merci.
0
goldenboy68 Messages postés 130 Date d'inscription vendredi 3 octobre 2003 Statut Membre Dernière intervention 11 janvier 2010 50
6 juin 2006 à 11:55
Salut,

J'ai fait une p'tite recherche dans l'aide:


------------------------------------------------
Sub AfficheInfoAccesFichier(specfichier)
Dim fs, f, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(specfichier)
s = UCase(specfichier) & vbCrLf
s = s & "Créé le : " & f.DateCreated & vbCrLf
s = s & "Dernier accès le : " & f.DateLastAccessed & vbCrLf
s = s & "Dernière modification le : " & f.DateLastModified
MsgBox s, 0, "Infos d'accès au fichier"
End Sub

------------------------------------------------

DateLastModified doit être la fonction que tu recherches!

@+! Samy
0
cyril > goldenboy68 Messages postés 130 Date d'inscription vendredi 3 octobre 2003 Statut Membre Dernière intervention 11 janvier 2010
6 juin 2006 à 11:59
je te remercie.
0
se serai possible sans utiliser les macros?
0
Se serait possible sans utiliser de macros?
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 686
6 juin 2006 à 14:03
bonjour

Pour mettre à jour cette cellule où tu veux la date de dernière modification affichée,
tu peux aussi rajouter, dans thisworkbook, cette fonction :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Range("c_maj").Value = Date
End Sub


Il suffit de nommer la cellule d'affichage avec le nom : c_maj pour que cela fonctionne.

La cellule doit avoir les formats dates et/ou heures recherchés.
0
ok.je te remercie.C gentil de m'avoir aider
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 686
6 juin 2006 à 14:22
bonjour

j'avais préparé la fonction avant la question sans macro,
mais je ne connais pas de solution possible en fonction pure,
car si l'on peut afficher la date on ne peut pas lier à un événement de sauvegarde.

il faut copier / coller la macro, après avoir ouvert l'éditeur
(Alt + F11) mais en utilisation, c'est totalement transparent.

0
je vien d'essayer mais ca ne marche pas!Je te remercie quand meme pour kle renseignement.
0
bonjour.
Existe t-il une fonction qui puisse afficher une question automatiquement dès que l'on entre un enregistrement?
Merci de m'aider.
0
goldenboy68 Messages postés 130 Date d'inscription vendredi 3 octobre 2003 Statut Membre Dernière intervention 11 janvier 2010 50
6 juin 2006 à 15:25
Avec VBA tu peux faire énormément de choses, mais si tu veux pas utiliser de code, tu seras très vite limité. Tu ne pourras pas faire afficher de message par exemple (je crois).

@+!
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 686
6 juin 2006 à 15:24
bonjour

vérifie la manip car je l'utilise depuis excel 97 et cela fonctiomme.

tu peux même rajouter :
Range("c_maj").Value = Date & " à " & time

pour avoir la date et l'heure.


0
ca ne marche toujour pas ton code!
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 686
6 juin 2006 à 18:14
bonjour


ca ne marche toujour pas ton code!

tu veux certainement dire qu'il ne fonctionne pas,
mais s'il y a un problème, il doit te donner un code erreur.

Par exemple si tu n'as pas bien nommé la cellule : "la méthode range a échoué".

dans ce cas tu sélectionnes la cellule qui doit avoir la date,
et dans la zone de saisie en haut à gauche, où apparaît l'adresse
de la cellule, tu saisis "c_maj" et cela fonctionnera.

si tu n'a pas d'erreur et pas de résultat, c'est que tu n'a pas mis le code où il faut, c'est-à-dire dans "ThisWorkbook",
où que tu n'as pas nommé la bonne cellule et alors la date est ailleurs.

ta cellule est peut-être trop petite et tu as des "#####".

tu vois qu'il faudrait un tout petit peu préciser "ca ne marche toujour pas ton code!" pour t'aider d'avantage.

allez, précises moi un peu la panne.
0
l'erreur est la suivante:La méthode 'Range' de l'objet '_global' a échoué
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 686
7 juin 2006 à 08:28
bonjour

la réponse à ce cas d'erreur était donnée.

0