Creation d'une check-list avec affichage dynamique de CheckBox

Bonjour !

Le service RH aimerait utiliser une nouvelle check-list pour l'embauche de collaborateur.

Le fichier contient 4 feuilles, dont une qui est la checklist et les 3 autres sont des feuilles de données.

J'aimerais trouver une solution pour lier les données à la checklist, en faisant apparaitre des checkbox (non cochées) chaque fois que c'est nécessaire (chaque fois qu'il y a une données.

Un premier jet a été réalisé avec des formules, mais cela ne convient pas. Cela ne prend par en charge l'affichage dynamique des checkbox. De plus, tout est pris en compte, et donc, on se retrouve avec des lignes vides pas jolies jolies.

L'idée serait de faire en sorte que, par exemple pour la partie demande de matériel, il ne s'affiche que les matériels qui sont remplis comme "oui" en fonction du métier, et d'y associer une checkbox à chaque fois.

Je pense qu'il faudrait passer par une déclaration de tableau via VBA pour ne récupérer que les combo métier/matériel qui sont "oui", mais j'ai vraiment du mal à maitriser la notion de tableau en VBA.

Quand aux cases à cocher, j'ai un code qui me permet de créer une case sur chaque ligne de la sélection, je pense réussir à l'adapter.

Merci de m'avoir lu, et merci d'avance pour la peine que vous prendrez à me répondre.

Bonjour

Une proposition VBA

Il te reste à refaire tes cases à cocher

"Quand aux cases à cocher, j'ai un code qui me permet de créer une case sur chaque ligne de la sélection"

Si tu pouvais partager ce code, ça m'intéresse

Cordialement

Hello Yal !

Merci pour ce retour. J'ai essayé de comprendre ton code, mais vraiment les tableaux, je pige que dalle.

Voici une nouvelle version du fichier, avec pas mal de modification d'ordre esthétique, ce qui met un peu le bazar.

J'ai ajouter le métier 20 avec l'intégralité des données, pour visualiser la place que cela prend.

Les infos, ne vont plus au bon endroit, pourrais-tu jeter un œil s'il te plait?

J'ai mis un bout de code pour les case a cocher. Pour limiter le poids du fichier, et vu qu'il n'y a aucune opération de calcul sur les case à cocher, je vais juste passer par un caractère sous la police wingdings, avec une macro double-clic qui vient modifier la valeur.

Le code n'est pas fini, et je n'ai pas encore ajouter le code pour le double-clic, mais je pense que tu verras l'idée, tu as l'air d'avoir bien plus de connaissances que moi X).

Merci encore pour ton retour !

Bonjour,

Bonne approche pour vos cases à cocher construites via la police wingdings ! mais votre code peut être plus simple pour éviter toutes ces variables.
Dans l'attente du retour de Yal_Excel, je pense que ceci peut vous aider --> https://forum.excel-pratique.com/s/goto/891743 ou ceci qui est mieux pour vous --> https://forum.excel-pratique.com/s/goto/924244. Votre code double click peut être réalisé en 7 lignes max

NB : Juste pour votre info. Dans vos codes lorsque vous déclarez --> Dim Col1, Col2, Col3 As String --> Col1 et col2 sont de type Variant et non String. Seul col3 de type String.
Idem pour lg1, ..... qui sont toutes de type Variant

Dans votre cas vous pouvez plutot mettre tout en Byte --> Dim Col1 as byte, Col2 as byte, Col3 as byte

Cordialement

Version adaptée au nouveau design. J'ai désactivé ton code qui n'est pas utile avec les modifs que j'ai faites

J'ai aussi intégré la gestion des coches, si tu veux changer l'apparence des cases c'est dans le code "Worksheet_SelectionChange" de la feuille "Checklist

Les cases à cocher avec windings je connaissais, dans ta première version les cases semblaient intégrées au texte dans la cellule. C'est ce qui m'a interpelé.

Merci pour ce retour Dan et merci pour les liens.

Le code que vous utilisez pour les "cases à cocher" est sensiblement identique à celui que j'avais l'intention d'ajouter, ce qui me rassure.

Quant aux variables, je suis totalement d'accord avec vous. Ces déclarations m'ont fortement dérangé. Je sais qu'il y a moyen de faire mieux et surtout bcp plus court. Mais je vous avoue que mes connaissance ne me permettent pas en l'état de gérer autrement des plages de données avec des intersections.

Je ne connais pas la méthodo pour traiter autant de range différentes en une seule fois.

Bien à vous

Merci encore pour ce retour

Tout était presque parfait, j'ai juste rajouté les case à cocher qui ne sont pas dynamique puisque les données sont en dur, et qui par conséquent n'entraient pas dans le traitement automatique via tableau.

En effet, sur la première version, les cases à cocher étaient bien des objets, ce qui me dérangeait un peu quand au poids du fichier, et à la vitesse d’exécution. D'autant que quand on travail avec ce type d'objet, on finit fatalement par rencontrer des problèmes. D'où le changement de fusil d'épaule et le traitement par police windings et maccro double clic.

Je vous souhaite à tous un bien bon week-end.

Le code que vous utilisez pour les "cases à cocher" est sensiblement identique à celui que j'avais l'intention d'ajouter, ce qui me rassure.

A titre d'exemple, vous mettez simplement ce code dans la feuille Checklist, cela fera ce que vous demandez

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("B12:B15,B18,B24:B26,B32:B35,B37:B40,D16")) Is Nothing Then
    Cancel = False
        With Target
        .Font.Name = "Wingdings 2"
        .Font.Size = 12
        If .FormulaR1C1 = "R" Then .FormulaR1C1 = "£" Else: .FormulaR1C1 = "R"
    End With
    Cancel = True
End If
End Sub

Cordialement

Je viens de publier une version modifée qui intègre la gestion des cases. Je la remet parce que l'ayant éditée entre temps elle est peut être passée innapercue

NE pas tenir compte de ce message, je ne sais pas comment le supprimer

J'ai étudié le fichier, et tout est vraiment parfait. J'ai fait les modifs nécessaires pour les case à cocher. il me restait deux petits détails à résoudre.

Pour les données qui ne sont pas traités dans les tableaux ( A12:F15 / A32:F35 / A37:F40), il fallait qu’a chaque changement de valeur de E7, les cases soient réinitialisées en "¨" si en Colonne -1 il y a une valeur.

Il y en aura normalement toujours une, puisque les données sont en dures, sauf pour le duo C40/D40 ou C40 n'est pas forcément renseignée.

De plus, il y avait aussi une case a prendre en compte en D16.

J'ai fait les modifs, je soumet le fichier final a vérification, et pour aider d'autre personnes qui pourraient en avoir besoin.

Merci encore pour votre intervention qui me fut salutaire.

Je vous souhaite un excellent week-end

Rechercher des sujets similaires à "creation check list affichage dynamique checkbox"