Remplacer textbox par checkbox
Bonjour les amis,
Je travaille en ce moment sur une boite de dialogue et je bloque au niveau des textbox et checkbox, je souhaiterai remplacer les textbox qui figure dans la zone remplacer :
en faite je préfère un simple clic au lieu d'écrire un X dans un textbox.
Et bien entendu qu'il y est une mise à jour dans la base de donnée global avec un X pour dire que cette tâche à été effectué.
Et pour finir, si les trois tâches (signature, pièce identité et justificatif) sont cochés, cochés automatique CLOTURE.
Merci par avance pour cette aide
A très vite
Miloud
Visiblement ça doit être compliqué à mettre en place, je vais essayer de trouver une autre solution plus simple
Bonjour,
Et c'est quoi le problème pour toi de remplacer des TextBox par des CheckBox ?
Oups je ne savais pas qu'il ne fallait pas envoyé de fichier directement
Pour résumer, je travail en ce moment sur un fichier qui permet de gérer les signatures, il y a donc une boite de dialogue dans lequel il est une listebox des textbox et des checkbox. C'est une application que j'ai télécharger sur internet et que j'essaye d'adapter tant bien que mal à mon propre usage. je vais mettre le code ci-dessous en espérant que quelqu'un pourra m'aider à le finaliser.
Pour répondre à ta question, je vais te dire simplement, je ne sais pas faire la connection entre le bouton de la boite de dialogue et la feuille "onglet BD_GLOBAL"
voicie le code :
Option Compare Text
Dim f, BD_GLOBAL(), choix(), Rng, Ncol
Private Sub CommandButton1_Click()
If MsgBox("Etes vous sûr de suppimer " & f.Cells(Enreg, 1) & "?", vbYesNo) = vbYes Then
Enreg = Me.Enreg
f.Cells(Enreg, 1).Resize(, Ncol).Delete Shift:=xlUp
raz
Me.Enreg = ""
UserForm_Initialize
End If
End Sub
Private Sub UserForm_Initialize()
Set f = Sheets("BD_GLOBAL")
Set Rng = f.Range("A2:M" & f.[A65000].End(xlUp).Row)
BD_GLOBAL = Rng.Value
Ncol = Rng.Columns.Count
Set d1 = CreateObject("Scripting.Dictionary")
Set d2 = CreateObject("Scripting.Dictionary")
Set d3 = CreateObject("Scripting.Dictionary")
d1.CompareMode = vbTextCompare
d2.CompareMode = vbTextCompare
d3.CompareMode = vbTextCompare
For i = LBound(BD_GLOBAL) To UBound(BD_GLOBAL)
If Not d1.exists(BD_GLOBAL(i, 1)) Then d1(BD_GLOBAL(i, 1)) = ""
If Not d2.exists(BD_GLOBAL(i, 4)) Then d2(BD_GLOBAL(i, 4)) = ""
If Not d3.exists(BD_GLOBAL(i, 8)) Then d3(BD_GLOBAL(i, 8)) = ""
Next i
'--avec tri
temp = d1.keys
Call Tri(temp, LBound(temp), UBound(temp))
Me.ComboBox1.List = temp
temp = d2.keys
Call Tri(temp, LBound(temp), UBound(temp))
Me.ComboBox2.List = temp
temp = d3.keys
Call Tri(temp, LBound(temp), UBound(temp))
Me.ComboBox3.List = temp
Me.ListBox1.Clear
Me.ComboBox1.ListIndex = -1
Me.ComboBox2.ListIndex = -1
Me.Enreg = f.[A65000].End(xlUp).Row + 1
End Sub
Private Sub ComboBox1_click()
Me.ListBox1.Clear
For k = 1 To Ncol: Me("textBox" & k) = "": Next k
j = 0
n = Application.CountIf(Application.Index(Rng, , 1), Me.ComboBox1)
Dim b()
ReDim b(1 To n, 1 To Ncol + 1)
For i = LBound(BD_GLOBAL) To UBound(BD_GLOBAL)
If Me.ComboBox1 = BD_GLOBAL(i, 1) Then
j = j + 1
For k = 1 To Ncol
b(j, k) = BD_GLOBAL(i, k)
If k >= 3 And k <= 5 Then b(j, k) = Format(BD_GLOBAL(i, k), "00 00 00 00 00")
Next k
b(j, k) = i
End If
Next i
ListBox1.List = b
ListBox1.ListIndex = 0
End Sub
Private Sub ComboBox2_click()
Me.ListBox1.Clear
For k = 1 To Ncol: Me("textBox" & k) = "": Next k
j = 0
n = Application.CountIf(Application.Index(Rng, , 4), Me.ComboBox2)
Dim b()
ReDim b(1 To n, 1 To Ncol + 1)
For i = LBound(BD_GLOBAL) To UBound(BD_GLOBAL)
If Me.ComboBox2 = BD_GLOBAL(i, 4) Then
j = j + 1
For k = 1 To Ncol
b(j, k) = BD_GLOBAL(i, k)
If k >= 3 And k <= 5 Then b(j, k) = Format(BD_GLOBAL(i, k), "00 00 00 00 00")
Next k
b(j, k) = i
End If
Next i
ListBox1.List = b
ListBox1.ListIndex = 0
End Sub
Private Sub ComboBox3_click()
Me.ListBox1.Clear
For k = 1 To Ncol: Me("textBox" & k) = "": Next k
j = 0
n = Application.CountIf(Application.Index(Rng, , 8), Me.ComboBox3)
Dim b()
ReDim b(1 To n, 1 To Ncol + 1)
For i = LBound(BD_GLOBAL) To UBound(BD_GLOBAL)
If Me.ComboBox3 = BD_GLOBAL(i, 8) Then
j = j + 1
For k = 1 To Ncol
b(j, k) = BD_GLOBAL(i, k)
If k >= 3 And k <= 5 Then b(j, k) = Format(BD_GLOBAL(i, k), "00 00 00 00 00")
Next k
b(j, k) = i
End If
Next i
ListBox1.List = b
ListBox1.ListIndex = 0
End Sub
Private Sub ListBox1_Click()
For k = 1 To Ncol
Me("textBox" & k) = Me.ListBox1.Column(k - 1)
Next k
Me.Enreg = Me.ListBox1.Column(Ncol) + Rng.Row - 1
End Sub
Private Sub b_modif_Click()
If Me.Enreg <> "" And Me.TextBox1 <> "" Then
NoEnreg = Me.Enreg
For k = 1 To Ncol
x = Replace(Me("textBox" & k), " ", "")
If IsNumeric(x) Then
f.Cells(NoEnreg, k) = Val(x)
Else
f.Cells(NoEnreg, k) = Me("textBox" & k)
End If
Next k
raz
Me.Enreg = ""
UserForm_Initialize
End If
End Sub
Private Sub b_ajout_Click()
raz
Me.Enreg = f.[A65000].End(xlUp).Row + 1
End Sub
Sub raz()
For k = 1 To Ncol
Me("textBox" & k) = ""
Next k
Me.TextBox1.SetFocus
Me.CheckBox1.SetFocus
End Sub
Sub Tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call Tri(a, g, droi)
If gauc < d Then Call Tri(a, gauc, d)
End Sub
je te propose une idée de solution sur un exemple
essaye si cela correspond à ce que tu souhaites tu peux l'adapter ou je te le ferai
cordialement
Merci infiniment gullaud
C'est exactement ça que je souhaite faire. Je vais essayer de l'adapter à mon fichier et je te tiens informé.
Merci encore
Bonjour gullaud,
Depuis hier je suis dessus, et sincèrement je n'y arrive pas. En faite la complication vient du faite qu'il faut que pour chaque salarié, il doit remplir la croix grace aux checkbox dans les cellules de la ligne du salarié, pour résumer, un salarié et des croix sur le salarié concerné, etc...
En fait, je pense que mon erreur vient du faite que je ne sais pas où placé le code vba que tu as écrit.
Peux tu m'aider stp ?
je regarde la semaine prochaine
peux-tu m'expliquer à quoi correspondent exactement les 2 feuilles BD_GLOBAL et BD_NON_CLOTURE
pour les croix, on ne travaille que sur la feuille "BD_NON_CLOTURE"
merci pour les éclaircissements
J'ai trouvé le programme très excellent. et vraiment complet. moi par compte je travail sur un programme de gestion des archives.
pouvez-vous m'aidez a insérer une formule pour faire des recherches. par description?
Bonjour,
Je viens de modifier ton fichier, regardes si c'est ce que tu recherche !
Bonjour,
nakida, tu devrais ouvrir une nouvelle discussion car sinon, on va se mélanger les pinceaux et quand tu crée la discussion, essai d'être le plus précis possible sur ce que tu souhaites avoir comme résultat !
pouvez-vous m'aidez a insérer une formule pour faire des recherches. par description?
Tu veux quoi, une formule dans le classeur, une fonction de recherche en VBA ?
j'ai fait le travail "par salarié", vérifie que cela fonctionne
je ferai la suite après, si tu veux essayer pas de problème
j'ai du mal de comprendre ta façon de programmer
si tu es d'accord au mois de juin je pourrais tout réécrire, de façon plus simple
je n'ai pas compris comment fonctionne "Me.Enreg", comment cette variable a été définie et où
merci
Re,
Bonjour gullaud, ce n'est pas une variable mais un TextBox qui sert, à l'ouverture du formulaire, à indiquer le nombre d'enregistrements puis à la sélection dans la ListBox, à indiquer le numéro de ligne dans la feuille de calcul de l'élément sélectionné ! Numéro qui est stocké dans la dernière colonne de la ListBox
Merci infiniment gullaud,
Pour répondre à ta première question :
peux-tu m'expliquer à quoi correspondent exactement les 2 feuilles BD_GLOBAL et BD_NON_CLOTURE
pour les croix, on ne travaille que sur la feuille "BD_NON_CLOTURE"
merci pour les éclaircissements
REPONSE : BD_GLOBAL c'est la base de donnée générale, et BD_NON_CLOTURE c'est la base de donnée des salariés qui n'ont pas leur dossier clôturé, lorsque je souhaite imprimer la liste des salariés qui n'ont pas leur dossier clôturé j'aurai juste à cliquer sur le bouton DOSSIER NON CLOTURE (Cf boite de dialogue). Pour résumer, 2 base de données, la première c'est la base de donnée générale et la deuxième celle qui me permet de savoir qui n'est pas à jour dans son dossier.
Bonjour Theze,
C'est parfait mise à part le BOUTON CLOTURE qui doit se cocher AUTOMATIQUEMENT lorsque les trois boutons (signature, pièce d'identité et justificatif) SONT COCHES. Après je suis ouvert à tout, s'il le faut on supprimer le bouton clôturé et le faire sur la BD_GENERAL.
Qu'en penses tu ?
Pour répondre à ta seconde question gullaud,
j'ai fait le travail "par salarié", vérifie que cela fonctionne
je ferai la suite après, si tu veux essayer pas de problème
j'ai du mal de comprendre ta façon de programmer
si tu es d'accord au mois de juin je pourrais tout réécrire, de façon plus simple
je n'ai pas compris comment fonctionne "Me.Enreg", comment cette variable a été définie et où ?
REPONSE :
Comme je te le disais à l'origine, c'est un classeur que j'ai télécharger sur le net et que j'ai adapté au mieux à ma situation, je ne maitrise pas trop cette façon de programmer.
Et sincèrement je suis d'accord avec toi, si tu as plus de temps au mois de juin, je suis preneur pour un code plus simple et plus lisible.
Je te dis donc à bientôt
Et merci encore pour ta patience et ton aide.
Bonjour,
Voici le code qui permet de cocher "Cloturer" si les 3 autres sont cochées :
Private Sub ChkJustificatif_Click()
Cocher
End Sub
Private Sub ChkP_Identite_Click()
Cocher
End Sub
Private Sub ChkSignature_Click()
Cocher
End Sub
Sub Cocher()
ChkCloture.Value = ChkJustificatif.Value = True And ChkP_Identite.Value = True And ChkSignature.Value = True
End Sub
Comme je vois que tu es plutôt partis sur le projet de gullaud, je me retire de la discussion !
je vais commencer de tout réécrire
avant de démarrer j'ai quelques questions
1 : est-ce utile de faire des recherches par groupe et par compte BFCC?
2 : Quel rôle donnes-tu au bouton "validation ajouter modifier"
3 : risque-t-il d'avoir 2 salariés avec le même nom (si oui, comment penses-tu les distinguer)
je viens d'effectuer un premier travail
1 : afficher un salarié
2 : saisir un nouveau salarié
j'attends vos remarques et les réponses à mon envoi précedent
cordialement
Bonjour Theze
Il ne faut surtout pas le prendre dans ce sens là, l'union fait la force et j'apprécie énormément votre soutien et votre aide. Je m'efforce de répondre à chaque discussion et à chaque personne.
Le but est d'apprendre de nos erreurs, et si nous avons la chance d'avoir plusieurs avis pour mieux apprendre, je préfère cette situation.
Merci de rester dans la discussion Theze
Miloud
Bonjour gullaud
Pour répondre à tes interrogations :
avant de démarrer j'ai quelques questions
1 : est-ce utile de faire des recherches par groupe et par compte BFCC?
2 : Quel rôle donnes-tu au bouton "validation ajouter modifier"
3 : risque-t-il d'avoir 2 salariés avec le même nom (si oui, comment penses-tu les distinguer)
REPONSES :
1 : Oui parce que si je souhaite imprimer une liste par groupe ou par compte je souhaite que cela puisse se faire, d'autant plus que la suite du programme va permettre je l'espère à la suite de la sélection par groupe me permettre d'imprimer une liste par groupe ou bien encore si je souhaite une liste par n° compte BFCC, le but étant de créer des listes par filtre groupe, compte BFCC etc...
2 : Bouton Ajouter un salarié pour ajouter un salarié
Bouton Validation ajouter modifier pour valider une fiche salarié ou ajouter ou modifier une fiche salarié (c'est simplement pour distinguer le bouton ajouter un salarié nouveau
3 : Il peut y avoir un salarié avec plusieurs signatures donc plusieurs compte BFCC, au même titre il peut y avoir un salarié dans plusieurs groupes donc dans plusieurs compte BFCC. Par contre, je n'ai pas encore eu le cas d'un salarié avec le même nom qu'un autre salarié. Donc je ne sais pas trop comment les distingués.
Voilà j'espère avoir répondu à tes interrogations, n'hésites pas si tu veux plus de précisions
Gullaud,
Je viens de tester ton dernier fichier, il y a effectivement une amélioration dans le sens ou tu renseignes chaque textbox avec son libellé, ça donne une précision, par contre les deux listbox groupe et n° compte BFCC ne sont pas renseigné.
Est-ce normal ?
question :
1 : quand un salarié appartient à plusieurs groupes ou à plusieurs comptes BFCC, y-a-il plusieurs lignes dans les feuilles de calcul
il me semble que pour avancer dans le projet il est indispensable de pouvoir identifier de façon uniquer un salarié
2 : quand un salarié appartient à plusieurs groupes ou à plusieurs compte BFCC, peut-il y avoir une différence dans les cases à cocher (signature, pièces d'identité, justificatif domicile)
envisage toutes les situation possibles
réfléchi bien à tous ces problèmes maintenant, sinon j'ai peur d' être obligé de tout recommencer
REPONSES :
1 : quand un salarié appartient à plusieurs groupes ou à plusieurs comptes BFCC, y-a-il plusieurs lignes dans les feuilles de calcul
il me semble que pour avancer dans le projet il est indispensable de pouvoir identifier de façon uniquer un salarié.
Réponse 1 : je te confirme bien qu'un salarié peut avoir la possibilité d'être sur plusieurs groupes et donc peut avoir la signature dans plusieurs compte BFCC. Ce fichier permet simplement d'avoir un inventaire sous forme de listing par groupe de qui a la signature de tel ou tel groupe, et dans quel numéro de compte BFCC cette signature est attribué et pour quel salarié.
2 : quand un salarié appartient à plusieurs groupes ou à plusieurs compte BFCC, peut-il y avoir une différence dans les cases à cocher (signature, pièces d'identité, justificatif domicile)
envisage toutes les situation possibles
Réponse 2 : Oui il peut y avoir une différence, par exemple, un nouveau salarié arrive dans un groupe X, pour valider sa possibilité de pouvoir établir des chèques de tel groupe ou de tel compte, il a plusieurs obligations à respecter :
la première obligation : signature des documents bancaires
la seconde obligation : copie de la pièce d'identité
la troisième : copie d'un justificatif de domicile
le salarié peut donc faire la première obligation et la troisième, ou encore la seconde et la troisième, le but de ce fichier étant de repérer les dossiers non clôturés et de relancer les personnes afin d'y avoir un fichier complètement clôturé. Et le soucis chez nous, comme il y a beaucoup d'embouche, donc beaucoup de mouvement, le casse tête des signatures est devenu difficile à gérer, avec ce type de fichier, en un seul clic, nous aurons le listing des personnes à relancer pour clôturer son dossier.
Voilà toute l'histoire de ce fichier, un peu stressant voir émouvant