Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1307 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Fête d'ami - VBA dans Excel 2007

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Fête d'ami - VBA dans Excel 2007

n°2132149
yanlau1977
Posté le 20-03-2012 à 02:26:13  profilanswer
 

Bonjour,
 
Je voudrais faire un petit programme excel très simple
 
Dans les cellules A1 à A30 ou A40 (environ) je veux inscrire tous les amis invités de mon fils.
 
Ensuite, je veux faire un tirage de 5 cadeaux. Les amis ne peuvent pas gagner plus d'une fois.
 
J'ai fait une fonction qui me permet de savoir le nombre d'enfants ... c'est déjà un bon début  
 
Maintenant je voudrais bâtir une liste de tous les noms en mémoire et faire un random pour avoir 1 gagnant, enlever ce gagnant de la liste, refaire un random, enlever ce gagnant, etc ... le tout 5 fois.
 
Merci pour votre aide

mood
Publicité
Posté le 20-03-2012 à 02:26:13  profilanswer
 

n°2132312
yanlau1977
Posté le 21-03-2012 à 05:40:44  profilanswer
 

Alors voici ce que je voudrais faire exactement :
 
Mon petit programme est plus compliqué que je l'avais imaginé ...
 
Le tirage au sort soit se faire en x étapes, autant d'étape qu'il y a de cadeaux.
 
Le premier résultat doit écrire BRAVO vis à vis la ligne du participant ayant remporté le prix et vis à vis la colonne "Cadeau 1".
Le deuxième résultat doit écrire BRAVO vis à vis la ligne du participant ayant remporté le prix et vis à vis la colonne "Cadeau 2".
Le troisième résultat ........ vis à vis la colonne "Cadeau 3"
Le quatrième résultat ......... vis à vis la colonne "Cadeau 4"
etc ... jusqu'au 6e cadeau.
 
Voici mon code
 
Sub TestY()
 
    Dim NombreCadeau As Integer
    NombreCadeau = Range("A1" ).Value
    Feuil2.Range("B2", "G14" ).ClearContents
    GenereSerieAleatoireSansDoublons NombreCadeau, Range("B2" )
End Sub  
 
Sub GenereSerieAleatoireSansDoublons(NbValeurs As Integer, Cell As Range)
    Dim Tableau() As Integer, TabNumLignes() As Integer
    Dim i As Integer, k As Integer, col As Integer
    Dim LastRow As Integer
 
    ReDim Tableau(NbValeurs)
    ReDim TabNumLignes(NbValeurs)
 
    col = 2
 
    LastRow = Feuil2.Range("A" & Rows.Count).End(xlUp).Row
    LastRow = LastRow - 1 'ENLEVER 1 valeur puisque A1 ne compte pas pour un participant ... pas très esthétique comme programmation désolé
 
    For i = 1 To NbValeurs
        TabNumLignes(i) = i
        Tableau(i) = i
    Next
 
    'Initialise le générateur de nombres aléatoires
    Randomize
 
    For i = NbValeurs To 1 Step -1
        k = Int((i * Rnd) + 1)
        Cells(k + 1, col) = Tableau(TabNumLignes(k))
        'Cells(k + 1, col) = "BRAVO"
        col = col + 1
        TabNumLignes(k) = TabNumLignes(i)
    Next
 
End Sub
 
Je ne suis vraiment pas loin ... le problème est que les résultats ne s'affiche pas dans les bonnes lignes ...
 
 
Bon courage au pro du VBA ... moi j'ai la tête qui devient folle  

n°2132558
tarteflamb​ee
Posté le 22-03-2012 à 21:04:11  profilanswer
 

Tu n'utilises pas ton LastRow :o

 

sinon l'histoire de retirer un élément ca me fait penser direct à une collection qui a une méthode Remove:

 
Citation :

Sub tirage()

 

Dim i As Integer, nbCadeaux As Integer, num_gagnant As Integer
Dim collec As Collection

 

nbCadeaux = 5

 

With ThisWorkbook.Worksheets("Tirage" )
    Set collec = New Collection
    For i = 1 To .Cells(1, 1).End(xlDown).Row
        collec.Add Item:=i, Key:=CStr(.Cells(i, 1).Value)
    Next i
   
    .Columns(2).ClearContents
    Randomize
   
    For i = 1 To nbCadeaux
        num_gagnant = Int((Rnd * collec.Count) + 1)
        .Cells(collec.Item(num_gagnant), 2).Value = "Cadeau " & CStr(i) 'get winner line from item i
        collec.Remove (.Cells(collec.Item(num_gagnant), 1).Value) 'remove winner from collec with name as key
    Next i
    Set collec = Nothing
End With

 

End Sub



Message édité par tarteflambee le 22-03-2012 à 21:05:56

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Fête d'ami - VBA dans Excel 2007

 

Sujets relatifs
besoin d'une petite ligne VBA pour AccessUn graphique Excel avec des aspects différents ! SVP !!! (VBA)
Aide sur macro ExcelAide VBA - verrouillage code et cellule
VBA - aide sur macro comparativeVBA aide copier résultat filtre !!!
Rechercher un fichier texte puis copier le contenu dans ExcelMails automatiques Excel/Outlook avec pj
Mise a jour automatique fichier excel 
Plus de sujets relatifs à : Fête d'ami - VBA dans Excel 2007


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR