problème avec code vba pour checkbox

Yann71

XLDnaute Occasionnel
Bonjour la com,
J' arrive avec un nouveau problème. Malgré mes recherches en vain, je n'ai su trouver la solution ici et ailleurs, je fait dons appelle à vos connaissance.
Je vais essayer de m'expliquer le plus clairement possible. J'ai un formulaire de saisie qui alimente une BDD sous forme de tableau. Elle comporte
des textbox, des comboBox et des case à cocher et c'est là ou le problème se pose. Je n'arrive à trouver le code pour que lorsque je clic sur celle-ci
s'affiche " le V de vue" dans les cellules de mon tableau dans les collonnes de BE3:BX3 et de CF3:CY3
Grâce à l'un d'entre vous j'ai un bout de code que je n'arrive à insérer :

Private Sub CheckBox1_Click()

End Sub

Private Sub CommandButton1_Click()
'Range("B1").Value = TextBox1.Value
'Range("B2").Value = TextBox2.Value

If case_controle_effectue = True Then
[A3] = ChrW(&H2713)
'Range("A3") = "v" ChrW(&H2713)
Else
Range("A3") = ""
End If

End Sub

Private Sub UserForm_Click()

End Sub

Je vous remercie d'avance pour votre aide
 

Pièces jointes

  • BBD_TEST.xlsm
    144.6 KB · Affichages: 15
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re
une illustration de ce qui peut être fait !
j'ai préféré dans ce cas (Choix unique ) des OptionButton
On pourrait aussi passer par un Module de Classe(éviter la répétition des procédures)

Enregistrement.gif

jean marie
 

Yann71

XLDnaute Occasionnel
Re
une illustration de ce qui peut être fait !
j'ai préféré dans ce cas (Choix unique ) des OptionButton
On pourrait aussi passer par un Module de Classe(éviter la répétition des procédures)

Regarde la pièce jointe 1041495
jean marie
Re
effectivement cela pourrait être une solution, mais je ne connais pas le code pour cette fonction. A cette solution est-ce qu'il est possible que lors de la sélection OptionButton il s'affiche dans ma BDD le symbole "v"
 

ChTi160

XLDnaute Barbatruc
Re
bon cette procédure
VB:
Private Sub checkLundi1_Click()
Sheets(2).[BE3] = IIf(Me.checkLundi1 = True, ChrW(&H2713), "")        'ou Chr(86) pour V ou Chr(118) pour v
End Sub
veut dire on colle la Coche dans la Troisieme Ligne / Colonne BE si checkLundi1 est sélectionné , sinon on met Vide
jean marie
 

Yann71

XLDnaute Occasionnel
Re
bon cette procédure
VB:
Private Sub checkLundi1_Click()
Sheets(2).[BE3] = IIf(Me.checkLundi1 = True, ChrW(&H2713), "")        'ou Chr(86) pour V ou Chr(118) pour v
End Sub
veut dire on colle la Coche dans la Troisieme Ligne / Colonne BE si checkLundi1 est sélectionné , sinon on met Vide
jean marie
je comprends, mais au-lieu d'afficher symbole "vue" il m'affiche "VRAI"
 

Eric C

XLDnaute Barbatruc
Me revoilà, on m'a installé la fibre avec quelques soucis en partie réglés..
@ Jean Marie : le problème est épineux.... aïe aïe aïe
Ton problème Yann71, c'est que tu sois déjà parti billes en tête (beau USF, belle pages de présentation mais apparemment, tu es comme moi, tu débutes en Vba car il n'y a aucune construction de code, pas de référentiel).
Ta première question a été de savoir comment on plaçait une coche dans une cellule... ça je sais faire donc je t'ai apporté la solution. ... On n'ouvre pas forcément un fichier pour regarder le code quand la question est anodine.
Ta seconde question a été de faire apparaître cette coche (maintenant un "v") dans la case BE3 ou BF3 ou BG3 ou BH3 en fonction d'une partie de la journée. Ta question a trouvée une solution de ma part et de celle de notre ami Jean Marie (l'heureux retraité).
En réalité, ta demande est tout autre car tu désires que la coche (ou le "v") se retrouve dans une ligne avec tes différentes valeurs ajoutées, ligne qui n'est pas immuable car elle va s'incrémenter au fur et à mesure du remplissage de ton tableau :
VB:
'Procédure permettant d'ajouter un nouvel enregistrement
'dans ma base de données
'*********************************************************
Private Sub btnAjouter_Click()

Sheets("Base").Activate
Range("A2").Select
Selection.End(xlDown).Select 'On se positionne sur la dernière ligne non vide
Selection.Offset(1, 0).Select 'On se décale d'une ligne vers le bas
ActiveCell = txtNom.Value
ActiveCell.Offset(0, 1).Value = txtPrénom
ActiveCell.Offset(0, 2).Value = txtJour_naissance
ActiveCell.Offset(0, 3).Value = comboMois_naissance
........... etc
Donc, le problème n'est plus du tout le même et à mon faible niveau, je n'y arrive pas. Il te faut déclarer des variables pour les transformer et les insérer par la suite.
Comme te l'a indiqué Jean Marie, il vaut mieux utiliser des OptionButtons qui sont plus pratiques. J'ai ébauché un code qui ne marche pas... Si Jean Marie (ou tout autre contributeur) veut bien le fignoler. J'étais parti sur un Frame avec 4 OptionButton ayant tous pour Caption "118". Donc lorsque l'un des 4 OptionButton était à true, une variable prenait la valeur du caption que je pensais transformer en caractère via Chr mais cela ne fonctionne pas. Je dois encore me perfectionner mais j'ai d'autres choses à faire en ce moment. Je vous donne le code :
Code:
Private Sub Frame1_Click()
Dim cas1 As String
  
    'Boucle pour chaque contrôle de Frame_colonne
    For Each OptionButton In Frame1.Controls
        'Si la valeur du contrôle = True (donc si coché) ...
        If OptionButton.Value Then
                
            'La variable "cas1" prend comme valeur le texte du caption
            cas1 = OptionButton.Caption
        End If
    Next
End Sub

    Variable que je réinjectais ici : (pour essai car le choix n'est pas fixe donc la cellule non plus)
  
ActiveCell.Offset(0, 57).Value = Chr(cas1)    'txtLundi_repas
Désolé mais je reste dans le coin
Bonne contination
@+ Eric c
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re
Eric,
je vais m amuser un peu et je posterai ce que j aurai fait , les demandeurs sont souvent presses ,pas moi lol.
donc je poste en retard et plus personne ne repasse par la !lol
mais bon je me detends (et j apprends en meme temps)
bonne soiree
jean marie
 

Yann71

XLDnaute Occasionnel
Me revoilà, on m'a installé la fibre avec quelques soucis en partie réglés..
@ Jean Marie : le problème est épineux.... aïe aïe aïe
Ton problème Yann71, c'est que tu sois déjà parti billes en tête (beau USF, belle pages de présentation mais apparemment, tu es comme moi, tu débutes en Vba car il n'y a aucune construction de code, pas de référentiel).
Ta première question a été de savoir comment on plaçait une coche dans une cellule... ça je sais faire donc je t'ai apporté la solution. ... On n'ouvre pas forcément un fichier pour regarder le code quand la question est anodine.
Ta seconde question a été de faire apparaître cette coche (maintenant un "v") dans la case BE3 ou BF3 ou BG3 ou BH3 en fonction d'une partie de la journée. Ta question a trouvée une solution de ma part et de celle de notre ami Jean Marie (l'heureux retraité).
En réalité, ta demande est tout autre car tu désires que la coche (ou le "v") se retrouve dans une ligne avec tes différentes valeurs ajoutées, ligne qui n'est pas immuable car elle va s'incrémenter au fur et à mesure du remplissage de ton tableau :
VB:
Donc, le problème n'est plus du tout le même et à mon faible niveau, je n'y arrive pas. Il te faut déclarer des variables pour les transformer et les insérer par la suite.
Comme te l'a indiqué Jean Marie, il vaut mieux utiliser des OptionButtons qui sont plus pratiques. J'ai ébauché un code qui ne marche pas... Si Jean Marie (ou tout autre contributeur) veut bien le fignoler. J'étais parti sur un Frame avec 4 OptionButton ayant tous pour Caption "118". Donc lorsque l'un des 4 OptionButton était à true, une variable prenait la valeur du caption que je pensais transformer en caractère via Chr mais cela ne fonctionne pas. Je dois encore me perfectionner mais j'ai d'autres choses à faire en ce moment. Je vous donne le code :
Code:
Private Sub Frame1_Click()
Dim cas1 As String
 
    'Boucle pour chaque contrôle de Frame_colonne
    For Each OptionButton In Frame1.Controls
        'Si la valeur du contrôle = True (donc si coché) ...
        If OptionButton.Value Then
               
            'La variable "cas1" prend comme valeur le texte du caption
            cas1 = OptionButton.Caption
        End If
    Next
End Sub

    Variable que je réinjectais ici : (pour essai car le choix n'est pas fixe donc la cellule non plus)
 
ActiveCell.Offset(0, 57).Value = Chr(cas1)    'txtLundi_repas
Désolé mais je reste dans le coin
Bonne contination
@+ Eric c
Merci Eric pour ton aide sachant que ce que je te demande n'est pas des plus facie. Merci encore d'avoir pris tout ce temps pour m'aider à aller de l'avant.
 

Statistiques des forums

Discussions
311 733
Messages
2 082 011
Membres
101 866
dernier inscrit
XFPRO