prendre aléatoirement des cellules

mgrizzly

XLDnaute Junior
Bonjour,
Dans la colonne C de mon tableau (de la ligne 9 à 59) il y a des 1 et des 0.
J'aurais besoin d'un code en VBA qui prenne aléatoirement 3 cellules de la colonne C et uniquement parmi celles qui ont des 1.
Merci de m'aider.
 

Pierrot93

XLDnaute Barbatruc
Re : prendre aléatoirement des cellules

bonjour,

oui ca je l'avais compris :
On doit prendre 3 cellules qui ont des 1 dans les lignes 9 à 24, 3 qui ont des 1 dans les lignes 25 à 41 et 3 qui ont des 1 dans les lignes 42 à 59, sauf les cellules qui sont en rouges (en rouge sont les agents en congés) dans la feuille "compétences". On doit pouvoir les prendre aléatoirement.

où cela pose un problème c'est, ci dessous, de quelle façon les redistribuer, d'ou mes questions d'hier soir !!!

Il faudrait ensuite afficher les 9 valeurs trouvées précédemment dans toutes les cellules non jaune de la ligne 4 à 34 dans la feuille "mois en cours"

regarde le code ci-dessous, redistribue les 9 valeurs tirées aléatoirement, dans toutes les cellules vides et non jaunes de la plage F4:F34, je pense que tu pourras adapter à tes besoins si cela ne correspond pas....

Code:
Option Explicit
Sub test()
Dim i As Byte, y() As Variant, z() As Variant, x As Integer, c As New Collection
Dim p As Range, v As Byte, w(8) As String
Randomize
y = Array(16, 17, 18)
z = Array(9, 25, 42)
For i = 0 To 2
    Do While c.Count < 3
        x = Int(y(i) * Rnd + z(i))
        If Cells(x, 3) = 1 And Cells(x, 3).Interior.ColorIndex <> 3 Then
            On Error Resume Next
            c.Add Cells(x, 3).Address, CStr(Cells(x, 3).Address)
            If Err = 0 Then
                On Error GoTo 0
                w(v) = Cells(x, 1).Value
                v = v + 1
            End If
            On Error GoTo 0
        End If
    Loop
    Set c = Nothing
Next i
v = 0
For Each p In Sheets("Mois en cours").Range("F4:F34")
    If p.Interior.ColorIndex <> 6 And IsEmpty(p.Value) Then
       p.Value = w(v)
        v = IIf(v = 8, 0, v + 1)
    End If
Next p
End Sub

bon après midi
@+
 

mgrizzly

XLDnaute Junior
Re : prendre aléatoirement des cellules

Merci beaucoup Pierrot mais je ne vois pas ce que tu veux dire par " de quelle façon les redistribuer". Il faudrait remmetre les 9 valeurs mais dans chaque cellules de "mois en cours".
Exemple:
cellule F4 : 9 valeurs
cellule F5 : 9 autres valeurs
cellule F6 : 9 autres valeurs
.
.
.
cellule F34: 9 autres valeurs
 

Pierrot93

XLDnaute Barbatruc
Re : prendre aléatoirement des cellules

Re

que veux tu dire par :

Code:
cellule F4 : 9 valeurs
cellule F5 : 9 autres valeurs

faire un autre tirage aléatoire de 9 valeur pour chaque cellules.... manque de précision tout ca.... je pense que maintenant tu as tous les codes te permettant d'adapter à ton besoin final...

bonne fin de journée
@+
 

mgrizzly

XLDnaute Junior
Re : prendre aléatoirement des cellules

Je veux dire que les 9 valeurs tirés aléatoirement doivent se mettre toutes dans la cellule F4.
Dans la cellule F5 on aura 9 autres valeurs tirés aléatoirement.
Et ainsi de suite jusqu'à la cellule F34.
Dans ton code, on ne trouve qu'1 valeur par cellule moi j'en voudrais 9.
 

Pierrot93

XLDnaute Barbatruc
Re : prendre aléatoirement des cellules

Re

modifies la dernière boucle comme suit :

Code:
For Each p In Sheets("Mois en cours").Range("F4:F34")
    If p.Interior.ColorIndex <> 6 And IsEmpty(p.Value) Then
        For v = 0 To 8
            p.Value = w(v) & vbLf
        Next v
    End If
Next p

@+
 

mgrizzly

XLDnaute Junior
Re : prendre aléatoirement des cellules

Voilà j'ai mis ça à la fin du code et j'ai bien les 9 valeurs qui s'affichent dans les cellules sauf ce sont les mêmes noms sur tous le mois et j'aimerais qu'à la moitié du mois (au 15) on prenne aléatoirement d'autre nom.
Exemple:
ligne 4 à 15: toto titi tata ...
ligne 16 à 34: lili lolo lala ...

For Each p In Sheets("Mois en cours").Range("F4:F34")
If p.Interior.ColorIndex <> 6 And IsEmpty(p.Value) Then
p.Value=w(0)
for v=1 to 8
p.Value =p.value & " " & w(v)
next v
End If
Next p
 

Discussions similaires

Statistiques des forums

Discussions
312 427
Messages
2 088 308
Membres
103 813
dernier inscrit
mehdifr