Microsoft 365 Case à Cocher - VBA - Problème liaison de cellules

LoutrePompier

XLDnaute Nouveau
Bonjour à tous,

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.

Bonne après-midi et bon WE. 😁

PS : Le site en question : https://www.commentcamarche.net/faq...-cases-a-cocher-liees-aux-cellules-en-dessous
 

Pièces jointes

  • PB Case à cocher.xlsm
    28.5 KB · Affichages: 16
Solution
Bonjour,

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

Cordialement

riton00

XLDnaute Impliqué
Bonjour,

Vu le nombres de réponses à ta demande 😂 🤣

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

C'est un début
 

Pièces jointes

  • PB Case à coche forum.xlsm
    27.9 KB · Affichages: 12

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

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

Cordialement
 

Pièces jointes

  • PB Case à cocher.xlsm
    30.4 KB · Affichages: 30

LoutrePompier

XLDnaute Nouveau
Bonjour,

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

Cordialement
Bonjour Hasco,

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 ?

Bon WE 😉
 

LoutrePompier

XLDnaute Nouveau
Bonjour,

Vu le nombres de réponses à ta demande 😂 🤣

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

C'est un début
Bonjour Riton00,

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.

Merci d'avance 😁
 

Hasco

XLDnaute Barbatruc
Repose en paix
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 ?
C'est la dernière partie (après le 'else') de la ligne suivante :
If Target.Value <> 1 Then Target.Value = 1 Else Target = Empty

Target est la cellule et Empty = vide

. Je n'étais pas au courant que les cases à cocher pouvaient alourdir le fichier
La preuve.... c'est lourd à gérer... non ?

Cordialement
 
Dernière édition:

Discussions similaires

Réponses
18
Affichages
538

Statistiques des forums

Discussions
314 745
Messages
2 112 406
Membres
111 535
dernier inscrit
MJS1