Case à cocher UserForm
Bonjour,
J'vais essayer d'expliquer au mieux mon problème
Voila j'ai crée un formulaire qui permet de remplir une fiche contact lors d'une opération de phoning.
J'ai crée dans ce formulaire plusieurs question comportant des réponses à choix multiples et j'aimerai obtenir un code qui me permet pour chaque personne appelé indiqué si il a coché oui ou non...
J'ai essayé avec le peu de connaissance que j'ai de tenter un ligne de code mais je n'arrive pas à trouver la solution.
Mon problème est le suivant une fois que ma case est cocher elle vient remplir de la réponse oui ou non la case des autres personne...
J'espère avoir été clair
Merci d'avance
Private Sub CheckBox2_Click()
Dim J As Long
Set Ws = Sheets("contacts") 'Onglet contact
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
If CheckBox1.Value = True Then 'Si coché
Range("O" & J) = "Oui"
Else 'Si non coché
Range("O" & J) = "Non"
End If
Next J
End SubJe vous copie le code entier pour vous mettre dans le contexte
Option Explicit
Dim Ws As Worksheet
Private Sub CheckBox1_Click() 'Code case N°1
Next J
End Sub
Private Sub CheckBox12_Click()
End Sub
Private Sub CheckBox17_Click()
End Sub
Private Sub CheckBox2_Click()
Dim J As Long
Set Ws = Sheets("contacts") 'Onglet contact
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
If CheckBox1.Value = True Then 'Si coché
Range("O" & J) = "Oui"
Else 'Si non coché
Range("O" & J) = "Non"
End If
Next J
End Sub
Private Sub CheckBox5_Click()
End Sub
Private Sub CheckBox6_Click()
End Sub
Private Sub Label2_Click()
End Sub
Private Sub Label25_Click()
End Sub
Private Sub Label3_Click()
End Sub
Private Sub Label4_Click()
End Sub
Private Sub Label27_Click()
End Sub
Private Sub Label29_Click()
End Sub
Private Sub Label32_Click()
End Sub
Private Sub ListBox1_Click()
End Sub
Private Sub Label42_Click()
End Sub
Private Sub OptionButton12_Click()
End Sub
Private Sub OptionButton14_Click()
End Sub
Private Sub OptionButton6_Click()
End Sub
Private Sub SpinButton1_Change()
End Sub
Private Sub TextBox9_Change()
End Sub
'Pour le formulaire
Private Sub UserForm_Initialize()
Dim J As Long
Dim I As Integer
ComboBox2.ColumnCount = 1 'Pour la liste déroulante état
ComboBox2.List() = Array(" ", "NPC", "RU", "CP", "RDV")
ComboBox3.ColumnCount = 2 'Pour la liste déroulante Civilité
ComboBox3.List() = Array(" ", "M.", "Mme.", "Mlle")
Set Ws = Sheets("contacts") 'Correspond au nom de votre onglet dans le fichier Excel
With Me.ComboBox1
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J
End With
For I = 1 To 8
Me.Controls("TextBox" & I).Visible = True
Next I
End Sub
'Pour la liste déroulante Code client
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim I As Integer
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
ComboBox2 = Ws.Cells(Ligne, "B")
ComboBox3 = Ws.Cells(Ligne, "C")
For I = 1 To 8
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 3)
Next I
End Sub
'Bouton modifier les valeurs
Private Sub CommandButton2_Click()
Dim Ligne As Long
Dim I As Integer
If MsgBox("Confirmez-vous la modification de ce contact ?", vbYesNo, "Demande de confirmation de modification") = vbYes Then
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
Ws.Cells(Ligne, "B") = ComboBox2
Ws.Cells(Ligne, "C") = ComboBox3
For I = 1 To 8
If Me.Controls("TextBox" & I).Visible = True Then
TextBox3.Value = Date
TextBox3.Value = Format(TextBox3.Value, "dd mmmm yyyy")
TextBox7.Text = Format(TextBox7.Value, "0# ## ## ## ##")
TextBox7.Text = Format(TextBox7.Value, "0# ## ## ## ##")
Ws.Cells(Ligne, I + 3) = Me.Controls("TextBox" & I)
End If
Next I
End If
End Sub
Private Sub CommandButton5_Click()
Unload Me
End Sub
Private Sub CommandButton3_Click()
Unload Me
End SubBonjour et bienvenu(e)
misterart a écrit :Je vous copie le code entier pour vous mettre dans le contexte
Un fichier serait plus utile que le code
Ai je oublié de mentionner que je débute
Merci d'avance
Bonjour
Juste mon avis
En partant comme cela (réagir immédiatement lors de la modification d'un contrôle) va t'amener à avoir un code extrêmement dense
(A moins peut-être d'utiliser des modules de classe)
Le plus simple est de modifier tous les contrôles, et lors de la validation des données, passer en revue tous ces contrôles pour les recopier dans les bonnes cellules
Pour cela il te faut une numérotation identique aux cellules de la page ( exemple TextBox1 -> cellule N, TextBox2 -> cellule O, TextBox3 -> cellule P etc ......)
Ainsi lors de l'appuie sur le bouton valider, une simple boucle te permettra de remplir la ligne
Dans le fichier, je n'ai corrigé que ce que tu as demandé
Merci beaucoup banzai64 pour tes conseil et pour la réponse à ma demande :p
Avant de clôturer le sujet je voulais aussi savoir s'il était possible d'avoir un bouton dans l'userform qui quand on appuis dessus nous amène à une certaine hauteur dans l'userform. Ici moi je veux par exemple quand la réponse est non dans la question "avez vous 5 min pour répondre... " qu'il m'amène à la fin de mon entretien au niveau de l'enregistrement.
Merci encore
PS: J'ai trouvé aucun sujet qui en parle donc voila pourquoi je pose cette question
Bonsoir
Rajoute ce code, à toi de trouver la bonne valeur (50 dans cet exemple)
Private Sub CommandButton4_Click()
Me.ScrollTop = Me.CommandButton3.Top - 50
End Sub