OVH Cloud OVH Cloud

[HS] Matrix en VB

4 réponses
Avatar
Franck
Bonjour à tous,

Comme je sais que quasiment tout est possible en VB, j'aurais aimé savoir
(pour m'amuser) s'il serait possible de reproduire l'écran noir avec des
caractères verts qui tombent du film "Matrix" par une macro VB.

Mes premiers essais ne sont pas très satisfaisants, le problème étant de
générer un caractère aléatoire dans une cellule etc.

Pour l'instant je teste avec des chiffres aléatoires :

Sub matrix()

ActiveWindow.Zoom = 102

k = 0

Do

For i = 1 To 46
For j = 1 To 14

Cells(i, j).Value = "=RAND()"
Attente (100)

k = k + 1

Next

Next

Loop Until k > 5

End Sub

Sub Attente(milisecond As Integer)

Dim Start, PauseTime

PauseTime = milisecond / 7200
Start = Timer

Do While Timer < Start + PauseTime

DoEvents

Loop

End Sub

sur une feuille mise en forme : fond noir caractères verts.

Le résultat est encore très loin du rendu Matrix, aussi, si certains d'entre
vous peuvent m'aider, je suis preneur.

4 réponses

Avatar
PMO
Bonjour,

Est-ce mieux avec le code suivant

'******************
Sub matrix_PMO()
Dim i&
Dim R As Range
Set R = Range(Cells(1, 1), Cells(60, 20))
R = "=RAND()"
R.Font.Color = RGB(19, 255, 19)
R.Font.Bold = True
R.Interior.ColorIndex = 1
For i& = 1 To 100
R = "=RAND()"
Next i&
End Sub
'******************

Cordialement.
--
PMO
Patrick Morange



Bonjour à tous,

Comme je sais que quasiment tout est possible en VB, j'aurais aimé savoir
(pour m'amuser) s'il serait possible de reproduire l'écran noir avec des
caractères verts qui tombent du film "Matrix" par une macro VB.

Mes premiers essais ne sont pas très satisfaisants, le problème étant de
générer un caractère aléatoire dans une cellule etc.

Pour l'instant je teste avec des chiffres aléatoires :

Sub matrix()

ActiveWindow.Zoom = 102

k = 0

Do

For i = 1 To 46
For j = 1 To 14

Cells(i, j).Value = "=RAND()"
Attente (100)

k = k + 1

Next

Next

Loop Until k > 5

End Sub

Sub Attente(milisecond As Integer)

Dim Start, PauseTime

PauseTime = milisecond / 7200
Start = Timer

Do While Timer < Start + PauseTime

DoEvents

Loop

End Sub

sur une feuille mise en forme : fond noir caractères verts.

Le résultat est encore très loin du rendu Matrix, aussi, si certains d'entre
vous peuvent m'aider, je suis preneur.


Avatar
Franck
Bonjour,

La V2 de ma macro

Sub matrix()
For i = 1 To 24
For j = 1 To 30
Cells(i, j).Value = "=CHAR(INT(RAND()*255))"
Next j
Next i
End Sub

C'est l'effet "lettres qui tombent" que j'arrive pas à reproduire


Bonjour,

Est-ce mieux avec le code suivant

'******************
Sub matrix_PMO()
Dim i&
Dim R As Range
Set R = Range(Cells(1, 1), Cells(60, 20))
R = "=RAND()"
R.Font.Color = RGB(19, 255, 19)
R.Font.Bold = True
R.Interior.ColorIndex = 1
For i& = 1 To 100
R = "=RAND()"
Next i&
End Sub
'******************

Cordialement.
--
PMO
Patrick Morange



Bonjour à tous,

Comme je sais que quasiment tout est possible en VB, j'aurais aimé savoir
(pour m'amuser) s'il serait possible de reproduire l'écran noir avec des
caractères verts qui tombent du film "Matrix" par une macro VB.

Mes premiers essais ne sont pas très satisfaisants, le problème étant de
générer un caractère aléatoire dans une cellule etc.

Pour l'instant je teste avec des chiffres aléatoires :

Sub matrix()

ActiveWindow.Zoom = 102

k = 0

Do

For i = 1 To 46
For j = 1 To 14

Cells(i, j).Value = "=RAND()"
Attente (100)

k = k + 1

Next

Next

Loop Until k > 5

End Sub

Sub Attente(milisecond As Integer)

Dim Start, PauseTime

PauseTime = milisecond / 7200
Start = Timer

Do While Timer < Start + PauseTime

DoEvents

Loop

End Sub

sur une feuille mise en forme : fond noir caractères verts.

Le résultat est encore très loin du rendu Matrix, aussi, si certains d'entre
vous peuvent m'aider, je suis preneur.




Avatar
Franck
Et voila la dernière version, pas trop mal

Sub matrix()
ActiveWindow.Zoom = 200
i = 0
Do
For k = 1 To 33
Cells(1, k).Value = "=CHAR(INT(RAND()*255))"
Next
Rows(1).Insert (xlShiftDown)
i = i + 1
Loop Until i = 23
For j = 1 To 33
Cells(1, j).Value = "=CHAR(INT(RAND()*255))"
Next
End Sub


Bonjour,

La V2 de ma macro

Sub matrix()
For i = 1 To 24
For j = 1 To 30
Cells(i, j).Value = "=CHAR(INT(RAND()*255))"
Next j
Next i
End Sub

C'est l'effet "lettres qui tombent" que j'arrive pas à reproduire


Bonjour,

Est-ce mieux avec le code suivant

'******************
Sub matrix_PMO()
Dim i&
Dim R As Range
Set R = Range(Cells(1, 1), Cells(60, 20))
R = "=RAND()"
R.Font.Color = RGB(19, 255, 19)
R.Font.Bold = True
R.Interior.ColorIndex = 1
For i& = 1 To 100
R = "=RAND()"
Next i&
End Sub
'******************

Cordialement.
--
PMO
Patrick Morange



Bonjour à tous,

Comme je sais que quasiment tout est possible en VB, j'aurais aimé savoir
(pour m'amuser) s'il serait possible de reproduire l'écran noir avec des
caractères verts qui tombent du film "Matrix" par une macro VB.

Mes premiers essais ne sont pas très satisfaisants, le problème étant de
générer un caractère aléatoire dans une cellule etc.

Pour l'instant je teste avec des chiffres aléatoires :

Sub matrix()

ActiveWindow.Zoom = 102

k = 0

Do

For i = 1 To 46
For j = 1 To 14

Cells(i, j).Value = "=RAND()"
Attente (100)

k = k + 1

Next

Next

Loop Until k > 5

End Sub

Sub Attente(milisecond As Integer)

Dim Start, PauseTime

PauseTime = milisecond / 7200
Start = Timer

Do While Timer < Start + PauseTime

DoEvents

Loop

End Sub

sur une feuille mise en forme : fond noir caractères verts.

Le résultat est encore très loin du rendu Matrix, aussi, si certains d'entre
vous peuvent m'aider, je suis preneur.






Avatar
PMO
Bonjour,

Voici la version en lettres.
Pour obtenir un nombre de lettres spécifique changez
la limite haute de la ligne de code
For i& = 1 To 5 par For i& = 1 To 8 (par exemple mot de 8 lettres)

Pour n'avoir que les minuscules ou les majuscules adaptez la portion de code
If Int(Rnd() * 2 + 1) Mod 2 Then
A$ = "CHAR(ROUND(RAND()*(90-65)+65,0))" 'MAJ
Else
A$ = "CHAR(ROUND(RAND()*(122-97)+97,0))" 'min
End If

Vous pouvez également obtenir d'autres caractères ASCII en modifiant
la ligne de code
A$ = "CHAR(ROUND(RAND()*(122-97)+97,0))"
où 122 est la limite ASCII (représente le "z") et -97 le début
ASCII (représente le "a") .


'***************
Sub matrix2_PMO()
Dim i&
Dim R As Range
Dim A$
Dim F$
Set R = Range(Cells(1, 1), Cells(60, 20))
R.Font.Color = RGB(19, 255, 19)
R.Font.Bold = True
R.Interior.ColorIndex = 1
'---- Obtenir des mots de x lettres ----
For i& = 1 To 5 '5= mot de 5 lettres
'°°° minuscule ou majuscule °°°
If Int(Rnd() * 2 + 1) Mod 2 Then
A$ = "CHAR(ROUND(RAND()*(90-65)+65,0))" 'MAJ
Else
A$ = "CHAR(ROUND(RAND()*(122-97)+97,0))" 'min
End If
F$ = F$ & A$ & "&"
Next i&
'---------------------------------------
If Right(F$, 1) = "&" Then F$ = Mid(F$, 1, Len(F$) - 1)
F$ = "= " & F$
For i& = 1 To 100
R = F$
Next i&
End Sub
'***************

Cordialement.
--
PMO
Patrick Morange



Et voila la dernière version, pas trop mal

Sub matrix()
ActiveWindow.Zoom = 200
i = 0
Do
For k = 1 To 33
Cells(1, k).Value = "=CHAR(INT(RAND()*255))"
Next
Rows(1).Insert (xlShiftDown)
i = i + 1
Loop Until i = 23
For j = 1 To 33
Cells(1, j).Value = "=CHAR(INT(RAND()*255))"
Next
End Sub


Bonjour,

La V2 de ma macro

Sub matrix()
For i = 1 To 24
For j = 1 To 30
Cells(i, j).Value = "=CHAR(INT(RAND()*255))"
Next j
Next i
End Sub

C'est l'effet "lettres qui tombent" que j'arrive pas à reproduire


Bonjour,

Est-ce mieux avec le code suivant

'******************
Sub matrix_PMO()
Dim i&
Dim R As Range
Set R = Range(Cells(1, 1), Cells(60, 20))
R = "=RAND()"
R.Font.Color = RGB(19, 255, 19)
R.Font.Bold = True
R.Interior.ColorIndex = 1
For i& = 1 To 100
R = "=RAND()"
Next i&
End Sub
'******************

Cordialement.
--
PMO
Patrick Morange



Bonjour à tous,

Comme je sais que quasiment tout est possible en VB, j'aurais aimé savoir
(pour m'amuser) s'il serait possible de reproduire l'écran noir avec des
caractères verts qui tombent du film "Matrix" par une macro VB.

Mes premiers essais ne sont pas très satisfaisants, le problème étant de
générer un caractère aléatoire dans une cellule etc.

Pour l'instant je teste avec des chiffres aléatoires :

Sub matrix()

ActiveWindow.Zoom = 102

k = 0

Do

For i = 1 To 46
For j = 1 To 14

Cells(i, j).Value = "=RAND()"
Attente (100)

k = k + 1

Next

Next

Loop Until k > 5

End Sub

Sub Attente(milisecond As Integer)

Dim Start, PauseTime

PauseTime = milisecond / 7200
Start = Timer

Do While Timer < Start + PauseTime

DoEvents

Loop

End Sub

sur une feuille mise en forme : fond noir caractères verts.

Le résultat est encore très loin du rendu Matrix, aussi, si certains d'entre
vous peuvent m'aider, je suis preneur.