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 :

Questionnaire USERFORM (Frame et optionbutton) [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    QSE
    Inscrit en
    Septembre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : QSE

    Informations forums :
    Inscription : Septembre 2014
    Messages : 22
    Points : 10
    Points
    10
    Par défaut Questionnaire USERFORM (Frame et optionbutton)
    Bonjour à tous,
    Je suis novice dans VBA et j'ai besoin d'aide s'il vous plait.
    Alors mon objectif est de créer un questionnaire en deux parties sous forme de userform (Cf: fichier joint)
    Je m'explique, en sélectionnant une référence dans la combobox, les données des textbox sont générées à partir de mon tableau. Ainsi, j'ai envie de pouvoir faire en sorte que chaque personnes complète le fichier à partir de ce userform.
    Je n'arrive pas à récupérer les saisies des options buttons dans les différentes cases de mon tableau. et aussi saisir sur la ligne de la référence sélectionnée.
    Merci d'avance
    Test.xlsm

  2. #2
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Bonjour..

    Tu peux récupérer les réponses et la question correspondante comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim cCont As Control
     
        For Each cCont In Me.Controls
     
            If TypeName(cCont) = "OptionButton" Then
     
             If cCont.Value = True Then
              question = cCont.Parent.Caption
              reponse = cCont.Caption
             End If
     
            End If
     
         Next cCont
    Cordialement

    Docmarti.

  3. #3
    Membre à l'essai
    Homme Profil pro
    QSE
    Inscrit en
    Septembre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : QSE

    Informations forums :
    Inscription : Septembre 2014
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Bonjour,
    Merci beaucoup, cependant, j'ai copié le code sur le bouton valider et cela ne fonctionne pas .
    Mon objectif est de pouvoir compléter une ligne sélectionner à partir de la combobox.
    Pouvons nous faire une boucle pour tous les frame de l'userform?
    Merci

  4. #4
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Citation Envoyé par Taktser Voir le message
    Pouvons nous faire une boucle pour tous les frame de l'userform?
    Merci
    Cette boucle détecte toutes les réponses de l'userform, s'il y a des réponses.
    Il ne reste plus qu'à les transférer sur la feuille sur la bonne ligne et la bonne colonne.
    Cordialement

    Docmarti.

  5. #5
    Membre à l'essai
    Homme Profil pro
    QSE
    Inscrit en
    Septembre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : QSE

    Informations forums :
    Inscription : Septembre 2014
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Je dois définir une variable?
    Mes réponses doivent être saisies dans les colonnes F ...à V
    Je ne vois pas comment je peux transférer les résultats dans le classeur.
    Aussi, les lignes doivent-elles se suivent lorsque nous allons saisir les données? ou pouvons nous saisir aléatoirement en sélectionnant une référence?
    Merci et désolé je suis novice donc j'ai un peu de mal à comprendre.

  6. #6
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Citation Envoyé par Taktser Voir le message
    Aussi, les lignes doivent-elles se suivent lorsque nous allons saisir les données? ou pouvons nous saisir aléatoirement en sélectionnant une référence?
    .
    On peut saisir aléatoirement en sélectionnant une référence.
    Et mettre le numéro de la ligne dans la propriété TAG du combobox1. Nul besoin d'une variable.
    Cordialement

    Docmarti.

  7. #7
    Membre à l'essai
    Homme Profil pro
    QSE
    Inscrit en
    Septembre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : QSE

    Informations forums :
    Inscription : Septembre 2014
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Pouvez vous m'indiquer dans le fichier joint à quel endroit placer le code s'il vous plait. J'ai essayé comme vous me l'avez indiqué. Je n'y arrive pas.
    Désolé et merci d'avance.

  8. #8
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    1) Pour passer du classeur à Visual Basic : les touches ALT-F11
    2) Sur la fenêtre Visual Basic, double-clic sur Userform1 pour afficher l'objet Userform1
    3) Double-clic sur l'objet Userform1 pour accéder à son code
    4) Dans le code, cherche Private Sub ComboBox1_Change()
    Cordialement

    Docmarti.

  9. #9
    Membre à l'essai
    Homme Profil pro
    QSE
    Inscrit en
    Septembre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : QSE

    Informations forums :
    Inscription : Septembre 2014
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Merci pour votre réactivité. J'ai essayé de copié la boucle pour les frame dans la partie que vous m'avez dit.
    Ci-joint le fichier, et cela ne marche pas.
    J'ai envie que le caption de l'option button soit reprise dans mes cellules. Pour chaque question, 4 possibilités de répondre (0, 2, 3, 4).
    Excusez moi si je m'exprime pas bien?
    Je vous joint le fichier (j'ai copié le code comme demandé).
    Test.xlsm

  10. #10
    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 857
    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 857
    Points : 28 777
    Points
    28 777
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Dans l'hypothèse où les contrôles OptionBiutton de même groupe se trouve encapsulé dans un contrôle Frame dont la propriété Caption commence par la lettre Q et que ces mêmes OptionButton ont la propriété Caption qui reprend le n° de l'option (1, 2, 3, etc.).
    Voici un exemple d'une procédure événementielle Click d'un contrôle CommandButton nommé cmdTest qui affichera dans un MsgBox le résultat de toutes les réponses OptionButton à TRUE.
    C'est bien entendu un exemple à adapter qui n'a pour but que de visualiser une méthode parmi d'autres
    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
    Private Sub cmdTest_Click()
     Dim Ctrl_1 As Control, Ctrl_2 As Control
     Dim txt As String
     For Each Ctrl_1 In Me.Controls
      If TypeName(Ctrl_1) = "Frame" Then
       If Left(Ctrl_1.Caption, 1) = "Q" Then
        txt = txt & vbCrLf & Ctrl_1.Caption
        For Each Ctrl_2 In Ctrl_1.Controls
         If TypeName(Ctrl_2) = "OptionButton" Then
          If Ctrl_2.Value = True Then txt = txt & vbcrl & " - " & Ctrl_2.Caption
         End If
        Next
       End If
      End If
     Next
     MsgBox txt
    End Sub
    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

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    Bonjour,

    Essayez de remplacer tout le code de votre UserForm par le code suivant
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Private Sub CommandButton4_Click()
    Unload Me
    End Sub
     
    Private Sub CommandButton6_Click()
    Dim vrech As Range
    Dim CTR As Control
    Dim CTR2 As Control
    Dim j&
    Dim numCol&
    Dim numLig&
    '--- Recherche dans la colonne A la valeur de la combo ---
    Set vrech = Sheets("Feuil1").Columns("A:A").Find(Me.ComboBox1.Value, LookIn:=xlValues)
    '--- Affiche la valeur correspondante des TextBoxes dans la feuille ---
    If Not vrech Is Nothing Then
      numLig& = vrech.Row
      vrech.Offset(0, 1).Value = TextBox7.Value
      vrech.Offset(0, 2).Value = TextBox8.Value
      vrech.Offset(0, 3).Value = TextBox1.Value
      vrech.Offset(0, 4).Value = TextBox2.Value
    Else
      MsgBox "Aucune valeur trouve!"
      Exit Sub
    End If
    '--- Les OptionButtons ---
    For Each CTR In Me.Controls
      If TypeName(CTR) = "Frame" Then
        If InStr(1, CTR.Caption, "QUESTIONNAIRE") = 0 Then
          Set vrech = Sheets("Feuil1").Range("A1:IV1").Find(CTR.Caption, LookIn:=xlValues)
          If Not vrech Is Nothing Then
            numCol& = vrech.Column
            For Each CTR2 In CTR.Controls
              If CTR2 = True Then Sheets("Feuil1").Cells(numLig&, numCol&) = CTR2.Caption
            Next CTR2
          End If
        End If
      End If
    Next CTR
    End Sub
     
    Private Sub UserForm_Activate()
     Sheets("Feuil1").Select
    ComboBox1.List = Range("A2:A" & Cells(Application.Rows.Count, 1).End(xlUp).Row).Value
    End Sub
    Fichiers attachés Fichiers attachés

  12. #12
    Membre à l'essai
    Homme Profil pro
    QSE
    Inscrit en
    Septembre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : QSE

    Informations forums :
    Inscription : Septembre 2014
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Merci beaucoup!! ça marche très bien . Cepedant, si je veux modifier une ligne, les option button ne peuvent pas récupérer les valeurs?
    Merci encore.

  13. #13
    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 857
    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 857
    Points : 28 777
    Points
    28 777
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Sauf erreur de ma part, il n'y a pas de raison d'utiliser la méthode Find pour rechercher un élément sélectionné dans un ComboBox. La propriété ListIndex de celui-ci est suffisante.
    Voir exemple dans cette contribution USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire
    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

  14. #14
    Membre à l'essai
    Homme Profil pro
    QSE
    Inscrit en
    Septembre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : QSE

    Informations forums :
    Inscription : Septembre 2014
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Cela changera quoi pour le code ? Est ce par rapport au raptriement des données dans mon userform pour les option button?

  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    Cependant, si je veux modifier une ligne, les option button ne peuvent pas récupérer les valeurs ?
    Bonjour,

    Ajoutez le code suivant au code existant du UserForm
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Private Sub CommandButton5_Click()  'Modifier
    Dim vrech As Range
    Dim CTR As Control
    Dim CTR2 As Control
    Dim numCol&
    Dim numLig&
    '---
    If Me.ComboBox1.Value = "" Then Exit Sub
    '--- Recherche dans la colonne A la valeur de la combo ---
    Set vrech = Sheets("Feuil1").Columns("A:A").Find(Me.ComboBox1.Value, LookIn:=xlValues)
    '--- Affiche la valeur correspondante de la feuille  dans les TextBoxes ---
    If Not vrech Is Nothing Then
      numLig& = vrech.Row
      TextBox7.Value = vrech.Offset(0, 1).Value
      TextBox8.Value = vrech.Offset(0, 2).Value
      TextBox1.Value = vrech.Offset(0, 3).Value
      TextBox2.Value = vrech.Offset(0, 4).Value
    Else
      MsgBox "Aucune valeur trouve!"
      Exit Sub
    End If
    '--- Affiche la valeur correspondante de la feuille  dans les OptionButtons ---
    For Each CTR In Me.Controls
      If TypeName(CTR) = "Frame" Then
        If InStr(1, CTR.Caption, "QUESTIONNAIRE") = 0 Then
          Set vrech = Sheets("Feuil1").Range("A1:IV1").Find(CTR.Caption, LookIn:=xlValues)
          If Not vrech Is Nothing Then
            numCol& = vrech.Column
            For Each CTR2 In CTR.Controls
              If CTR2.Caption = CStr(Sheets("Feuil1").Cells(numLig&, numCol&)) Then
                CTR2 = True
                Exit For
              End If
            Next CTR2
          End If
        End If
      End If
    Next CTR
    End Sub
    Fichiers attachés Fichiers attachés

  16. #16
    Membre à l'essai
    Homme Profil pro
    QSE
    Inscrit en
    Septembre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : QSE

    Informations forums :
    Inscription : Septembre 2014
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Merci pour le code
    Si je veux que le Userform se compléte sans cliquer sur le bouton modifier, je dois copier le code et le coller sur userform initialize?
    Sinon les frames doivent-ils s'appeler automatique Questionnaire..2...3... ou puis-je changer de nom?

    MERCI BEAUCOUP CELA M'AIDE BEAUCOUP

  17. #17
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Je complète ma suggestion de mon post No 2

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
     
     
    Private Sub ComboBox1_Click()
        Dim vrech As Range
     
        ligne = ComboBox1.ListIndex + 2
        Set vrech = Sheets("Feuil1").Cells(ligne, 1)
     
        If Trim(vrech) = "" Then
            MsgBox "Aucune valeur trouve!", , "Ref"
        End If
     
        TextBox7.Text = vrech.Offset(0, 1).Value
        TextBox8.Text = vrech.Offset(0, 2).Value
        TextBox1.Text = vrech.Offset(0, 3).Value
        TextBox2.Text = vrech.Offset(0, 4).Value
     
        Call Effacer_Reponses_Sur_Userform1
     
        Call Lire_Les_Reponses_de_la_feuille
     
    End Sub
     
    Private Sub CommandButton4_Click()
        Unload Me
    End Sub
     
    Private Sub CommandButton6_Click()
     
        Dim cCont As Control
        Dim question As String
        Dim reponse As Double
     
        ligne = ComboBox1.ListIndex + 2
     
        Sheets("Feuil1").Cells(ligne, 1).Offset(, 1).Value = TextBox7.Text
        Sheets("Feuil1").Cells(ligne, 1).Offset(, 2).Value = TextBox8.Text
        Sheets("Feuil1").Cells(ligne, 1).Offset(, 3).Value = TextBox1.Text
        Sheets("Feuil1").Cells(ligne, 1).Offset(, 4).FormulaLocal = TextBox2.Text 'La date
     
        For Each cCont In Me.Controls
     
            If TypeName(cCont) = "OptionButton" Then
                question = cCont.Parent.Caption
                reponse = cCont.Caption
     
                Set col = Sheets("Feuil1").Range("A1:V1").Find(question, LookIn:=xlFormulas)
     
                Sheets("Feuil1").Cells(ligne, col.Column) = "" 'Effacer la reponse
     
            End If
     
        Next cCont
     
        For Each cCont In Me.Controls
     
            If TypeName(cCont) = "OptionButton" Then
                question = cCont.Parent.Caption
                reponse = cCont.Caption
     
                Set col = Sheets("Feuil1").Range("A1:V1").Find(question, LookIn:=xlFormulas)
     
                If cCont.Value = True Then
     
                    Sheets("Feuil1").Cells(ligne, col.Column).FormulaLocal = reponse 'Ecrire ls reponse
     
                End If
     
            End If
     
        Next cCont
     
    End Sub
     
    Private Sub UserForm_Activate()
        Sheets("Feuil1").Select
        ComboBox1.List = Range("A2:A" & Cells(Application.Rows.Count, 1).End(xlUp).Row).Value
    End Sub
     
    Private Sub Effacer_Reponses_Sur_Userform1()
     
        Dim cCont As Control
     
        For Each cCont In Me.Controls
     
            If TypeName(cCont) = "OptionButton" Then
                cCont.Value = False
            End If
     
        Next cCont
     
    End Sub
     
    Sub Lire_Les_Reponses_de_la_feuille()
     
        Dim cCont As Control
        Dim question As String
        Dim reponse As Double
        Dim ligne As Long
     
        ligne = ComboBox1.ListIndex + 2
     
        For Each cCont In Me.Controls
     
            If TypeName(cCont) = "OptionButton" Then
                question = cCont.Parent.Caption
                reponse = cCont.Caption
     
                Set col = Sheets("Feuil1").Range("A1:V1").Find(question, LookIn:=xlFormulas, lookat:=xlWhole)
     
                If col Is Nothing Then
                    MsgBox "Colonne " & question & " non trouve!", , "Erreur"
                Else
                    reponse = Sheets("Feuil1").Cells(ligne, col.Column)
                    If CStr(reponse) <> "" Then
     
                        If CDbl(reponse) = CDbl(cCont.Caption) Then
                            cCont.Value = True
                        End If
                    End If
                End If
            End If
        Next cCont
     
    End Sub
    Cordialement

    Docmarti.

  18. #18
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    Bonjour,

    Si je veux que le Userform se compléte sans cliquer sur le bouton modifier, je dois copier le code et le coller sur userform initialize?
    NON (voir dans l'exemple joint Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) )

    Sinon les frames doivent-ils s'appeler automatiquement Questionnaire..2...3... ou puis-je changer de nom?
    Pour celles qui sont à exclure du traitement de la procédure et qui servent de conteneur aux autres Frames qui contiennent, elles, les OptionButtons :
    Vous pouvez changez leur Caption OU leur Name tout en renseignant leur propriété Tag par un mot commun qui servira à ne pas les prendre en compte (Tag = QUESTIONNAIRE dans l'exemple).

    Voici le nouveau code du UserForm
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    Private Sub CommandButton4_Click()  'Annuler
    Unload Me
    End Sub
     
    Private Sub CommandButton6_Click()  'Valider
    Dim vrech As Range
    Dim CTR As Control
    Dim CTR2 As Control
    Dim numCol&
    Dim numLig&
    '--- Recherche dans la colonne A la valeur de la combo ---
    Set vrech = Sheets("Feuil1").Columns("A:A").Find(Me.ComboBox1.Value, LookIn:=xlValues)
    '--- Affiche la valeur correspondante des TextBoxes dans la feuille ---
    If Not vrech Is Nothing Then
      numLig& = vrech.Row
      vrech.Offset(0, 1).Value = TextBox7.Value
      vrech.Offset(0, 2).Value = TextBox8.Value
      vrech.Offset(0, 3).Value = TextBox1.Value
      vrech.Offset(0, 4).Value = TextBox2.Value
    Else
      MsgBox "Aucune valeur trouve!"
      Exit Sub
    End If
    '--- Les OptionButtons ---
    For Each CTR In Me.Controls
      If TypeName(CTR) = "Frame" Then
        If InStr(1, CTR.Tag, "QUESTIONNAIRE") = 0 Then  'On exclut les Frames qui ont une propriété Tag contenant QUESTIONNAIRE
          Set vrech = Sheets("Feuil1").Range("A1:IV1").Find(CTR.Caption, LookIn:=xlValues)
          If Not vrech Is Nothing Then
            numCol& = vrech.Column
            For Each CTR2 In CTR.Controls
              If CTR2 = True Then Sheets("Feuil1").Cells(numLig&, numCol&) = CTR2.Caption
            Next CTR2
          End If
        End If
      End If
    Next CTR
    End Sub
     
    Private Sub UserForm_Activate()
     Sheets("Feuil1").Select
    ComboBox1.List = Range("A2:A" & Cells(Application.Rows.Count, 1).End(xlUp).Row).Value
    End Sub
     
    Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim vrech As Range
    Dim CTR As Control
    Dim CTR2 As Control
    Dim numCol&
    Dim numLig&
    '---
    If Me.ComboBox1.Value = "" Then Exit Sub
    '--- Recherche dans la colonne A la valeur de la combo ---
    Set vrech = Sheets("Feuil1").Columns("A:A").Find(Me.ComboBox1.Value, LookIn:=xlValues)
    '--- Affiche la valeur correspondante de la feuille  dans les TextBoxes ---
    If Not vrech Is Nothing Then
      numLig& = vrech.Row
      TextBox7.Value = vrech.Offset(0, 1).Value
      TextBox8.Value = vrech.Offset(0, 2).Value
      TextBox1.Value = vrech.Offset(0, 3).Value
      TextBox2.Value = vrech.Offset(0, 4).Value
    Else
      MsgBox "Aucune valeur trouve!"
      Exit Sub
    End If
    '--- Affiche la valeur correspondante de la feuille  dans les OptionButtons ---
    For Each CTR In Me.Controls
      If TypeName(CTR) = "Frame" Then
        If InStr(1, CTR.Tag, "QUESTIONNAIRE") = 0 Then  'On exclut les Frames qui ont une propriété Tag contenant QUESTIONNAIRE
          Set vrech = Sheets("Feuil1").Range("A1:IV1").Find(CTR.Caption, LookIn:=xlValues)
          If Not vrech Is Nothing Then
            numCol& = vrech.Column
            For Each CTR2 In CTR.Controls
              CTR2 = False
              If CTR2.Caption = CStr(Sheets("Feuil1").Cells(numLig&, numCol&)) Then
                CTR2 = True
                Exit For
              End If
            Next CTR2
          End If
        End If
      End If
    Next CTR
    End Sub
    Fichiers attachés Fichiers attachés

  19. #19
    Membre à l'essai
    Homme Profil pro
    QSE
    Inscrit en
    Septembre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : QSE

    Informations forums :
    Inscription : Septembre 2014
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Un grand merci pour ton aide précieuse. Cela me permettra de concrétiser mon projet. MERCI

    Merci à tous les intervenants

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Userform / Frames et usf redimensionnables
    Par GADENSEB dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/05/2014, 13h16
  2. Calcul d'un ratio avec OptionButtons et frame dans Userform
    Par MaelB dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/12/2012, 16h25
  3. [XL-2007] syntaxe frame et optionbutton
    Par Pierre67 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 05/12/2012, 11h53
  4. Userform , frames et optionbutton
    Par huître dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/01/2012, 23h44
  5. Réponses: 1
    Dernier message: 23/04/2007, 21h05

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