Fonction aléatoire sur excel
Résolupampam1983 -
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
- Sélection aléatoire excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
- Comment trier par ordre alphabétique sur excel - Guide
67 réponses
Excel 97 ne dispose pas d’une fonction intégrée permettant de choisir au hasard une cellule parmi une liste prédéfinie.
La solution privilégiée est d’utiliser une macro VBA qui génère un indice aléatoire et remplit une plage cible avec les valeurs correspondantes.
Un exemple type présente une macro Sub sélection() qui calcule nbr_elm à partir d’une liste sur Feuil1 et écrit sur Feuil2 des références vers Feuil1 en s’appuyant sur Rand pour le tirage.
Des variantes adaptent le nombre d’éléments et de colonnes, et les retours indiquent des soucis potentiels selon la version et la langue d’Excel, avec des conseils pour apprendre et utiliser les macros VBA.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionCette macro n'augmente la taille que de quelques caractères seulement,
et donc ne peut pas saturer le disque, sauf erreur de boucle.
Avant de rajouter le nom de cellule as-tu sauvé ton fichier ?
Cette macro n'augmente la taille que de quelques caractères seulement,
et donc ne peut pas saturer le disque, sauf erreur de boucle.
Avant de rajouter le nom de cellule as-tu sauvé ton fichier ?
tu me dis :
maintenant j'ai une autre erreur qui est : espace file insufisant
puis maintenant :
toujour l'erreur pile insuffisant
ce qui n'est pas du tout pareil
et avec des réponses laconiques c'est impossible de progresser,
car en informatique la précision est de rigueur.
J’ai 2 problèmes sur Excel et je voudrais bien de l'aide.
Existe t-il une fonction qui puisse afficher 1 question automatiquement dès que l'on rentre un enregistrement?
Existe t-il une fonction pour afficher dans 1 cellule la date de sauve garde du fichier?
Merci de m'aider
Existe t-il une fonction pour afficher dans 1 cellule la date de sauve garde du fichier?
tu regades la réponse 68 au-dessus.
Existe t-il une fonction qui puisse afficher 1 question automatiquement dès que l'on rentre un enregistrement?
tu peux avoir une vérification avec : menu outils/données/validation
mais pour une question, il faut mettre une macro.
si tu précise ta question (ligne, colonne,etc.), je te la proposerai
Tu sais d'ou ca peut venir?
La précision que je souhaitais apporter est que votre première colonne doit etre composée de numéros tous différents.
ex : mettre en première colonne une numérotation de 1 à 50 (si vous avez 50 lignes)
Rappel de la macro concernée (et qui marche !!!) MERCI Gbinforme !
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
Rappel de la macro concernée (et qui marche !!!) MERCI Gbinforme !
merci, c'est sympa !
La précision que je souhaitais apporter est que votre première colonne doit etre composée de numéros tous différents.
ex : mettre en première colonne une numérotation de 1 à 50 (si vous avez 50 lignes)
comme la macro était destinée à la révision de mots anglais ils sont par nature tous différents. Si ce n'est pas le cas, il faut modifier le contrôle des doubles, en analysant l'ensemble de la ligne ou en décalant la colonne testée, selon la nature du fichier.
Très intéressée par votre programme pour la révision des mots en anglais, je souhaiterais l'adapter pour un autre exercice, chercher le singulier ou le pluriel d'un mot.
C'est la même chose en fait sauf qu'au lieu de deux colonnes français et anglais, j'ai deux colonnes singulier et pluriel.
J'ai modifié le nom des variables pour m'y retrouver ainsi que le texte des questions et des différents messages.
Mais il me reste deux choses que je souhaiterais changer et là je bloque :
- je ne souhaite pas que le mot à écrire (anciennement motATraduire) apparaisse en majuscules au niveau de la question posée mais en minuscules
- je souhaiterais changer ce qu'il y a d'écrit dans les cases de contrôles (Nom colonne français, Nom colonne anglais, ...), où puis-je le faire ?
Merci d'avance pour vos éclaircissements et bravo à gbinforme pour ce fabuleux programme !
Mais je ne suis pas rancunier et gbinforme aurait certainement réussi à en faire un semblable, donc peu importe.
Pour accéder aux contrôles, il faut passer en "mode création". Pour y arriver:
- clic droit dans la barre d'outils et activer la barre "Visual Basic"
- clic sur la petite équerre avec le crayon pour activer le "mode création"
- clic droit sur le contrôle à modifier, et "Propriétés"
- Là il suffit alors de modifier le champ "Caption"
Pour l'histoire des majuscules, il faut afficher le code source (il y a une icône "Visualiser le code" avec une petite loupe dans la barre "Visual Basic"). Dans le code, il suffit normalement de supprimer tous les "UCase(...)"
ex:
motATraduire = UCase(ActiveSheet.Cells(ligne, Me.TextBox3.Value).Text)
deviendra:
motATraduire = ActiveSheet.Cells(ligne, Me.TextBox3.Value).Text
Mais en enlevant cela, les réponses seront soumises à une casse rigoureusement exacte!
@+! Samy
J'aurais besoin de votre aide précieuse pour mon boulot, voici mon problème:
J'ai une liste de parcelles sous excel avec différentes informations les concernant sur la même ligne dont le nom du propriétaire. Ce que j'aimerais avoir c'est une liste de parcelles tirées au hasard à raison d'une seule par propriétaire. Est-ce faisable? Sachant que le nombre de parcelles par proprétaires est variable (1 à 30 environ).
Je sais pas si c'est très clair... J'ai vraiment du mal avec VB, pour l'instant, j'ai utilisé le programme de goldenboy68, qui est super d'ailleurs, mais je me retrouve avec plusieurs parcelles du même gars!
Merci d'avance pour votre aide!
@+
Laurie
1 seule parcelle par propriétaire, ok mais est-ce qu'il faut absolument en afficher une de tous les propriétaires présents dans la liste? Faut-il en tirer au sort un certain nombre? Comment veux-tu que ça s'affiche (tri de la liste avec en premier les parcelles sélectionnées, changement de couleur de fond des parcelles sélectionnées, autre...)?
Voilà je pense l'essentiel de ce qu'il faudrait pour pouvoir te faire qqch.
@+! Samy
Ben en fait il me faut obligatoirement une seule parcelle par proprio. Le truc c'est que par zone agricole, j'ai une liste de parcelles avec leur propriétaire. Sur le terrain, il faut se rendre sur 1 parcelle de chaque gars. Comme il faut qu'elle soit à chaque fois prise au hasard, je me disais qu'avec une macro...
Donc au final, j'aimerais qu'une macro choisisse une parcelle par propriétaire dans la grande liste. Le nombre de parcelles tirées au sort dépend donc du nombre de gars différents (nb proprio = nb de parcelles tirées au sort). Après, au niveau affichage, faut voir ce qui est le plus facile à faire, je n'ai pas d'exigence à ce niveau!
En tout cas merci!
@+
Laurie
Voilà , ce que je tente de faire c'est ceci : j'ai une liste de 30 mot (a5:a34) et j'aimerais avoir une deuxième colonne admettons en c (c5 a c30) ou l'ordre de c'est mot serait choisie aléatoirement
Plusieurs Tirage au sort doivent être effectuer durant une année et aucun mot ne doit revenir deux fois.
En passant , je suis pris avec une version de excel anglaise :s
Merci à l'avance :)
J'te remets le lien : http://membres.lycos.fr/famillepfeiffer/samy/tirageDensites.xls
@+