Les Allergies
Alimentaires
Posez votre question Signaler

Fonction aléatoire sur excel [Résolu]

milsabor - Dernière réponse le 19 nov. 2010 à 19:19
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
Lire la suite 

Fonction aléatoire sur excel »

140 réponses
Réponse
+3
moins plus
bonjour

je te propose ceci :

Sub sélection()

Dim choix, nbr_elm, nbr_sel, lig

nbr_sel = 20 ' le nombre de lignes à réviser
' le vocabulaire est en A1 sur la "feuil1" et sur 10 colonnes
' le choix est en A1 sur la "feuil2"

nbr_elm = Worksheets("feuil1").Range("a1").End(xlDown).Rows

For lig = 0 To nbr_sel

choix = Int(Rnd(1) * nbr_elm):

Worksheets("feuil2").Range("a1").Offset(lig).Formula = "=Feuil1!R[" & choix & "]C"
Worksheets("feuil2").Range("a1").Offset(lig).Resize(1, 10).FillRight

Next lig
End Sub


Cela te permet de récupérer sur ta feuille 2 le nombre d'éléments désirés.

si ton classeur est construit différement il suffit d'adapter.


gbinforme- 12 mai 2005 à 18:29
bonjour

pour comprendre ton erreur, il faudrait que tu donnes le code
et le message exact car une macro dépend tellement de l'environnement
qu'il est difficile de trouver autrement.

certains avaient oublié d'adapter les noms des feuilles
et c'est difficile à deviner.

j'attend ton message, à bientôt.

abdel - 13 mai 2005 à 08:47
merci de m'avoir répendu
et voila le code complet, la ou il y a une erreur que j'arrive pas à détécter:
Sub sélection()
Dim nbr_sel, nbr_elm, nbr_col, choix, pos, lig, i
Dim inf_feu, inf_lig, inf_col
Dim res_feu, res_lig, res_col
nbr_sel = 100 ' le nombre de lignes à réviser
nbr_col = 2 ' le nombre de colonnes à recopier
inf_lig = 1 ' les données sont en ligne inf_lig
inf_col = 1 ' les données sont en colonne inf_col
inf_feu = "données" ' les données sont sur la feuille inf_feu
res_lig = 1 ' le résultat est en ligne res_lig
res_col = 1 ' le résultat est en colonne res_col
res_feu = "resu" ' le résultat est sur la feuille res_feu
' récupération du nombre de lignes de données
nbr_elm = Worksheets(inf_feu).Cells(inf_lig, inf_col).End(xlDown).Rows
' suppression précédente sélection
Worksheets(res_feu).Cells(res_lig, res_col).CurrentRegion.ClearContents

For lig = 0 To nbr_sel - 1
Do
choix = Int(Rnd(1) * nbr_elm) + 1
For i = 0 To lig ' test doubles
If Worksheets(res_feu).Cells(res_lig, res_col).Offset(i).Value _
= Worksheets(inf_feu).Cells(inf_lig, inf_col).Offset(choix - 1).Value _
Then
Exit For
End If
Next i
Loop Until Worksheets(res_feu).Cells(res_lig, res_col).Offset(i).Value = ""

' copie des données sélectionnées
Worksheets(res_feu).Cells(res_lig, res_col).Offset(lig).Formula = "=" & inf_feu & "!R" & choix & "C"
Worksheets(res_feu).Cells(res_lig, res_col).Offset(lig).Resize(1, nbr_col).FillRight

Next lig
End Sub

j'espére qu'on trouvra l'erreur, c'est vraimen important pour moi
aller au revoir et merci
gbinforme- 13 mai 2005 à 19:46
bonjour

j'ai controlé le code et il fonctionne parfaitement pour moi
mais tu dois l'adapter pour les paramètres :

ce que tu veux obtenir :
nbr_sel = 100 ' le nombre de lignes à réviser
nbr_col = 2 ' le nombre de colonnes à recopier


donc sélection de 100 éléments sur 2 colonnes

tes données avec le nom de la feuille et les positions
inf_lig = 1 ' les données sont en ligne inf_lig
inf_col = 1 ' les données sont en colonne inf_col
inf_feu = "données" ' les données sont sur la feuille inf_feu


donc une feuille données avec les infos en A1

les résultats avec le nom de la feuille et les positions
res_lig = 1 ' le résultat est en ligne res_lig
res_col = 1 ' le résultat est en colonne res_col
res_feu = "resu" ' le résultat est sur la feuille res_feu


donc une feuille resu avec les infos en A1

vérifie ton classeur et il te faut plus de 100 lignes d'infos,
tu peux essayer de mettre 10 si ton tableau est petit.

Ajouter un commentaire
Réponse
+1
moins plus
Salut,

J'avais un peu de temps cette nuit, alors j't'ai fait un p'tit programme de révision...télécharge le fichier .xls à cette adresse:


...ensuite, t'as plus qu'à mettre tes 2 colonnes de mots là où tu veux, tu remplis le minuscule formulaire et tu commences ta partie! Lol

ici la capture d'écran: http://membres.lycos.fr/famillepfeiffer/samy/Vocabulaire.htm

ici le fichier:
http://membres.lycos.fr/famillepfeiffer/samy/Vocabulaire.xls

Have Fun! Samy
alzium- 28 oct. 2006 à 12:14
Bonjour,

Je me suis inspiré de votre code VBA pour la traduction anglais/français pour me faire un programme de révision.

Pour pouvoir adapter le code, est-il possible d'avoir le mot de passe pour accèder aux boites de dialogue?
(eurotool mainbutton)

Merci d'avance

Frédéric
samy - 29 oct. 2006 à 22:25
Bonjour,

Je ne me souviens pas avoir laissé de mot de passe pour l'accès à la partie VBA...

@+!
judoka - 10 mai 2009 à 12:02
Bonjour
Quand tu as crée le premier prototype de traduction anglais vers le français et inverse ( dans l'article 7 )
J'ai essayé de faire pareil que vous , mais je n'ai pas pu creer la boîte de dialogue , serait-il possible que vous me donniez les fonction ou macros du tableau de la boîte de dialogue ( les deux tableaux )
serait-il possibble que vous les transmetiez et avec le mode d'emploie slt
Merci
Ajouter un commentaire
Réponse
+1
moins plus
Oups...

...en donnant ce nom au fichier, j'm'étais douté que ça poserait problème!!! Mais j'ai fait l'erreur de pas vérifier ... mais vous auriez pu rectifier de vous-même la fin du lien: "Vocabulaire v2.xls". A cause de l'espace, le "v2.xls" n'a pas été pris en compte dans le lien!

Bref, pour éviter que ça se reproduise:
http://membres.lycos.fr/famillepfeiffer/samy/VocabulaireV2.xls

Vais tester...OK ça marche!

Dsl pour l'étourderie! @+! Samy

Edit: Sorry, viens de voir ton mail milsabor! J'ai pas les yeux grands ouverts j'crois! lol

Bref, pour dire simplement que si ça marchait pas avant sur Excel 97, ça va certainement pas marcher maintenant (c'est la même base)...mais qui sait...essaie toujours!
Pour apprendre ce type de programmation, je sais pas où je pourrais t'envoyer...moi, j'ai appris tout seul pendant un stage où on m'a demandé d'automatiser qqch. J'ai commencé par les macros (tu peux enregistrer et ensuite visualiser le code que ça engendre), et j'ai lu l'aide fournie dans Excel! C'est bien pratique cette programmation! Tu peux l'utiliser dans Word, Excel et Access ... et ça s'appelle le VBA (Visua Basic for Application) tu trouveras peut-être plus de choses avec ces mots-clés. (c'est du Visual Basic, mais light! lol)

Voilà...j'ai fini! lol @+! Samy
Simonsupakrugoldenboy68 - 10 févr. 2009 à 06:41
Bon j'ai pas trouve la solution au probleme excel, par contre j'ai trouve un bon logiciel de remplacement.

http://www.woonoz.com/

Ca permet d'apprendre plein de chose, de creer soit meme ses propre "fiches" vraiment sympa.
virginiefm - 13 févr. 2010 à 14:39
Bonjour samy,

J'ai téléchargé ton fichier vocabulaireV2. C'est absolument génial pour les révisions d'anglais de ma fille (c'est tout de suite plus ludique sur l'ordinateur). J'aimerais savoir s'il serait possible d'ajouter une colonne à côté des deux listes de mots pour y inscrire le nombre de bonnes réponses. Cette colonne serait incrémentée automatiquement à chaque bonne réponse. Cela me permettrait ensuite en faisant un tri dans excel de limiter la révision aux mots qui ne possèdent pas ou peu de bonne réponse.
Je ne sais pas si ma demande est compliquée, je ne connais rien aux macros sous excel.
En tous cas, ton programme est déjà génial en l'état.

Merci

Virginie
le0p0ld - 22 juil. 2010 à 22:40
Ces macros sont effectivement très bien pour réviser son Anglais. En revanche, j'ai un problème pour mes révisions d'Arabe: la boite de dialogue qui apparaît lors des tests retranscrit les mots arabes en ??????. Y a t il un moyen simple de corriger cela?
Ajouter un commentaire
Réponse
+0
moins plus
Essaie ça, je viens de faire et ça marche. Je suis content pour une fois que j'arrive à aider qq.

Sub random()
'
' random
' Macro enregistrée le 13/02/2005 par berounet

x = Int(Rnd(1) * 10): ' remplacer 10 par le dépl hor max souhaité
y = Int(Rnd(1) * 10): ' remplacer 10 par le dépl vert max souhaité

Range(Chr$(65 + x) & y).Select

ActiveCell.Value = "X"

End Sub
UsulArrakis- 13 févr. 2005 à 17:12
salut berounet
ça met un X dans une des cellules de la plage sélectionnée !!!
Ajouter un commentaire
Réponse
+0
moins plus
excusez moi mais j'ai pas compris ce que je devais mettre dans la cellule...
et puis c'est quoi cette histoire de macro??
merci
berounet - 13 févr. 2005 à 19:27
Bon j'avais pas bien lu ta question

Pour pas avoir le X tu supprimes activecell.value ="X"

Tu disais sélectionner une cellule parmis une liste, c'est une plage de cellules contigues ?
quelle info tu mets en entrée ?
Ajouter un commentaire
Réponse
+0
moins plus
je m'explique:
sur excel, j'ai fait une liste de vocabulaire d'anglais, et yen a près de 800. pour pouvoir les réviser, j'aimerais établir une petite liste qui"pioche" au hasard dans la liste, comme ca je peux ré&viser petit bout par petit bout.seulement je connais pas de fonction permettant de faire ca
donc, pour te répondre, je pense que c'est une plage de cellules contigues et qu'il s'agit de texte comme info que je met en entrée
Ajouter un commentaire
Réponse
+0
moins plus
euh merci mais il bug des le debut ton programme!!
milsaborgoldenboy68 - 23 févr. 2005 à 20:46
j'ai excel97
milsaborgoldenboy68 - 23 févr. 2005 à 20:47
j'ai excel97
goldenboy68- 23 févr. 2005 à 22:04
...bon, ben que ça marche chez qqun d'autre ça me rassure...c'est donc pas un problème de référence...quoique...dans 97 c'est peut-être pas les mêmes versions des librairies!

- Microsoft Excel 10.0 Object Library
- Microsoft Forms 2.0 Object Library
- Visual Basic for Application

Ce sont les 3 "Références" cochées ... tu peux toujours vérifier que tu les as bien cochées (ou qu'elles existent!) => Pour vérifier, tu lances le fichier avec "Début du test", tu tomberas sur la ligne jaune fluo dans une fenêtre de programmation, dans cette fenêtre, tu vas dans "Outils" - "Références" et tu regardes si les 3 références que j'ai cité ci-dessus sont bien présentes et cochées.

...j'aurais bien fait les modifications, mais j'ai pas Excel 97...

A tout hasard, j'ai enregistré le fichier sous le format Excel 95 et un sous le format 97-2002 (moi j'vois pas de différence...p't'être que pour toi ça fonctionnera!)

Voilà les liens:
http://membres.lycos.fr/famillepfeiffer/samy/Vocabulaire95.xls
http://membres.lycos.fr/famillepfeiffer/samy/Vocabulaire97.xls

@+! Samy
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

Je propose une piste simpliste, en supposant que :
- le vocabulaire se trouve en colonne 1 d'une feuille appelée Liste, sans titre et sans trous
- que le tirage au sort se pratique dans une feuille appelée Tirage

Dans le code VBA de la feuille Tirage, mettre le code suivant :
Private Sub Worksheet_Activate()

    Dim Nombre As Long
    Nombre = Sheets("Liste").Cells(1, 1).CurrentRegion.Rows.Count
    Sheets("Liste").Cells(1, 10).Value = Nombre

End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Call Tirage
End Sub


Dans un module VBA, mettre le code suivant :
Sub Tirage()

    Dim Nombre  As Long
    Dim Hasard  As Long
    Dim FL      As Worksheet
    Dim FT      As Worksheet
    
    Set FL = Sheets("Liste")
    Set FT = Sheets("Tirage")
    
    Randomize
    
    Nombre = FL.Cells(1, 10).Value
    Hasard = Int(Rnd() * Nombre) + 1
    FT.Cells(10, 3).Value = FL.Cells(Hasard, 1)
    
End Sub


Quand on active la feuille Tirage, une macro de feuille calcule automatiquement le nombre de mots, et le stocke en cellule (1, 10) de la feuille Liste. De cette façon, quand on vient de mettre à jour la liste, ce nombre est recalculé.

Pour déclencher la macro de tirage, j'adopte la solution simpliste : déplacer la sélection dans la feuille Tirage (cliquer au hasard, déplacer les flèches...)
Plus élégamment, on peut mettre un bouton pour appeler la macro.
On peut soigner encore en faisant un petit formulaire qui monte automatiquement à l'ouverture du classeur, etc.

C'est juste une proposition...

Armojax.
Ajouter un commentaire
Réponse
+0
moins plus
bonjour
merci vous etes sympa mais ya rien qui marche c'est pas grave je vais pas vous embeter plus longtemps, je vais plutôt essayer de me renseigner sur le sujet pour en apprendre un peu plus
merci et salut
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

Désolé, mais si ça marche pas, je capitule! lol!

Mais j'suis entrain d'améliorer le programme pour être encore plus paramétrable. De plus, Excel permettant de faire des graphiques...vais ajouter une partie "Progression" où on verra les progrès effectués, ainsi qu'une feuille où seront recensés les résultats de tous les tests effectués.

Voilà, d'ici qq temps ce sera fait, donc si tu passes un jour à une nouvelle version d'Excel...repasse par ici!

PS: je rajouterai un post quand j'aurai fini mes modifications!

@+! Samy
Ajouter un commentaire
Réponse
+0
moins plus
Salut!!! Je suis tombé par hazard sur ce débat et si qq'1 voit ce message, please répondéz-moi...
Je cherche un fonction qui permettrait de tirer au sort avec remise 5 densités différentes afin de réaliser 10 réplicats pour chaque densité!!!! Avez-vous une idée???
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

Pas très clair ta question...c'est quoi ta densité et ton réplicat???

Si tu disais précisément ce que tu voulais, on pourrait p't'être t'aider!

@+!
Ajouter un commentaire
Réponse
+0
moins plus
Re-Salut..
Merci pour m'avoir répondu..
Alors je m'explique....
Je pars de 5 densités distinctes et je cherche à tirer au sort chaque densité 1 fois (...donc en fait c'est sans remise...) les unes après les autres, pour enfin avoir 10 réplicats de chaque densité à la fin! Voilà, j'espère que c'est plus compréhensible!!!
Merci encore
Ajouter un commentaire
Réponse
+0
moins plus
Re-salut,

Plus compréhensible...bof! lol!

Je sais toujours pas ce que c'est une densité?? Tu la représentes par quoi? Tu veux faire ça dans Excel?

Alors voilà ce que moi j'ai 'cru' comprendre:
- Tu as 5 nombres différents dans 5 cellules d'une première colonne (ex: 1-2-3-4-5)
- Tu veux tirer au sort (donc au hasard) parmi ces 5 nombres (de sorte que tu aies les 5!) et tu les mets dans une seconde colonne (qu'on peut nommer Tirage 1 par exemple).
- Enfin, tu voudrais répéter ce tirage 10 fois pour aller jusqu'à la colonne 'Tirage 10'.

Alors, c'est ça?
Autres questions que je me pose:
- 10 réplicats, c'est l'original + 10 ou l'original + 9 tirages?
- T'as peut-être déjà un fichier qui va te servir de base?

J'attends de tes nouvelles! @+! Samy
Ajouter un commentaire
Réponse
+0
moins plus
Alors...
merci pour ta réponse...tu as bien compris par ce que je veux dire...c'est bien de densité de 1 à 5 en chiffres....et c'est bien un tirage au hazard aussi mais sans remise... de sorte qu'au bout de 5 tirage je n'ai plus rien à tirer. Cela me donnera donc 1 réplicat dans chaque catégories de densité (1 à 5)...je devrais donc répéter cette opération 10 fois afin d'avoir N=10 réplicats...
Pour les 10 réplicats, je pars de l'original +9 (donc ça fera réplicats 1; 2; 3; 4; 5; 6; 7; 8; 9; 10)...
Je n'ai pas encore de fichier exacte car je n'ai pas commencé mes expériences....
voilà, en espérant que ça ira mieux...
Merci merci encore....
Ajouter un commentaire
Réponse
+0
moins plus
Voilà...j't'ai fait un p'tit fichier pour tes tirages aléatoires de 'densités'!

Pour l'utilisation:

- Tu remplaces "1, 2, 3, 4 et 5" par tes 5 densités.
- Tu utilises les boutons et tout se fait tout seul!

PS: tu peux cliquer plusieurs fois sur le même bouton si un tirage d'une colonne te plaît pas! lol! (pas besoin de vider le tableau avec le bouton prévu pour ça à chaque fois!)

Si y'a qqch qui ne te conviendrait pas...fais-moi signe!

@+! Samy

Oups...le lien: http://membres.lycos.fr/famillepfeiffer/samy/tirageDensites.xls
Ajouter un commentaire
Réponse
+0
moins plus
Re-coucou tout le monde!

Version améliorée du test de vocabulaire terminée! A télécharger ici:
http://membres.lycos.fr/famillepfeiffer/samy/Vocabulaire v2.xls

Si y'avait des bugs ou remarques sur le fichier...laissez un message ici!!

Voilà! @+!

Samy
timou - 2 sept. 2006 à 19:12
Salut....

j'ai vu ton petit programme excel... MORTEL!!!!

J'ai cherché pendant pas mal de temps des programmes pour apprendre le vocabulaire, et j'ai rien trouvé de mieux!!!

j'ai juste une oudeux remarques :

-compment faire pour grandir la police du mot dans la fentre... je suis un visuel, et j'aimerais que le mot a reviser apparaise genre en taille 20, ainsi que l'entrée que tu lui donne...

-ne serais til pas possible de faire un fonction pour qu'il te pose moins la question des mots que tu sais (genre bien repondu apres 3 fois....)

voila... merci beaucoup
goldenboy68- 4 sept. 2006 à 09:32
Salut,

Alors pour la taille de police dans la message box (fenêtre qui demande la traduction)...je ne sais pas du tout comment changer la taille...c'est pour ça que j'l'avais mis en majuscule il me semble.

Pour ta seconde remarque, elle est pertinente et intéressante...mais je n'ai pas trop le temps de m'occuper de mes p'tites expériences antérieures pour le moment...planning chargé et d'autres projets en tête peut-être moins intéressants...mais plus rémunérateurs! lol

Il faudrait ajouter une pondération pour chaque mot, mais également l'enregistrer éventuellement en quittant Excel. Le plus gros soucis serait de faire le choix en fonction de la pondération...si qqun a plus de temps que moi...

@+! Samy
Ajouter un commentaire
Réponse
+0
moins plus
Salut Samy....
J'ai pas eu le temps e te remercier pour ton petit programme...Merci bien, c'est exactement ce que je voulais....
Peux-tu me l'envoyer sur mon adresse email directement car comme je ne suis pas membre de Lycos, je ne peux pas sauvegarder ton fichier excel... voilà mon mail: manina.nc@caramail.com...
MEci et à bientôt..
Bises
Manina
goldenboy68- 2 mars 2005 à 13:00
Bizarre...pas besoin d'être membre lycos pour télécharger le fichier normalement...en plus, t'y es membre, puisque t'as une adresse chez Caramail! lol

Enfin bref, le mail est parti avec le fichier...

@+! Samy
Armojax- 2 mars 2005 à 16:48
Hello goldenboy68,

Il doit y avoir un petit os dans le lien que tu as copié... ça ne mène pas à ton fichier.
milsaborgoldenboy68 - 2 mars 2005 à 19:37
salut
moi non plus ca marche pas ils disen que la page nexiste plus
enfin bon moi aussi samy je veux bien que tu me l'envoies sur mon mail
radiomilsabor@free.fr en espérant que cette fois ca marche ;-)))
et au fait ou est ce que ca s'apprend cette espece de programmation sur ecel???? ca m'intéresse beaucoup mais je trouve rien sur ccm ni ailleurs...
Ajouter un commentaire
Réponse
+0
moins plus
Moi je souhaiterais faire un truc très simple, mais je n'y connais rien !!! J'aimerais qu'excel me choisisse un mot au hasard dans une liste que j'auais rentré dnas une colone !!! ça doit pas être très sorcier, mais je n'y comprend rien aux macros !!!

Merci de votre aide...
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Ce document intitulé « fonction aléatoire sur excel » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
fonction aléatoire sur excel - page 2