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
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
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
Combien cela coûte-t-il au total ? Quelles aides apportent l'état et les acteurs du marché pour alléger cette charge non choisie ? Tous les détails sur Commentçamarche.net.
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.
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
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.