Nouveau sur Excel-Pratique
Bonjour a tous , nouveau sur ce site depuis aujourd’hui et j’espère trouver de l'aide sur Excel-Pratique .
Je suis a la recherche d'une boucle " nombre aléatoire " a partir d'une cellule " C1 "ou est noté le nbre de participant pouvant aller jusqu'a 150. Sur le tableau ci-desous je ne parviens pas a lui indiquer la cellule pour faire la boucle "nombre aléatoire . Cette programmation a été faite Par AMADEUS posté le 7 mai 2010, car moi j'en suis incapable . merci de votre aide .
'Code initial Soft Excel Pratique
Sub Rempli()
Dim Temp As Integer, Existe As Boolean
Dim I As Integer, J As Integer
Dim Tableau(150) As Integer, RDest As Range
Set RDest = ActiveSheet.Range("a3:a150")
Application.ScreenUpdating = False
Randomize
For I = 1 To 150
Existe = True
While Existe
Temp = Int(150 * Rnd + 1)
For J = 1 To 150
If Temp = Tableau(J) Then
Existe = True
Exit For
Else
Existe = False
End If
Next J
Wend
Tableau(I) = Temp
Next I
For I = 1 To 150
RDest(I).Value = Tableau(I)
Next I
Application.ScreenUpdating = True
End Sub
Bonsoir Joan66 et
Comme je n'étais pas couché et que je suis passé par ici, voici ma réponse
Sub Remplir()
Dim Ind As Integer, Temp As Integer
Dim MaCollection As Collection, Nombre As Variant
Dim Flg As Boolean
Dim NbParticipant As Integer
' Initialiser MaCollection
Set MaCollection = New Collection
' Récupérer le nombre de participants dans la cellule C1
NbParticipant = Range("C1")
' Tirage aléatoire d'un chiffre de 1 ) NbParticipant
Randomize
' Pour chaque participant
For Ind = 1 To NbParticipant
' Lancer 1 tirage aléatoire
Do
' Nombre aléatoire
Temp = Int(NbParticipant * Rnd + 1)
' En cas d'erreur lors de l'ajout à la collection
' on continue le code
On Error Resume Next
' Ajouter le chiffre à la collection
MaCollection.Add CStr(Temp), CStr(Temp)
' Le chiffre existe déjà ?
If Err.Number <> 0 Then
' Si oui,
' on efface l'erreur, et on met le flag à vrai pour recommencer
Err.Clear: Flg = True
Else
' sinon, flag à faux
Flg = False
End If
On Error GoTo 0
Loop While Flg = True
Next Ind
' Réinitialiser l'indice
Ind = 2 ' Commencer à la ligne 2
' Restituer la collection
For Each Nombre In MaCollection
Range("A" & Ind).Value = Nombre
Ind = Ind + 1
Next Nombre
' Effacer les variables objet
Set MaCollection = Nothing
End Sub
J'espère que ce code correspondra à ta demande
A+
Merci je vais voir la Macro demain car je suis épuisé . merci pour votre aide . je vous tiens au courant demain
Bonjour Messieurs , votre aide est très efficace car toutes les Macros fonctionnent . Je vais maintenant, essayer, je dit bien essayer de mettre un compteur pour que la boucle se réalise 4 fois et colle les chiffres aléatoire une fois en AF , AG, AH, et une autre en AI , bien sur différent des une au autres . Une fois mon tableau terminé je le posterai sur le site .
Merci . Joan 066
Salut Joan66
Joan066 a écrit :Bonjour Messieurs , votre aide est très efficace car toutes les Macros fonctionnent . Je vais maintenant, essayer, je dit bien essayer de mettre un compteur pour que la boucle se réalise 4 fois et colle les chiffres aléatoire une fois en AF , AG, AH, et une autre en AI , bien sur différent des une au autres . Une fois mon tableau terminé je le posterai sur le site .
Merci . Joan 066
Il te faut imbriquer la boucle existante dans celle pour les colonnes
For Col = 32 to 35
... le code ...
Next Col
Sans oublier d'utiliser
Cells(Ligne,Colonne).value
pour inscrire tes valeurs
A+