Lancer des userforms aléatoirement
pierreLH
Messages postés
11
Date d'inscription
Statut
Membre
Dernière intervention
-
pierreLH Messages postés 11 Date d'inscription Statut Membre Dernière intervention -
pierreLH Messages postés 11 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je voudrais lancer des userforms aléatoirement, le code ressemble à ça:
Mon objectif est de faire apparaitre les questions dans le désordre. L'idée que j'ai serai d'insérer une variable i dans le nom de la userform:
Mais je ne sais pas utiliser l'outil randomize avec VBA et ej ne veux pas qu'une question apparaisse deux fois. Pourriez vous m'aider s'il vous plait?
Merci et bonnes fêtes!
EDIT : Ajout des balises de code
je voudrais lancer des userforms aléatoirement, le code ressemble à ça:
Sub kies() menu.Show question1.Show question2.Show question3.Show question4.Show question5.Show question6.Show question7.Show End Sub
Mon objectif est de faire apparaitre les questions dans le désordre. L'idée que j'ai serai d'insérer une variable i dans le nom de la userform:
Sub kies() menu.Show randomize(i) question(i).Show End Sub
Mais je ne sais pas utiliser l'outil randomize avec VBA et ej ne veux pas qu'une question apparaisse deux fois. Pourriez vous m'aider s'il vous plait?
Merci et bonnes fêtes!
EDIT : Ajout des balises de code
A voir également:
- Lancer des userforms aléatoirement
- Lancer une application au démarrage windows 10 - Guide
- Fichier batch pour lancer un programme - Guide
- Comment lancer gemini - Accueil - Téléphones
- Lancer time machine - Guide
- Comment lancer une discussion vocale sur whatsapp - Accueil - Messagerie instantanée
3 réponses
Bonjour,
une facon de faire:
une facon de faire:
Sub kies()
Dim TAleat() As Long, UF
Menu.Show
ReDim TAleat(1 To 6)
'appel fonction remplissage
TAleat() = Aleat_TQuestion()
For Question = 1 To 6
'choix UF en fonction table TAleat()
UF = Choose(TAleat(Question), "Question1", "Question2", "Question3", "Question4", "Question5", "Question6")
'Affichage UF
VBA.UserForms.Add(UF).Show
Next
End Sub
'remplissage tableau aleatoire sans doublon
Function Aleat_TQuestion()
Dim i As Long, n As Long
Dim numQuestion(1 To 6) As Long
Dim numCollection As New Collection
'Creation et utilisation d'une collection pour obtenir
'une table de numeros sans doublon
With numCollection
For i = 1 To 6
.Add i
Next
For i = 1 To 6
'nombre aleatoire de 1 a 6 avec -1 par tour: 5,4.......
n = Rnd * (.Count - 1) + 1
'ecriture table des numero de questions
numQuestion(i) = numCollection(n)
'suppression de l'Item(ici un nombre) de la collection
'pour ne pas l'avoir une deuxieme fois
.Remove n
Next
End With
Aleat_TQuestion = numQuestion()
Set numCollection = Nothing
End Function
Dernier service, je voudrais ajouter une condition d'arrêt.Il faudrait que les questions n'apparaissent plus lorsqu'une variable atteint une valeur donnée, en l'occurence:
loop until c=1
c = Application.Sum(Range("B1").EntireColumn)
Comment rajouter cette condition dans le code? J'ai essayé plusieurs choses, notamment ceci mais ça ne marche pas:
EDIT : Ajout des balises de code
je voudrais ajouter une condition d'arrêt Oui, mais ce que vous avez ecrit ne peut pas marcher.
Que comptez vous faire avec ceci:
vu qu'il n'y a pas de decompte des cellules colonne B ?????????????????
La, il me faut votre fichier, puisque la programmation depend de celui-ci. Detaillez le fonctionnement, parce qu'il faudrait (je suppose) que seules les questions non valide doivent etre reposees ou ..... expliquez votre demarche
Pour transmettre un fichier,
il faut passer par un site de pièce jointe tel que cijoint.com
Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cijoint",
Copier le lien,
Revenir ici le coller dans une réponse...
Il s'agit d'un Qui est-ce?
Le programme est très simple:
Un tableau comporte toutes les caractéristiques des personnes, 1 pour vrai et 0 pour faux.
A chaque question il faut cliquer sur oui ou non, le userform va chercher dans la colonne correspondante les 0 ou les 1, selon la réponse. Si la caractéristique ne correspond pas avec la réponse, alors la valeur dans la colonne B assignée à chaque personne devient 0. (Initialement elles sont toutes 1). La dernière personne qui a un 1 est donc la personne que l'on cherche.