OVH Cloud OVH Cloud

Un affichage aléatoire...

4 réponses
Avatar
Sabian
Salut...

Je me posais la question suivante hier soir...
Serait-ce possible de faire afficher un UserForm=20
al=E9atoirement (disons chaque 5 ouvertures du=20
fichier .xls) ?
Meme encore plus al=E9atoire, que la macro choisisse elle-
m=EAme si le UserForm s'active =E0 l'ouverture ou non ?

Cette marco alors =E0 ce moment-l=E0 ne devrait-elle pas =EAtre=20
dans le classeur des macros personnelles ?

Merci pour les infos.
Sabian...

4 réponses

Avatar
Emcy
Salut

Cette macro est à mettre dans le module ThisWorkBook de
ton classeur

Private Sub Workbook_Open() 'macro qui s'active à
l'ouverture du classeur

Dim ValeurAléatoire As Integer

Randomize 'réinitialize le générateur aléatoire
ValeurAléatoire = Int((5 * Rnd) + 1) 'génère un nombre
compris entre 1 et 5

If ValeurAléatoire = 4 Then

UserForm1.Show 'affiche la Userform

End If

End Sub


ça te va ?

-----Message d'origine-----
Salut...

Je me posais la question suivante hier soir...
Serait-ce possible de faire afficher un UserForm
aléatoirement (disons chaque 5 ouvertures du
fichier .xls) ?
Meme encore plus aléatoire, que la macro choisisse elle-
même si le UserForm s'active à l'ouverture ou non ?

Cette marco alors à ce moment-là ne devrait-elle pas
être

dans le classeur des macros personnelles ?

Merci pour les infos.
Sabian...
.



Avatar
Michel Gaboly
Bonjour Emcy;

Tu peux simplifier ton code en te passant de la variable, et
en supprimant une paire de parenthèses :

Private Sub Workbook_Open()
Randomize ' réinitialize le générateur aléatoire
If Int(5 * Rnd + 1) = 4 Then
UserForm1.Show ' affiche la Userform
End If
End Sub


Salut

Cette macro est à mettre dans le module ThisWorkBook de
ton classeur

Private Sub Workbook_Open() 'macro qui s'active à
l'ouverture du classeur

Dim ValeurAléatoire As Integer

Randomize 'réinitialize le générateur aléatoire
ValeurAléatoire = Int((5 * Rnd) + 1) 'génère un nombre
compris entre 1 et 5

If ValeurAléatoire = 4 Then

UserForm1.Show 'affiche la Userform

End If

End Sub

ça te va ?

-----Message d'origine-----
Salut...

Je me posais la question suivante hier soir...
Serait-ce possible de faire afficher un UserForm
aléatoirement (disons chaque 5 ouvertures du
fichier .xls) ?
Meme encore plus aléatoire, que la macro choisisse elle-
même si le UserForm s'active à l'ouverture ou non ?

Cette marco alors à ce moment-là ne devrait-elle pas
être

dans le classeur des macros personnelles ?

Merci pour les infos.
Sabian...
.




--
Cordialement,

Michel Gaboly
http://www.gaboly.com


Avatar
Emcy
Ouhlala, ça chipote ....

Remarque : ma solution est certe moins simple mais elle
est plus explicite pour les débutants (d'où l'interet)

-----Message d'origine-----
Bonjour Emcy;

Tu peux simplifier ton code en te passant de la
variable, et

en supprimant une paire de parenthèses :

Private Sub Workbook_Open()
Randomize ' réinitialize le générateur aléatoire
If Int(5 * Rnd + 1) = 4 Then
UserForm1.Show ' affiche la Userform
End If
End Sub


Salut

Cette macro est à mettre dans le module ThisWorkBook de
ton classeur

Private Sub Workbook_Open() 'macro qui s'active à
l'ouverture du classeur

Dim ValeurAléatoire As Integer

Randomize 'réinitialize le générateur aléatoire
ValeurAléatoire = Int((5 * Rnd) + 1) 'génère un nombre
compris entre 1 et 5

If ValeurAléatoire = 4 Then

UserForm1.Show 'affiche la Userform

End If

End Sub

ça te va ?

-----Message d'origine-----
Salut...

Je me posais la question suivante hier soir...
Serait-ce possible de faire afficher un UserForm
aléatoirement (disons chaque 5 ouvertures du
fichier .xls) ?
Meme encore plus aléatoire, que la macro choisisse
elle-



même si le UserForm s'active à l'ouverture ou non ?

Cette marco alors à ce moment-là ne devrait-elle pas
être

dans le classeur des macros personnelles ?

Merci pour les infos.
Sabian...
.




--
Cordialement,

Michel Gaboly
http://www.gaboly.com


.





Avatar
Michel Gaboly
Re,

Peut-être ;-)) mais leur donne de mauvaises habitudes :
pourquoi créer une variable pour stocker quelque chose
qui est directement utilisable et qui ne sert qu'une fois ?

Cela augmente la taille du code et ralentit l'exécution (je
t'accorde qu'ici l'écart est négligeable).

C'est, selon moi, la même approche qui consiste à écrire

If Expression is True Then

qui est un pléonasme au lieu de

If Expression Then

ou pire, selectionner une plage pour modifier une de ses
propriétés, et là, la différence de vitesse devient très sen-
sible.



Ouhlala, ça chipote ....

Remarque : ma solution est certe moins simple mais elle
est plus explicite pour les débutants (d'où l'interet)

-----Message d'origine-----
Bonjour Emcy;

Tu peux simplifier ton code en te passant de la
variable, et

en supprimant une paire de parenthèses :

Private Sub Workbook_Open()
Randomize ' réinitialize le générateur aléatoire
If Int(5 * Rnd + 1) = 4 Then
UserForm1.Show ' affiche la Userform
End If
End Sub


Salut

Cette macro est à mettre dans le module ThisWorkBook de
ton classeur

Private Sub Workbook_Open() 'macro qui s'active à
l'ouverture du classeur

Dim ValeurAléatoire As Integer

Randomize 'réinitialize le générateur aléatoire
ValeurAléatoire = Int((5 * Rnd) + 1) 'génère un nombre
compris entre 1 et 5

If ValeurAléatoire = 4 Then

UserForm1.Show 'affiche la Userform

End If

End Sub

ça te va ?

-----Message d'origine-----
Salut...

Je me posais la question suivante hier soir...
Serait-ce possible de faire afficher un UserForm
aléatoirement (disons chaque 5 ouvertures du
fichier .xls) ?
Meme encore plus aléatoire, que la macro choisisse
elle-



même si le UserForm s'active à l'ouverture ou non ?

Cette marco alors à ce moment-là ne devrait-elle pas
être

dans le classeur des macros personnelles ?

Merci pour les infos.
Sabian...
.




--
Cordialement,

Michel Gaboly
http://www.gaboly.com


.




--
Cordialement,

Michel Gaboly
http://www.gaboly.com