Remplir une cellule en cochant des CheckBox ?

Bonjour à tous,

J'aurai besoin de vos lumières, svp,

J'ai un UserForm qui comprends plusieurs CheckBox et un bouton valider.

J'attribue une valeur pour chaque CheckBox si elles sont cochées.

  • CheckBox1 = 201
  • CheckBox2 = 402
  • CheckBox3 = 403
  • CheckBox4 = 404

Mon Userform alimente une feuille à l'aide de ce code:

Private Sub Valider_Click()

Num = Sheets("Suivi").Range("A65535").End(xlUp).Row + 1 'écrit sur la première ligne vide'

Sheets("Suivi").Activate 'active la feuille de suivi'

Range("A" & Num).Value = TextBox2.Value 'Heure de saisie'

Range("B" & Num).Value = DTPicker1.Value 'date'

Range("C" & Num).Value = Poste.Value 'poste'

Range("D" & Num).Value = Equipe.Value 'équipe'

Range("E" & num).Value = ?????????????????????????????????????????????????????

Range("F" & Num).Value = TextBox1.Value 'observations'

ActiveWorkbook.Save

MsgBox "Données enregistrées, vous pouvez quitter"

End Sub

Donc , ce que je souhaiterai faire, c'est que si je clique sur une ou plusieurs CheckBox, la ou les valeurs qui leurs sont attribuées, viennent remplir ma cellule "E".

Dans un premier temps, vu mon faible niveau en VBA, j'avais essayé ceci:

Chaque checkBox cochée écrit dans une cellule dans une feuille "Paramètres".

CheckBox1 écrit 201 en A1

CheckBox2 écrit 402 en A2

CheckBox3 écrit 403 en A3

CheckBox4 écrit 404 en A4

Avec la fonction =CONCATENER, je regroupe toutes les données dans une seule cellule.

En B1=CONCATENER(A1;" ";A2;" ";A3;" ";A4)

Et c'est là ou je coince, je n'arrive pas à récupérer cette donnée pour l'écrire dans ma cellule "E".

L'idéal, bien sûr, serait que j'écrive directement dans la cellule E, et uniquement si je clique sur Valide.

J'espère avoir été suffisamment précis dans ma requête,

Merci à tous ceux qui voudront m'apporter leur aide,

cordialement,

xorsankukai

Bonsoir

A tester

Dim I As Integer, Msg As String
Dim Valeur

  Valeur = Array(0, 201, 402, 403, 404)
  For I = 1 To 4
    If Me.Controls("CheckBox" & I) = True Then Msg = Msg & Valeur(I) & " "
  Next I
  Range("E" & num) = Left(Msg, Len(Msg) - 1)

Bonjour Banzai64,

Ton code fonctionne nickel !!!!!

J'ai juste modifié

Valeur = Array(0, 201, 402, 403, 404) par Valeur = Array(0, "201 ", "402 ", "403 ", "404 ") pour avoir un espace entre chaque valeur si il y en a plusieurs d'écrites.

Dernière petite question: cela fonctionnera-t-il sous excel 2003?

Je te remercie sincèrement pour ton aide,

Bien cordialement,

xorsankukai

Bonjour

xorsankukai a écrit :

pour avoir un espace entre chaque valeur si il y en a plusieurs d'écrites.

La macro le faisait

Then Msg = Msg & Valeur(I) & " "
xorsankukai a écrit :

cela fonctionnera-t-il sous excel 2003?

Bien sur il n'y pas de codage spécifique à 2007 et +

Merci Banzai64,

Effectivement, ça fonctionne sous excel 2003, j'ai pu tester au boulot, seul l'affichage diffère un peu.

Pour l'espace entre les valeurs, il me suffit d'agrandir l'espace entre les " " de la macro pour l'augmenter?

Then Msg = Msg & Valeur(I) & " "

Sans abuser de ton temps, juste pour comprendre comment fonctionne ces codes:

J'ai un userform avec 4 textbox (textbox 1, 2, 3 et 4) et un bouton valider.

Lorsque je valide, j 'écris les valeurs de mes 4 textbox dans la cellule E.

Quel code faut-il écrire , stp?

C'est pour comparer par rapport aux checkbox précédentes....

Un grand merci,Cordialement,

xorsankukai

Bonsoir

Un code dans ce style devrait suffire

Private Sub CommandButton1_Click()
Dim I As Integer, Msg As String

  For I = 1 To 4
    ' Si la TextBox n'est pas vide on la rajoute
    If Trim(Me.Controls("TextBox" & I)) <> "" Then Msg = Msg & Trim(Me.Controls("TextBox" & I)) & " "
  Next I
  If Len(Msg) > 1 Then
    Range("E" & Num) = Left(Msg, Len(Msg) - 1)  ' Ne pas oublier d'initialiser Num
  End If
End Sub

Merci pour tout Banzai64 ,

Je suis arrivé à mes fins grace à ton aide.

A bientôt sur le forum,

Cordialement,

xorsankukai

Rechercher des sujets similaires à "remplir cochant checkbox"