1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
Public plagetest
'Macro qui va te mettre au hasard des cellules en vert(en quelque sorte un nouveau tableau)
Sub Nouveau_tableau()
Set plagetest = Range("A1:P24") ' désigne la plage test
Range("A1:P24").Interior.Color = xlNone
i = 0
Do
Randomize
i = i + 1
Cells((Rnd * (plagetest.Rows.Count - 1)) + 1, (Rnd * (plagetest.Columns.Count - 1)) + 1).Interior.Color = vbGreen
Loop Until i = 200
End Sub
Sub Virus()
Dim i As Long, col As Long, ligne As Long, cel As Range, lacel As Range
Do
Randomize
wait 10 ' on fait appel a cette macro pour un temps de répits entre chaque sauts(facultatif)
i = i + 1 'on incrémente i dans la grande boucle
col = Int(1 + (Rnd * plagetest.Columns.Count)) ' on désigne une colonne au hasard
ligne = Int(1 + (Rnd * plagetest.Rows.Count)) ' on désigne une ligne au hasard
Set lacel = Cells(ligne, col) 'lacel devient la cellule avec les coordonnées au désignée hasard avec ligne et col
If lacel.Interior.Color = vbGreen Then 'si elle est verte
lacel.Interior.Color = vbRed ' on la met en rouge
nb1 = nb1 + 1 'nb1 correspondra au nombre de cibles atteintes du premier coup(facultatif)
Else 'si la cible n'est pas rouge
'on vérifie si la ligne et la colonne au hasard n'est pas plus petit ou égale a 1
ligne = IIf(ligne <= 1, 1, ligne) 'si la ligne est plus petit ou egale a 1 ligne sera 1 sinon ligne
col = IIf(col <= 1, 1, col) 'si la colonne est plus petite ou egale a 1 col sera 1 sinon col
'la plage des cellule periphérique demmarre a 1 au minimum pour la colonne et la ligne
For Each cel In Range(Cells(ligne, col), lacel.Offset(1, 1))
If cel.Interior.Color = vbGreen Then 'si elle est verte on la met en marron
cel.Interior.Color = 155621
nb2 = nb2 + 1 'nb2 correspondra au nombre de cibles intermediaires trouvées(facultatif)
Exit For
End If
Next
End If
Loop Until i = 200
'on affiche le raport dans un message(facultatif)
MsgBox "il y a eu " & nb1 & " cible atteintes dans le mille" & vbCrLf & "ET" & vbCrLf & nb2 & " cibles en rattrapages" & vbCrLf & " En 200 sauts"
End Sub
Sub wait(seconde As Long)
Do: s = s + 1: Loop Until s = seconde * 100000
End Sub |
Partager