comment afficher un usf aleatoirement

  • Initiateur de la discussion Initiateur de la discussion greg
  • Date de début Date de début

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 !

G

greg

Guest
bonjour tous le monde,

je souhaite une aide pour faire afficher un userform aleatoirement parmi un dizaine dans un usf.
 
Salut,

Je te propose ceci:

Sub Alea()
Dim Usf As Byte

Randomize
Usf = Int((10 * Rnd) + 1)

Select Case Usf
Case 1
UserForm1.Show
Case 2
UserForm2.Show
Case 3
UserForm3.Show
Case 4
UserForm4.Show
Case 5
UserForm5.Show
Case 6
UserForm6.Show
Case 7
UserForm7.Show
Case 8
UserForm8.Show
Case 9
UserForm9.Show
Case 10
UserForm10.Show
End Select
End Sub


Mais il y a peut etre moyen de ne pas utiliser le Select Case
si on arrivait à passer le N° de USF en parametre on resumerait le
code à 1 ligne quelque soit le nombre de USF possible.

Je cherche et je reviens si j'ai la solution.
ou si quelqu'un a la solution cela m'interesse aussi 😱)

@+ Minick
 
bonjour Greg , bonjour Minick

tu peus tester cette procédure pour boucler sur les USF :


Sub BouclerSurUSF()
'nécéssite activer la reference Microsoft Visual Basic for applications extensibilty 5.3
Dim VbComp As VBComponent
Dim LaForm As Object, ObjComp As Object
Dim i As Byte, USF As Byte

Randomize
USF = Int((10 * Rnd) + 1)

Set ObjComp = ThisWorkbook.VBProject.VBComponents
For Each VbComp In ObjComp ' boucle USF
If VbComp.Type = 3 Then
i = i + 1

If i = USF Then
Set LaForm = ThisWorkbook.VBProject.VBComponents.Item(i)
VBA.UserForms.Add(VbComp.Name).Show
End If

End If
Next
End Sub


bonne journee
MichelXld
 
Bonjour Michel,

Ca marche impec chez moi
mais j'ai du cocher l'option Faire confiance au project Visual Basic
du menu Outils/Macro/Sécurité.../Sources fiables


Personnellement j'en étais arrivé à chercher comment declarer une variable
de type VBComponent, il me manquait simplement cette reference,
je crois que j'aurai jamais trouvé 😱(


Merci Michel
et desolé greg de m'etre incrusté dans ton fils


bon dimanche

@+ Minick
 
rebonjour

décidemment cela ne va pas fort aujourd'hui , je viens de m'apercevoir que je n'avais pas envoyé la bonne version

Sub BouclerSurUSF_V02()
'nécéssite activer la reference Microsoft Visual Basic for applications extensibilty 5.3
Dim VbComp As VBComponent
Dim ObjComp As Object
Dim i As Byte, USF As Byte

Randomize
USF = Int((10 * Rnd) + 1)

Set ObjComp = ThisWorkbook.VBProject.VBComponents
For Each VbComp In ObjComp ' boucle USF
If VbComp.Type = 3 Then
i = i + 1

If i = USF Then VBA.UserForms.Add(VbComp.Name).Show

End If
Next
End Sub


Minick , si cela peut te rassurer ,moi c'est la façon d'afficher l'USF qui m'a pris un temps certain :
"VBA.UserForms.Add(VbComp.Name).Show"
il m'a fallu cherché sur plusieurs sources du Net avant de trouver la solution


bonne journée
MichelXld
 
re,

C'est vrai qu'il fallait y penser aussi a la facon d'afficher la form.

une petite suggestion:

J'ajouterai Exit For quand le USF rend la main.

Je sais, je chipote mais si il y a un grand nombre de VBComponent ca peut aider a gagner un peu de temps


Encore merci michel, je me coucherai moins bete ce soir ;o)

@+ Minick
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
18
Affichages
172
  • Question Question
Microsoft 365 Lecture vocale USF
Réponses
5
Affichages
113
Réponses
3
Affichages
94
  • Question Question
Réponses
6
Affichages
119
Réponses
14
Affichages
102
Réponses
4
Affichages
83
Réponses
12
Affichages
124
Retour