Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Croiser deux Code VBA

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

vincent noah

XLDnaute Junior
Bonjour à tous !

je souhaite croiser deux code (proposé gentillement par job75) pour que le premier tir aléatoirement et sans doublons un nombre défini de tirage ex: 10
qui sont colorier en bleu.
en suite à partir du dixième tirages .on continu uniquement sur les cellules non colorée jusqu'à ce qu'une cellule contient un 5 ou un 4 ... c'est pas facile de l’expliquer j'ai essayer mais sans succès me parait très difficile . 1er code :
.
Code:
Private Sub Worksheet_Calculate()
Dim r As Range, limite, decharge&, nc&, d As Object
Dim c As Range, bleu As Range, n&
Set r = [A1:A30]
limite = [D2]
decharge = 500
nc = r.Count
r.Interior.ColorIndex = xlNone 'RAZ
Randomize
Set d = CreateObject("Scripting.Dictionary")
While d.Count < limite
  Set c = r(Int(1 + Rnd * nc))
  If Not d.exists(c.Value) Then
    d(c.Value) = ""
    Set bleu = Union(c, IIf(bleu Is Nothing, c, bleu))
    n = n + 1
    If n Mod decharge = 0 Then 'décharge
      bleu.Interior.ColorIndex = 47 'bleu
      Set bleu = Nothing
    End If
  End If
Wend
If Not bleu Is Nothing Then bleu.Interior.ColorIndex = 47  'bleu
If Not c Is Nothing Then c.Interior.ColorIndex = 3 'rouge
End Sub
et le deuxième:
Code:
Sub Tirage()
Dim r As Range, cible, ncoul As Range, nc&, d As Object, c As Range
Set r = [A1:A30] 'plage à adapter
cible = 4 or 5 'à adapter
Set ncoul =  [E2]'nombre de tirages total 
r.Interior.ColorIndex = xlNone 'RAZ
ncoul = ""
If Application.CountIf(r, cible) = 0 Then _
  MsgBox "Valeur cible introuvable !", 48: Exit Sub
Application.ScreenUpdating = False
Randomize
nc = r.Count
Set d = CreateObject("Scripting.Dictionary")
Do
  Set c = r(Int(1 + Rnd * nc))
  If c <> "" And Not d.exists(c.Value) Then
    d(c.Value) = ""
    c.Interior.ColorIndex = 47 'bleu
  End If
Loop While c <> cible
c.Interior.ColorIndex = 3 'rouge
ncoul = d.Count
End Sub

voilà j'espère que j'ai étais claire 😕

MERCI pour toute aides .
 

Pièces jointes

Re : Croiser deux Code VBA

Bonsoir vincent noah,

Vous devriez arrêter de vous triturer le cerveau avec ce genre de problème.

Vous allez finir par vous faire du mal, en aucun cas mes codes n'en seraient responsables 🙄

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
234
Réponses
4
Affichages
480
Réponses
5
Affichages
291
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
536
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…