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

Macros et VBA Excel Discussion :

VBA et remplissage d'un QCM


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Août 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Transports

    Informations forums :
    Inscription : Août 2013
    Messages : 4
    Par défaut VBA et remplissage d'un QCM
    Bonjour

    Je débute en VBA et j'ai un petit souci.

    J'ai un QCM sur 20 lignes et 3 colonnes.
    Je voudrais pouvoir mettre une couleur sur la réponse choisie (1 seule réponse par ligne).

    Si je clique sur A1, la cellule passe en bleu (colorIndex=37 par exemple), si je passe sur B1, c'est B1 qui devient bleu et A1 redevient blanc, idem pour C1.
    Je veux pouvoir remplir tout mon tableau avec une seule couleur par ligne.

    Ensuite par un bouton, je veux compter chaque bonne réponse (si B1 est la bonne réponse de la ligne 1, j'incrémente un compteur x=x+1 sinon x=x+0 et je passe à la ligne suivante)
    A la fin du comptage, j'affiche le résultat : "vous avez x réponses justes"

    Si quelqu'un a déja résolu ce problème, merci de votre aide

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Première remarque : beaucoup de participants n'ouvrent pas les pièces jointes.
    https://www.developpez.net/forums/d8...s-discussions/

    Citation Envoyé par tresorier Voir le message
    Si je clique sur A1,
    Utiliser l'évènement Worksheet_SelectionChange en vérifiant que la cellule sélectionnée est bien dans la zone des réponses.
    https://msdn.microsoft.com/fr-fr/lib.../ff194470.aspx

    la cellule passe en bleu (colorIndex=37 par exemple),
    Visiblement, la réponse est dans la question.
    https://msdn.microsoft.com/fr-fr/lib.../ff836210.aspx
    https://msdn.microsoft.com/fr-fr/VBA...r-object-excel
    Pour savoir à quelle cellule appliquer la couleur, utiliser le paramètre de Worksheet_SelectionChange.

    si je passe sur B1, c'est B1 qui devient bleu et A1 redevient blanc, idem pour C1.
    Avant de mettre la cellule souhaitée en bleu, mettre les trois cellules (A, B, C) en xlColorIndexNone.
    https://msdn.microsoft.com/fr-fr/VBA...property-excel

    Ensuite par un bouton, je veux compter chaque bonne réponse
    Comment la macro peut-elle savoir quelles sont les bonnes réponses ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Août 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Transports

    Informations forums :
    Inscription : Août 2013
    Messages : 4
    Par défaut
    Bonjour et merci pour cette réponse.

    Citation Envoyé par Menhir Voir le message
    Première remarque : beaucoup de participants n'ouvrent pas les pièces jointes.
    https://www.developpez.net/forums/d8...s-discussions/
    Effectivement, j'ai lu le lien et comme c'était ma première intervention, j'ai cru bien faire.
    Quand je m'en suis rendu compte, je n'ai pas réussi à supprimer le fichier.
    Edit : ouf, c'est fait.

    Citation Envoyé par Menhir Voir le message
    Utiliser l'évènement Worksheet_SelectionChange en vérifiant que la cellule sélectionnée est bien dans la zone des réponses.
    https://msdn.microsoft.com/fr-fr/lib.../ff194470.aspx

    Visiblement, la réponse est dans la question.
    https://msdn.microsoft.com/fr-fr/lib.../ff836210.aspx
    https://msdn.microsoft.com/fr-fr/VBA...r-object-excel
    Pour savoir à quelle cellule appliquer la couleur, utiliser le paramètre de Worksheet_SelectionChange.

    Avant de mettre la cellule souhaitée en bleu, mettre les trois cellules (A, B, C) en xlColorIndexNone.
    https://msdn.microsoft.com/fr-fr/VBA...property-excel

    J'avoue que tous ces liens sont très formateurs, mais je n'arrive pas à changer la couleur en passant d'une cellule à l'autre sur une même ligne et surtout la fixer.
    J'ai réussi à limiter l'action uniquement sur la plage des réponses (A2:C37).

    J'ai mis ça dans la feuille et je continue à chercher, mais j'ai du mal avec toute la syntaxe !

    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
    17
    18
    19
    20
    21
    22
    23
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    Static lastCell As Range
    If Not lastCell Is Nothing Then
    lastCell.Interior.ColorIndex = xlNone
    End If
    If Not Intersect(Target, Range("A2:C37")) Is Nothing Then
     
     
    'Range("A2").Interior.ColorIndex = 37
    'Range("B2").Interior.ColorIndex = 2
    'Range("C2").Interior.ColorIndex = 2
     
    With Target.Interior
    .ColorIndex = 37
    .Pattern = xlSolid
    End With
    '
    Set lastCell = Target
    Else
    Exit Sub
    End If
    End Sub
    Citation Envoyé par Menhir Voir le message
    Comment la macro peut-elle savoir quelles sont les bonnes réponses ?
    Oui, la question est justifiée !!!
    Comme j'ai choisi de faire, c'est difficile à gérer par une macro, mais dans le bouton, la macro va traiter ligne par ligne.
    Si A2 est bleu je mets mon compteur à x=x+1 (A2 étant la réponse juste)
    Puis
    Si B3 est bleu,.... ainsi de suite.
    Ca sera forcément du sur mesure, sinon je serai obligé de passer par une autre approche (un tableau annexe avec compairaison par exemple).
    Pour l'instant, ce sera une macro difficilement reproductible sur un autre QCM sauf à reprendre chaque ligne de réponse.

    C'est pas très beau, mais j'ai fait ça et ça fonctionne :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Sub Macro1()
     
    x = 0
    y = 0
     
    'test de la couleur sur la premiere ligne
    If Range("A2").Interior.ColorIndex = 37 Then
    x = x + 1
    End If
     
    If Range("B3").Interior.ColorIndex = 37 Then
    x = x + 1
    End If
     
    If Range("B4").Interior.ColorIndex = 37 Then
    x = x + 1
    End If
     
    If Range("C5").Interior.ColorIndex = 37 Then
    x = x + 1
    y = y + 1
    End If
     
    MsgBox "Total des réponses justes " & x & Chr(10) & "Total des réponses critiques " & y
     
    End Sub
    En tout cas, merci de votre aide.

    Edit : je viens de me rendre compte que je n'avais pas respecté la charte (balisage du code).
    Désolé, je débute sur le forum. C'est réparé !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Fichiers attachés Fichiers attachés

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Août 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Transports

    Informations forums :
    Inscription : Août 2013
    Messages : 4
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    Bonjour,
    Bonjour et merci pour votre réponse.

    J'avoue que j'ai eu du mal à retrouver tous les éléments.
    Comme je travaille actuellement sur un portable (ça me change de mes 2*27"), je n'avais pas vu le bouton

    Ensuite, la solution n'est pas très adaptée à mon cas.
    Mais je reconnais que la comparaison avec les réponses est clairement une excellente idée. Il faudra que je creuse pour les cacher aux stagiaires (dans une autre feuille par ex) !!

    Vu mon niveau, pour l'instant je vais rester plus basic en cochant bêtement la réponse choisie (1 parmi 3 par ligne) et en changeant la couleur de fond pour la réponse choisie.
    Le bouton lancera une macro qui regardera la bonne réponse de chaque case à chaque ligne (voir ma réponse plus haut).

    En plus, le QCM ne se résume pas qu'à des questions, il y a des images à visualiser pour pouvoir répondre.

    En tout cas, merci pour votre contribution qui me confirme le haut niveau de ce forum.
    J'ai du chemin à faire

Discussions similaires

  1. [XL-2007] Progamme VBA pour remplissage de cellule en couleur pour valeur famille de 1000 a 9000
    Par gabigabou dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 10/05/2014, 14h26
  2. [XL-2003] VBA Blocage remplissage de cellules
    Par Mokia34 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 22/02/2013, 15h05
  3. [VBA-E]Remplissage tableau aléatoire
    Par bernard38 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 08/06/2006, 11h34
  4. [VBA-E] Remplissage d'une listebox
    Par le_sonic dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/04/2006, 17h53
  5. [VBA-A]Remplissage ListBox
    Par cuicui08 dans le forum VBA Access
    Réponses: 18
    Dernier message: 27/02/2006, 11h05

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