premièrement vous avez mon fichier en PJ ci-dessous
J'aurais besoin de votre aide car je débute sur VBA et je comprends pas toutes les subtilités encore.
Je souhaite mettre dans la cellule "Présent", une case à cocher qui me permettrait derrière avec une MFC pour rendre la cellule cocher verte.
Lorsque j'effectue un Tri croissant ou décroissant ou A - Z, la case à cocher bouge avec la ligne correspondante mais la cellule lié ne change pas. J'ai tout essayé : changer la place du $ dans la cellule liée, ne pas mettre de cellule liée, etc. rien n'y fais. Lorsque je trie mes données la case bouge mais quand je coche cela apparait encore sur la cellule liée...
J'ai trouvé le code de la case à cocher sur internet et peut être qu'il y a un endroit dans le code qui me bloque... sauf qu'étant débutant sur VBA, je sais pas si cela vient d'un problème du code ou si je dois rajouter un élément dans le code ou autre.
Je vous remercie donc par avance pour le temps que vous prendrez sur ce sujet.
Voici une solution sans 'case à cocher' qui alourdissent le fichier et sont plus compliquées à gérer.
Faites un double-click dans une cellule de la colonne 'Présent' et la cellule recevra un 1 qui sera affiché comme une coche par format personnalisé : "✓";"" Si la cellule est égale à 1 au moment du double-click elle est vidée.
Voir dans le module de code de la feuille :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = Target.CountLarge = 1 And Not Intersect(Target, Range("Tableau1[Présent]")) Is Nothing
If Cancel Then
If Target.Value <> 1 Then Target.Value = 1 Else Target = Empty
End If
End Sub
et n'étant pas un spécialiste non plus du VBA je peux te proposer ceci avec du bricolage.
Peut-être que quelqu'un va te proposer quelque chose de plus optimisé et de plus performant
Voici une solution sans 'case à cocher' qui alourdissent le fichier et sont plus compliquées à gérer.
Faites un double-click dans une cellule de la colonne 'Présent' et la cellule recevra un 1 qui sera affiché comme une coche par format personnalisé : "✓";"" Si la cellule est égale à 1 au moment du double-click elle est vidée.
Voir dans le module de code de la feuille :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = Target.CountLarge = 1 And Not Intersect(Target, Range("Tableau1[Présent]")) Is Nothing
If Cancel Then
If Target.Value <> 1 Then Target.Value = 1 Else Target = Empty
End If
End Sub
Voici une solution sans 'case à cocher' qui alourdissent le fichier et sont plus compliquées à gérer.
Faites un double-click dans une cellule de la colonne 'Présent' et la cellule recevra un 1 qui sera affiché comme une coche par format personnalisé : "✓";"" Si la cellule est égale à 1 au moment du double-click elle est vidée.
Voir dans le module de code de la feuille :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = Target.CountLarge = 1 And Not Intersect(Target, Range("Tableau1[Présent]")) Is Nothing
If Cancel Then
If Target.Value <> 1 Then Target.Value = 1 Else Target = Empty
End If
End Sub
Merci beaucoup pour cette astuce qui permet de contourner la case à cocher. Je n'étais pas au courant que les cases à cocher pouvaient alourdir le fichier merci de l'information.
En fait ne pas mettre de case à cocher est plus pratique au niveau visuel.
Juste pour pouvoir progresser un peu plus dans ma lecture et compréhension du code VBA, pourrais-tu m'indiquer quelle est la ligne VB qui permet suite au double click d'effacer l'information de la cellule ?
et n'étant pas un spécialiste non plus du VBA je peux te proposer ceci avec du bricolage.
Peut-être que quelqu'un va te proposer quelque chose de plus optimisé et de plus performant
merci pour ce retour, oui en effet, je crois que les cases à cocher n'ont pas grand succès ici
Comment as-tu fais pour que les cases à cocher correspondent bien à la cellule même avec un tri ? Si tu pouvais m'indiquer la ligne VB qui à permis de rattacher la case à cocher à la cellule cela m'aiderai beaucoup.
Juste pour pouvoir progresser un peu plus dans ma lecture et compréhension du code VBA, pourrais-tu m'indiquer quelle est la ligne VB qui permet suite au double click d'effacer l'information de la cellule ?