![]() |
|
Forum
|
|
|
#2 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#3 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#5 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#6 (permalink) |
|
Guest
Messages: n/a
|
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 |
|
|
#7 (permalink) |
|
Guest
Messages: n/a
|
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 |
| ANNONCES | |
| Liens sociaux |
| Outils de la discussion | |
|
|