IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Conception Discussion :

formulaire appli éducative [XL-2013]


Sujet :

Conception

  1. #1
    Futur Membre du Club
    Homme Profil pro
    educateur
    Inscrit en
    Avril 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : educateur

    Informations forums :
    Inscription : Avril 2020
    Messages : 39
    Points : 7
    Points
    7
    Par défaut formulaire appli éducative
    Bonjour au forum
    Je suis grand débutant en vba, je souhaite crée une "appli" sous excel vba, je ne sais si c'est le plus approprié.
    j'aimerai que vous puissiez m'aider pas à pas , pour que je puisse me saisir des infos que vous me donnerez.

    j'ai une liste en Bdd que je dois parcourir et afficher un élément au hasard dans formulaire cellule A2.

    ce n'est qu'une partie de ce que je souhaite faire et que je compléterai au fur et è mesure. Bien entendu j'ai fait des recherches en amont, mais voilà j'ai l'impression que c'est trop compliqué.
    merci bien à vous.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Bonjour et bienvenue au forum

    Avant d'en venir à ta question quelques remarques sur les messages dans le forum :

    Ce sera pour la prochaine fois

    Je suis grand débutant en vba
    Même si le langage VBA est un langage plutôt simple dans la jungle des langages de code, tu ne peux pas te lancer dedans sans lire quelques tutos.
    Très bon pour commencer : classrooms.com/fr/courses/825502-analysez-des-donnees-avec-excel/822888-premiers-pas-en-vba
    Ou encore sur ce site : https://laurent-ott.developpez.com/t...el-vba-tome-1/
    Ça aussi c'est toujours bon à savoir : https://fauconnier.developpez.com/tu...istreur-macro/

    je souhaite crée une "appli" sous excel vba
    J'imagine que tu entends par cela, faire un UserForm. Idem, il faut que tu te renseignes un peu avant de te lancer là dedans. Ce n'est pas forcément la chose la plus intuitive à faire sur VBA.
    Tuto à lire (au moins les 2 premiers) : https://excel.developpez.com/cours/?page=prog#userform
    Néanmoins avant de te lancer dans un UserForm, il faut que tu te poses la question suivante : ai-je vraiment besoin de passer par là (par VBA) ? Est-ce que je ne peux pas créer un formule sous Excel "basique" et l'alimenter avec des fonctions ?
    Pour pouvoir répondre à cette question, il faudrait que tu nous montres la structure de ton classeur (copies d'écran) + une esquisse du résultat voulu.

    Bien entendu j'ai fait des recherches en amont
    Qu'est-ce que tu as pu faire jusqu'à présent ? Où est-ce que tu bloques ?

    J'attends ton retour pour aller plus loin

  3. #3
    Futur Membre du Club
    Homme Profil pro
    educateur
    Inscrit en
    Avril 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : educateur

    Informations forums :
    Inscription : Avril 2020
    Messages : 39
    Points : 7
    Points
    7
    Par défaut
    bonjour riaolle,
    merci pour ton intervention, voici le code que j'ai récuperer sur un forum. C'est la suite de ce que souhaitais faire .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub TirageMots()
        Dim Mots(9, 0) As String, Lmts$, m$, i%, x%
        For i = 1 To 25
            Lmts = Lmts & ChrW(i + 32)
        Next i
        Randomize
        With Worksheets("bdd")
            For i = 1 To 10
                x = Int(Len(Lmts) * Rnd + 1)
                m = Mid(Lmts, x, 1)
                Mots(i - 1, 0) = .Cells(AscW(m) - 29, 1)
                Lmts = Replace(Lmts, m, "")
            Next i
        End With
        Worksheets("formulaire").Range("a1").Resize(10).Value = Mots
    End Sub
    - lorsque je parle d'appli, je veux "juste" travailler sur une feuille excel(je vais crée un masque de saisie) et justement ne pas rentrer dans des choses trop compliqué.

    - ce code me renvoie 10 mots aléatoires et moi je n'en souhaite qu'un seul. Et que cette valeur soit afficher dans la feuil formulaire en "A2" par exemple. je ne vais avoir que des listes de mots à traiter.

    - Mon idée c'est d'y aller pas à pas pour comprendre.
    merci pour ton(vos) aides.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Est-ce que l'usage du VBA est impératif car si c'est pour sortir des mots d'une façon aléatoire, il est possible de faire cela avec une formule d'excel très simple combinant INDEX et ALEA.ENTRE.BORNE

    A lire éventuellement cette contribution titrée ALEA.ENTRE.BORNES - Générer des noms, prénoms et dates aléatoires
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Futur Membre du Club
    Homme Profil pro
    educateur
    Inscrit en
    Avril 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : educateur

    Informations forums :
    Inscription : Avril 2020
    Messages : 39
    Points : 7
    Points
    7
    Par défaut
    bonjour, Philippe Tulliez.

    En fait je veux "crée" un exerciseur pour travailler par exemple le vocabulaire de mot en anglais.
    voir exemple onglet "exemple". Grosso modo ce, vers quoi je veux arriver.
    Donc je ne sais pas si le VBA est le plus adapté.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    educateur
    Inscrit en
    Avril 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : educateur

    Informations forums :
    Inscription : Avril 2020
    Messages : 39
    Points : 7
    Points
    7
    Par défaut
    oups j'ai oublié le fichier.
    Fichiers attachés Fichiers attachés

  7. #7
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Bonjour,
    Tout dépend de ce que tu veux faire après.
    Pour être tout à fait honnête, j'ai essayé de faire un petit jeu avec des formules comme le propose Philippe Tulliez:
    Nom : Forum5.PNG
Affichages : 239
Taille : 21,9 Ko
    Ceci permet de bien de générer un mot aléatoire. Le problème, c'est que la formule se met à jour à chaque opération (dès que je clique sur entrée etc...). Donc si le but derrière c'est de faire un jeu dans lequel on écrit la traduction du mot sortie, ça risque d'être compliqué, car la mise à jour va se faire sans cesse.
    On pourrait le faire en enlevant la mise à jour automatique. Dans mon exemple ça ne fonctionnerait qu'à moitié, car j'ai mis une formule pour vérifier que la traduction est bonne. Celle-ci ne se mettra pas jour "au bon moment".
    C'est un peu compliqué à expliquer tout ça, il faut tester pour comprendre

    Du coup, j'ai regardé du côté de VBA. Ton code me paraît un peu compliqué si le but est seulement de sortir un mot aléatoirement d'une liste. Voici ce que j'ai fait de mon côté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub mot_aleatoire()
        Dim n As Integer
        Dim i As Integer
     
        n = Range("A" & Rows.Count).End(xlUp).Row
        Randomize
        i = Int(Rnd * (n - 1) + 2)
        Range("F7").Value = Range("A" & i).Value
        Range("G7").ClearContents
    End Sub
    Ce code est dans le bouton :

    Nom : Forum6.PNG
Affichages : 246
Taille : 21,9 Ko

  8. #8
    Futur Membre du Club
    Homme Profil pro
    educateur
    Inscrit en
    Avril 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : educateur

    Informations forums :
    Inscription : Avril 2020
    Messages : 39
    Points : 7
    Points
    7
    Par défaut
    J'avais vu que si tu récuperer la valeur d'un mot aléatoire dans une cellule et que celui-ci tu le recopie uniquement sa valeur dans une autre cellule, on pouvait ne pas tenir compte du fait que cela remettait à "zero" la liste , je ne sais pas si je suis claire.

    ton code vba avec le bouton fonctionne parfaitement et ton code m'est beaucoup plus accéssible.

    Pour continuer, comment faire si je crée une liste déroulante de thème ex.(fruit, vêtement, ustensile de cuisine...etc.)
    L'idée c'est de crée une feuille uniquement avec les thèmes. Et que lorsque je clique sur un théme, on puisse travailler sur ce thème.

  9. #9
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Tu peux par exemple créer une feuille / thème.
    A toi de voir comment tu veux tout organiser, mais voici un exemple :

    Nom : Forum8.PNG
Affichages : 299
Taille : 43,8 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub mot_aleatoire()
        Dim n As Integer
        Dim i As Integer
        Dim shSource As Worksheet
        Dim shJeu As Worksheet
     
        Set shJeu = ActiveSheet
        Set shSource = Sheets(shJeu.Range("B1").Value)  'on récupère la feuille dont le nom est en cellule B1
     
        n = shSource.Range("A" & Rows.Count).End(xlUp).Row  'on cherche le nombre de mots qu'il y a dans la feuille source
        Randomize
        i = Int(Rnd * (n - 1) + 2)  'on génère un nombre aléatoire en fonction du nombre de mots
        shJeu.Range("A4").Value = shSource.Range("A" & i).Value     'on recopie le mot de la feuille source de la ligne i sur la feuille jeu.
        shJeu.Range("B4").ClearContents     'on efface la traduction précédente sur la feuille jeu.
    End Sub

  10. #10
    Futur Membre du Club
    Homme Profil pro
    educateur
    Inscrit en
    Avril 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : educateur

    Informations forums :
    Inscription : Avril 2020
    Messages : 39
    Points : 7
    Points
    7
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =si(B4="";"waiting for your answer:)";si(RECHERCHEV((A4;INDIRECT("'"&B1&"'!A:B");2;FAUX)=B4;"well done";"try again…"))
    lorsque je tape la formule il me met un message d'erreur.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    educateur
    Inscrit en
    Avril 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : educateur

    Informations forums :
    Inscription : Avril 2020
    Messages : 39
    Points : 7
    Points
    7
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =si(B4="";"waiting for your answer:”);si(RECHERCHEV((A4;INDIRECT("'"&B1&"'!A:B");2;FAUX)=B4;"well done";"try again…"))

  12. #12
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 924
    Points
    55 924
    Billets dans le blog
    131
    Par défaut
    Salut.

    On peut faire simple, sur base de l'idée de Philippe. Deux tableaux (sur deux feuilles séparées), un avec le dico, l'autre avec x lignes (à toi de tirer le tableau vers le bas pour un plus long exercice, le code vba reste identique, et la formule utilisée dans la première ligne de code tient compte du nombre de lignes du tableau de tests), et une formule dans la colonne Résultat du tableau t_Test pour vérifier la saisie

    Nom : 2020-04-01_172831.png
Affichages : 251
Taille : 14,6 Ko

    Trois lignes de code pour préparer un nouveau test, en connectant le bouton de la feuille...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Prepare()
      Range("t_test[anglais]").Formula = "=INDEX(t_Dico[Anglais],RANDBETWEEN(1,ROWS(t_Dico)))"
      Range("t_test[anglais]").Value = Range("t_test[anglais]").Value
      Range("t_test[Réponse]").Value = ""
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  13. #13
    Futur Membre du Club
    Homme Profil pro
    educateur
    Inscrit en
    Avril 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : educateur

    Informations forums :
    Inscription : Avril 2020
    Messages : 39
    Points : 7
    Points
    7
    Par défaut
    merci Pierre, je vais tester et revenir vers toi

    Pierre pourrais-tu m'envoyer un fichier stl

    voici le fichier avec l'exemple de riaolle
    Fichiers attachés Fichiers attachés

  14. #14
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 924
    Points
    55 924
    Billets dans le blog
    131
    Par défaut
    Voici
    Fichiers attachés Fichiers attachés
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  15. #15
    Futur Membre du Club
    Homme Profil pro
    educateur
    Inscrit en
    Avril 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : educateur

    Informations forums :
    Inscription : Avril 2020
    Messages : 39
    Points : 7
    Points
    7
    Par défaut
    merci Pierre pour ton fichier.

    Tu peux m'expliquer comment je dois faire afin d'avoir une Base de donnée sur d'autres feuil pour différents thème..
    Est-ce que tu peux ajouter une colonne supplémentaire afin de donner la réponse exact lorsque la réponse inscrite est fausse.


    je vais garder les 2 modèles pour travailler.
    merci

    Pierre désolé je vais faire l'exigent, comment éviter les doublons ?

  16. #16
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 924
    Points
    55 924
    Billets dans le blog
    131
    Par défaut
    Ici, j'ai illustré un moyen simple, avec très peu de vba (trois lignes). C'est normalement adaptable à d'autres tableaux sur d'autres feuilles, même sans trop y connaître en VBA. Pour les demandes formulées précédemment (d'autres thématiques et la réponse juste en cas d'erreur), tu devrais pouvoir t'en sortir en regardant, comprenant et adaptant les solutions proposées.

    En gros, en VBA, c'est dupliquer les lignes de code et modifier les noms des tableaux et colonnes dans les lignes de code, et pour la récupération de la bonne réponse, dans la mesure où tu as la formule qui dit si c'est bon ou pas, tu as la formule pour la bonne réponse puisque cette dernière fait partie de celle qui renvoie VRAI ou FAUX. Il faut juste l'insérer dans un SI pour ne l'afficher qu'en cas de mauvaise réponse...

    Allez, je te donne cette solution-là. Dans la mesure où, dans la colonne résultat, on a une chaine vide ("") ou une valeur booléenne (donc que la cellule n'est pas vide), on peut utiliser la formule illustrée ci-dessous.

    Nom : 2020-04-01_203354.png
Affichages : 239
Taille : 14,5 Ko





    Pour le reste, oui, tu es (un peu trop) exigeant. Par formule, je ne vois pas comment empêcher les doublons (qui sont inversement proportionnels à la longueur du dico de départ) et il faudra alors passer par du vba plus costaud
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  17. #17
    Futur Membre du Club
    Homme Profil pro
    educateur
    Inscrit en
    Avril 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : educateur

    Informations forums :
    Inscription : Avril 2020
    Messages : 39
    Points : 7
    Points
    7
    Par défaut
    Merci Pierre, j'ai de quoi travailler serieusement avec ton aide. J'ai passé "beaucoup" de temps à chercher des solutions par moi même sur le net, et malgré toute la bonne volonté, on est limité par nos connaissances.
    Je dois travailler d'avantage avec le forum. d'abord sur des points bien précis avant de lever des projets "ambitieux".
    je vais continuer à travailler sur vos 2 modèles.
    merci encore à vous.

  18. #18
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Citation Envoyé par crocket95 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =si(B4="";"waiting for your answer:)";si(RECHERCHEV((A4;INDIRECT("'"&B1&"'!A:B");2;FAUX)=B4;"well done";"try again…"))
    lorsque je tape la formule il me met un message d'erreur.
    Essaie avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =si(B4="";"waiting for your answer";si(RECHERCHEV((A4;INDIRECT("'"&B1&"'!A:B");2;FAUX)=B4;"well done";"try again…"))

  19. #19
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 924
    Points
    55 924
    Billets dans le blog
    131
    Par défaut
    Pour avoir les mots sans doublons, tu peux utiliser un dictionnaire en VBA. La solution devient alors un peu plus complexe... Le dictionnaire permet de créer un tableau Clé-Valeur avec des clés uniques. L'idée est donc d'alimenter un dico avec des numéros de lignes (du tableau structuré) en vérifiant que le numéro de ligne n'a pas encore été mis dans le dico.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub Prepare()
      Dim Counter As Long
      Dim Index As Long
      Dim Dico
     
      Set Dico = CreateObject("Scripting.Dictionary")
      For Counter = 1 To Range("t_Test").Rows.Count
        Index = Application.RandBetween(1, Range("t_Test").Rows.Count)
        Do While Dico.Exists(Index)
          Index = Application.RandBetween(1, Range("t_Test").Rows.Count)
        Loop
        Dico.Add Index, Index
        Range("t_test[anglais]")(Counter).Value = Range("t_dico[Anglais]")(Index)
      Next
      Range("t_test[Réponse]").Value = ""
    End Sub

    Pour pouvoir réaliser ton objectif avec plusieurs thématiques, il sera important de structurer le code pour choisir le thème et alimenter le tableau sans devoir dupliquer des lignes de code. Fais attention que je n'ai pas mis de sécurité. Il faut, par définition, que le tableau de t_Test soit plus petit que le tableau t_Dico, sinon tu vas partir en boucle infinie. Ca tombe sous le sens mais je préfère tout de même le préciser.

    Tu y vois plus clair dans ce qu'il y a à mettre en place?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  20. #20
    Futur Membre du Club
    Homme Profil pro
    educateur
    Inscrit en
    Avril 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : educateur

    Informations forums :
    Inscription : Avril 2020
    Messages : 39
    Points : 7
    Points
    7
    Par défaut
    Bonjour à tous,
    Riaolle j'ai repris ton code, tout fonctionne parfaitement mais lorsque je tape la formule, il me renvoie une erreur. Je vais essayer de voir d'où cela peut venir. Je te tiens au courant.

    Pierre, je n'ai pas encore utiliser ton nouveau code. Par contre je ne connaissais pas ta façon de concevoir les "tableaux" de cette façon. Tu peux me dire comment tu as fait.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 4 1234 DernièreDernière

Discussions similaires

  1. [Android] Cozmic Zoom : appli éducative cherche testeurs
    Par JavaBean dans le forum Mon application mobile
    Réponses: 0
    Dernier message: 02/03/2013, 20h52
  2. Réponses: 1
    Dernier message: 25/01/2009, 01h10
  3. Inserer appli ds champ formulaire Access 07
    Par jgidet dans le forum IHM
    Réponses: 2
    Dernier message: 28/11/2007, 09h01
  4. [VS2005] Créer un formulaire à partir d'une appli
    Par Mouse dans le forum Windows Forms
    Réponses: 3
    Dernier message: 29/10/2007, 16h18
  5. Réponses: 1
    Dernier message: 01/04/2006, 19h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo