Recherches dans une liste

ozwizard

XLDnaute Nouveau
Bonjour à tous,

Pour une simulation d'animation marketing, j'ai besoin de créer du code pour recueillir quelques données.
Supposons que je vende des boites de chocolat dans lesquelles j'insère une lettre aléatoire. Je veux savoir combien il faudrait en moyenne (et avec X essais dans mon code) qu'une personne achète de boite pour qu'elle recueille les lettrées B R A V O
J'ai déjà pas mal d'éléments dans mon code, mais je ne sais pas comment faire pour savoir quand les lettres ont déjà été tirées. Je sais simuler 100 ventes:
Code:
Dim n as integer, i as string

With Test.Range("A1")

for n = 1 to 100 
i = chr(CInt(Rnd*26°+65) 
.Cells(n,1) = i 
Next

End With
Mais j'aimerai une autre macro qui arrêterai de simuler des ventes lorsque les lettre B, R, A, V, O sont tirées. Avec ca après je pourrai évoluer dans ma simulation en tirant des moyennes d'itérations etc....

Merci d'avance pour toute aide que vous serez en mesure de m'apporter !
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Recherches dans une liste

Bonsoir ozwizard et bienvenue sur XLD :),

Un essai dans le fichier joint.
Le code est dans le module de code de la feuille "Test".
Deux constantes définissent le nombre de fois où on doit obtenir le mot à trouver ("BRAVO") et quel mot on doit trouver.
VB:
Option Explicit
Const nfois = 5000
Const Mot = "BRAVO"

Sub Essai()
Dim nbr&, s$, bravo$, xfois&, tablo(), T0
  T0 = Timer
  Application.ScreenUpdating = False
  Randomize
  With Worksheets("Test")
    .Columns("d:e").Clear
    .Cells(1, "d") = "Tirage n°"
    .Cells(1, "e") = "Nbr boites jusqu'à " & Mot
    xfois = 1
    ReDim tablo(1 To nfois, 1 To 2)
    Do While xfois <= nfois
      bravo = Mot: nbr = 0
      Do While bravo <> ""
        nbr = nbr + 1
        s = Chr(CInt(Rnd * 26 + 65))
        If InStr(bravo, s) > 0 Then
          bravo = Replace(bravo, s, "", 1, 1)
        End If
      Loop
      tablo(xfois, 1) = xfois
      tablo(xfois, 2) = nbr
      xfois = xfois + 1
    Loop
    .Cells(2, "d").Resize(nfois, 2) = tablo
    Application.ScreenUpdating = True
    MsgBox "Durée = " & Format(Timer - T0, "#,##0.00") & " sec."
  End With
End Sub
 

Pièces jointes

  • ozwizard- tirage- v1.xlsm
    16.6 KB · Affichages: 16
Dernière édition:

ozwizard

XLDnaute Nouveau
Re : Recherches dans une liste

Salut mapomme et tout d'abord un GRAND merci d'avoir pris du temps pour avancer sur mon problème.
J'ai regardé ton fichier, c'est super intéressant. Ca m'avance beaucoup et je vais certainement l'utiliser pour toute ma partie stats.
Ce que tu utilises dans le coding, "tablo()", c'est une array? J'essaie de comprendre pour pouvoir avancer seul plus tard/sur d'autres projets. En tout cas merci :D
 

Statistiques des forums

Discussions
314 211
Messages
2 107 328
Membres
109 804
dernier inscrit
Dramac