rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Fonction aléatoire sur excel

milsabor, le dimanche 13 février 2005 à 16:01:26
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
Répondre à milsabor  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Berounet, le dimanche 13 février 2005 à 16:14:38
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
Répondre à Berounet

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
UsulArrakis, le dimanche 13 février 2005 à 17:12:49
salut berounet
ça met un X dans une des cellules de la plage sélectionnée !!! (_Usul d'Arrakis
Serial_Dreamer_)
Répondre à UsulArrakis

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
milsabor, le dimanche 13 février 2005 à 17:51:45
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
Répondre à milsabor

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
berounet, le dimanche 13 février 2005 à 19:27:32
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 ?
Répondre à berounet

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
milsabor, le dimanche 13 février 2005 à 20:48:41
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
Répondre à milsabor

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
gbinforme, le lundi 14 février 2005 à 10:02:22
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.


toujours zen
Répondre à gbinforme

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
milsabor, le lundi 21 février 2005 à 21:54:34
oui d'accord mais où est ce que je l'écris tout ce code?
Répondre à milsabor

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
gbinforme, le lundi 21 février 2005 à 22:36:45
Bonjour

Tu copies les lignes ci-dessous

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



Puis tu sélectionnes la fenêtre excel :

Tu choisis menu "outils" puis "macro" puis "visual basic editor" ou ALT + F11

Puis tu choisis et double clique sur feuil1,
et tu colles pour avoir la macro.

Tu sélectionnes à nouveau la fenêtre excel

Tu choisis menu "outils" puis "macro" puis "macros" ou ALT + F8

La macro apparait et tu choisis "options"

après "crtl +" tu rajoutes "s" (pour sélection) puis "ok"

lancer le choix

tu fais CRTL + s

Tu peux bien sûr choisir une autre lettre à toi de voir !

Avec ALT + F8, puis modifier tu peux changer le nombre de sélections.

En espérant que la solution te conviendras ...

toujours zen
Répondre à gbinforme

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
milsabor, le mardi 22 février 2005 à 20:20:44
oui mais quand je fais play l'ordinateur me dit "erreur d'execution 9:indice en dehors de la plage"
et il me surligne en jaune petant cette ligne "nbr_elm=worksheets("feuill1"). range ("a1").end(x1down).rows
voila. et puis a quoi ca sert de faire ctrl+s?
Répondre à milsabor

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
gbinforme, le mardi 22 février 2005 à 21:18:16
bonjour

"nbr_elm=worksheets("feuill1"). range ("a1").end(x1down).rows

tu as recopié le code et il y a une erreur de frappe car
il n'y a qu'un seul L ! : copier / coller çà gagne du temps !
toujours zen
Répondre à gbinforme

18


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
milsabor, le mercredi 23 février 2005 à 20:43:02
salut
mais j'ai fait copier/coller!!! c'etait ecrit comme ca. mais meme si je rajoute un l a tous les feuil ca marche pas...
Répondre à milsabor

37


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
mariel, le mardi 29 mars 2005 à 14:03:31
bonjour,
j'utilise votre macro pr les tirages aléatoires mais j'aurais voulu savoir si c'était possible de les effectuer sans remise...
en fait, j'ai une colonne avec environ 500 valeurs numériques dans laquelle je souhaite choisir 100 valeurs, sans remise, est-ce possible ?
merci d'avance
Répondre à mariel

38


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
gbinforme, le mardi 29 mars 2005 à 18:11:13
bonjour

voila la macro corrigée pour éliminer les doubles,
gérer la totalité des enregistrements,
et faciliter le paramétrage des données et des sélections :

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



bonne utilisation.

toujours zen
Répondre à gbinforme

42


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
abdel, le mercredi 4 mai 2005 à 16:13:48
bonjour
c'est just pour signaler que votre programme ne ùarche pas
il me donne toujours un message d'erreur
que l'indice n'appartient pas a la séléction
je sais pas ça veut dire quoi
merci de me répendre
au revoir
Répondre à abdel

43


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
gbinforme, le mercredi 4 mai 2005 à 18:17:18
bonjour

pour moi, les feuilles s'appellent "données" et "resu"

si les tiennes s'appellent "feuil1" et "feuil2",
il faut changer ces paramètres

toujours zen
Répondre à gbinforme

48


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
abdel, le jeudi 12 mai 2005 à 11:28:39
salut
je te r emerci sur l'aide que tu m'a apporté sur le sujet de tirage aléatoire sur Excel.
tu avais proposer un programme, et c'est la mon problème aujourd'hui, la question est sur la ligne suivante:
Worksheets(res_feu).Cells(res_lig, res_col).Offset(lig).Resize(1, nbr_col).FillRight
il me dit qu'il y a un pb. je sais pas c'est quoi?? est ce que tu vois une erreur??
merci d'avance
Répondre à abdel

49


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
gbinforme, le jeudi 12 mai 2005 à 18:29:52
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.

toujours zen
Répondre à gbinforme

50


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
abdel, le vendredi 13 mai 2005 à 08:47:56
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
Répondre à abdel

51


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
gbinforme, le vendredi 13 mai 2005 à 19:46:42
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.

toujours zen
Répondre à gbinforme

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
goldenboy68, le lundi 14 février 2005 à 11:55:29
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
Répondre à goldenboy68

98


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
alzium, le samedi 28 octobre 2006 à 12:14:44
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
Répondre à alzium

99


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
samy, le dimanche 29 octobre 2006 à 22:25:21
Bonjour,

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

@+!
Répondre à samy

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
milsabor, le lundi 21 février 2005 à 21:51:32
euh merci mais il bug des le debut ton programme!!
Répondre à milsabor

11


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
goldenboy68, le mardi 22 février 2005 à 18:06:02
Salut,

T'utilises quelle version d'Excel??? (c'est codé sur Excel 2002, mais bon, devrait pas y avoir de problème sur Excel 97). Parce que je viens de réessayer, et il marche très bien tel quel (t'as fait des modifs et ça marchait plus après ou ça marche vraiment pas dès le début???).

Sinon, j'me souviens plus si j'avais précisé qu'il fallait activer les macros (si Excel ne te le demande pas à l'ouverture, vérifie le niveau de sécurité dans: "Outils" - "Macros" - "Sécurité" et mets "Moyen", comme ça à l'ouverture de mon programme, Excel te demandera si tu veux exécuter les macros...faudra dire "Oui" bien sûr! lol).

Voilà! Y'a pas de raison qu'ça marche pas!

@+!
Répondre à goldenboy68

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
milsabor, le mardi 22 février 2005 à 20:22:44
ben je veux bien mais quand je fais "début du test" il me met "erreur de compilation: sub ou fonction non définie"et dans lke code il me surligne le premier "round"
et quand je fais ok il met en jaune flashy avec la fleche "private sub commandbutton1_click()" tout au début du code. help!!!
Répondre à milsabor

15


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
goldenboy68, le mardi 22 février 2005 à 23:51:46
On va bien y arriver! lol!

T'utilises quoi comme version d'Excel? Parce que je viens d'essayer à partir d'un autre PC, ça fonctionne aussi!

gbinforme...si tu pouvais essayer de lancer mon fichier...

@+!
Répondre à goldenboy68

17


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Armojax, le mercredi 23 février 2005 à 18:20:04
Hello, goldenboy68,

Excuse-moi, je suis passé un peu vite sur la discussion, et je n'avais pas récupéré ton fichier. Ça fonctionne très bien, c'est parfait...

Ajx.
Répondre à Armojax

21


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
milsabor, le mercredi 23 février 2005 à 20:48:22
oui ben moi ca marche pas!!!
Répondre à milsabor

19


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
milsabor, le mercredi 23 février 2005 à 20:46:16
j'ai excel97
Répondre à milsabor

20


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
milsabor, le mercredi 23 février 2005 à 20:47:30
j'ai excel97
Répondre à milsabor

22


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
goldenboy68, le mercredi 23 février 2005 à 22:04:08
...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
Répondre à goldenboy68