XL 2021 (Résolu) Aide vrai/faux dans plusieurs colonnes de cases à cocher

Mathos

XLDnaute Nouveau
Supporter XLD
Bonjour à toutes et tous,
J'ai un petit souci, voici un aperçu de mon fichier excel :
1711625185051.png


Je souhaites, quand je coche une case que ça colorie la case avant, ça pas de souci je maitrise. Par contre j'ai près de 150 cases dans chaque colonne, je ne peux donc pas faire manuellement chaque case pour la passer en vrai/faux.
J'ai utilisé ce script qui me permet de le faire automatiquement, mais malheureusement, ça ne fonctionne qu'avec la première colonne. Auriez-vous une astuce pour que cela fonctionne sur toutes les colonnes svp ?
Voici le code que j'utilise :

VB:
Sub LinkChecks()
Dim xCB
Dim xCChar
i = 3
xCChar = "G"
For Each xCB In ActiveSheet.CheckBoxes
If xCB.Value = 1 Then
    Cells(i, xCChar).Value = True
Else
    Cells(i, xCChar).Value = False
End If
xCB.LinkedCell = Cells(i, xCChar).Address
i = i + 1
Next xCB
End Sub

Comme pour l'instant ça ne fonctionne qu'avec la colonne G je mets vrai/faux dedans et ensuite je passe la couleur de la police en blanc, comme ça c'est invisible et évite d'utiliser d'autres cases. Je souhaiterais donc faire la même chose en I, K...

D'avance merci si vous avez une astuce

Hervé
 
Dernière édition:

chaelie2015

XLDnaute Accro
Merci beaucoup Phil, effectivement ça allège le fichier :)

Bonjour à tous,
Merci beaucoup pour vos réponses, voici mon fichier, mais je vais étudier également vos fichiers à vous, j'aime bien comprendre et ne pas recopier "bêtement" 😉
Bonjour tout le monde,Phil69970, Mathos;
si vous permettez Bien sûr,Phil69970,voici une explication de ta solution (selon le Help de Microsoft 🤓 ) :

1. `Application.ScreenUpdating = False`: Cette ligne désactive la mise à jour de l'écran pendant l'exécution du code.
2. `If Not Application.Intersect(Target, Range("G3:G150, I3:I150, K3:K150, M3:M150, P3:p150")) Is Nothing Then`: Cette ligne vérifie si la plage de cellules sélectionnée intersecte l'une des plages spécifiées dans les colonnes G, I, K, M et P, allant des lignes 3 à 150.
3. `If Target.Cells.Count > 1 Then Exit Sub`: Cette ligne vérifie si la sélection contient plus d'une cellule. Si c'est le cas, le code quitte la procédure.
4. `Target = IIf(Target = "X", "", "X")`: Cette ligne change le contenu de la cellule sélectionnée en "X" si elle est vide, et le vide si elle contient déjà "X". Cela permet de basculer entre deux états en cliquant sur une cellule.
5. `[A1].Select`: Cette ligne sélectionne la cellule A1 après que les autres opérations ont été effectuées. sert uniquement à "sortir" de la cellule sélectionnée afin de pouvoir re-cliquer directement dans cette cellule

Donc, ce code VBA permet de basculer le contenu des cellules sélectionnées entre "X" et vide, uniquement dans les colonnes spécifiées,
A+
 
Dernière édition:

chaelie2015

XLDnaute Accro
Bonjour.
À la place du 4 je prends donc habituellement :
VB:
Target.Value = IIf(IsEmpty(Target.Value), ChrW$(&H2714), Empty)

Bonjour.
À la place du 4 je prends donc habituellement :
VB:
Target.Value = IIf(IsEmpty(Target.Value), ChrW$(&H2714), Empty)
Re
cette instruction de Bernard
VB:
Target.Value = IIf(IsEmpty(Target.Value), ChrW$(&H2714), Empty)
Elle insère une coche dans une cellule vide et la vide si elle contient déjà quelque chose, tandis que l'instruction de Phil69970
Code:
Target = IIf(Target = "X", "", "X")
Elle bascule entre les valeurs "X" et vide dans la cellule Target.
A+
:rolleyes:
 

Dranreb

XLDnaute Barbatruc
Non pas exactement: Target = IIf(Target = "X", "", "X") met "X" si la cellule vaut autre chose que "X", et pas seulement si elle est vide. Où alors si ce n'est qu'un détail il aurait aussi fallu simplement dire que Target.Value = IIf(IsEmpty(Target.Value), ChrW$(&H2714), Empty) bascule entre les valeurs coche et vide.
 

chaelie2015

XLDnaute Accro
Non pas exactement: Target = IIf(Target = "X", "", "X") met "X" si la cellule vaut autre chose que "X", et pas seulement si elle est vide. Où alors si ce n'est qu'un détail il aurait aussi fallu simplement dire que Target.Value = IIf(IsEmpty(Target.Value), ChrW$(&H2714), Empty) bascule entre les valeurs coche et vide.
Re
Donc si j'ai bien saisi, "Target.Value = IIf(IsEmpty(Target.Value), ChrW$(&H2714), Empty)" bascule entre la valeur de la cellule et une coche Unicode (✓) si la cellule est vide, 😊
et la vide si elle contient autre chose qu'une coche.
Merci de clarifier cela
A+
 

Discussions similaires

Réponses
18
Affichages
661

Statistiques des forums

Discussions
315 126
Messages
2 116 493
Membres
112 763
dernier inscrit
issam2020