Afficher case à cocher si cellule non vide

Sandrine321

XLDnaute Nouveau
Bonjour à tous,

J'ai toujours trouvé ce que je cherchais dans ce forum super fourni, mais là je bloque un peu alors je prends la parole pour vous demander conseil.
J'ai un tableau Excel qui servira un peu d'outil de gestion de projet, avec une colonne dans laquelle on peut choisir l'action dans une liste déroulante (on peut aussi choisir de ne rien mettre), et une colonne qui contient une case à cocher de formulaire que l'on coche quand l'action est effectuée. Ce que je voudrais, c'est faire que la case à cocher n'apparaisse que si il y a une action dans la colonne B, donc si la case est non vide.

J'ai cru comprendre qu'il fallait toucher au code de la feuille concernée, mais je ne connais pas encore le langage VBA.. j'en utilise occasionnellement quand je trouve un morceau de code tout fait parce que je comprends la logique mais je serais bien incapable d'en écrire un bout moi-même.

Je vous mets le doc en pièce jointe, merci d'avance pour votre aide :)
 

Pièces jointes

  • Casesacochersicellulenonvide.xlsm
    113.1 KB · Affichages: 110
Dernière édition:

DoubleZero

XLDnaute Barbatruc
Re : Afficher case à cocher si cellule non vide

Bonjour à toutes et à tous,

Bienvenue sur XLD, Sandrine321.

Je n'aimerais pas m'appeler Marion et recevoir des appels téléphoniques :mad: de personnes malveillantes.

Merci de bien vouloir supprimer les valeurs confidentielles présentes dans le fichier déposé en #1.

A bientôt :)

P. S. : Lien supprimé
 

Modeste

XLDnaute Barbatruc
Re : Afficher case à cocher si cellule non vide

Bonjour Sandrine321 et bienvenue pour ce premier message :)

Dans ton module5, j'ai ajouté cette petite procédure (qu'il ne faut exécuter qu'une fois)
VB:
Sub NommerLesCases()
'
' nommer chaque case "Check Box" + n° de la ligne où elle figure
'
Dim Shp As Shape
For Each Shp In Sheets("Planning").Shapes
    If Shp.Name Like "Check Box*" Then
        Shp.Name = "Check Box" & Shp.BottomRightCell.Row
    End If
Next Shp
End Sub

Si on peut considérer qu'il n'y a pas de cases à cocher ailleurs que dans la plage F11:F100 (pour la feuille "Planning"), cette petite macro nomme chaque case à cocher "Check Box", suivi du n° de la ligne où la case figure. Tes cases seront donc renommées de "Check Box11" à "Check Box100"

Une fois cette macro exécutée, colle les lignes suivantes dans la fenêtre de code de la feuille "Planning":)
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [B11:B100]) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        With Me.Shapes("Check Box" & Target.Row)
            .DrawingObject.Value = False
            .Visible = Target <> ""
        End With
    End If
End Sub
Avec celle-ci, à chaque changement de valeur dans la plage B11:B100, si le contenu de la cellule de la colonne B est effacé, la case est décochée et masquée. Si la cellule n'est pas vide, la case est décochée et affichée.

... à tester ...

Attention, en feuille calcul, il me semble que la "cellule liée" associée aux cases à cocher n'est pas en face de l'item choisi (en tout cas pas pour B80 et la case à cocher en F80)

Edit: Salut 00 tu as mille fois raison! Je n'avais même pas vu :eek:
 

Sandrine321

XLDnaute Nouveau
Re : Afficher case à cocher si cellule non vide

Et bien moi non plus je n'avais pas vu, merci DoubleZéro !! C'est modifié. Pour l'instant tout est fictif, je teste juste les formules donc j'avoue que je n'avais pas vérifié le contenu, désolée.

Modeste, c'est magique tes deux solutions ! J'avais justement essayé de renommer manuellement les cases à cocher pour qu'elles aient un nom correspondant à leur ligne, sans trop de succès.
Juste une question: quand tu dis qu'il ne faut l'exécuter qu'une fois, est-ce que ça veut dire que je peux la supprimer du code de la page maintenant que les cases sont renommées ? Ou ce n'est pas la peine ?

Et la deuxième formule pour que les cases à cocher n’apparaissent que quand la cellule de la colonne B n'est pas vide fonctionne très bien :) Elle n'est pas "rétroactive" donc les cases à cocher qui correspondaient déjà à une cellule vide avant que je rentre ton code n'ont pas disparu, mais il suffit que je leur rappelle que la cellule est vide pour qu'elles n'apparaissent plus (je re-sélectionne la ligne vide dans le menu déroulant quoi). Donc c'est parfait, c'est exactement ce que je cherchais, merci beaucoup ! :)

Et effectivement ligne 80 il y a un souci avec la cellule liée. Je les ai liées à la main, faute de savoir l'automatiser (on ne rigole pas), je vais vérifier tout ça.
 
Dernière édition:

ERIC S

XLDnaute Barbatruc
Re : Afficher case à cocher si cellule non vide

Bonjour

cela veut dire que si tu ne rajoutes pas d'autres lignes avec cases à cocher, tu n'en aura plus besoin puisque cette macro ne sert qu'à les renommer

par contre si tu étends, il faudra renommer les nouvelles....
 

Modeste

XLDnaute Barbatruc
Re : Afficher case à cocher si cellule non vide

Re bonjour,
Salut Éric :) merci pour le suivi (et félicitations -par ailleurs- pour les 4k :D)

Sandrine, il faudra sans doute aussi prévoir de masquer les cases en même temps que tu décoches toutes ces dernières (enfin, je présume!?)
 

Sandrine321

XLDnaute Nouveau
Re : Afficher case à cocher si cellule non vide

Ok merci Eric :) Je n'aurai pas d'autres cases à ajouter donc effectivement ça devrait aller.

Modeste, tu parles de ma macro "décocher toutes les cases" sur le bouton du même nom en feuille 1 ? Si oui, je ne pense pas avoir besoin de masquer la case en même temps. En deux mots, l'idée du doc est qu'il puisse être utilisé successivement par deux personnes: une qui paramètre les actions et les dates (les cellules vides pour l'instant se rempliront automatiquement en fonction des actions), et une (celle qui réalisera le plan d'action) qui va juste cocher les cases et regarder la barre d'avancement se remplir :eek: et cliquer sur quelques liens éventuellement... c'est à elle que se destine la commande "décocher toutes les cases", au cas où elle veuille tout recommencer à zéro et éviter de décocher les cases une par une.

De toutes façons, le code que tu m'as donné masque et décoche bien la case quand la cellule en colonne B est vide, donc il ne peut pas y avoir de case à cocher qui ne correspondent à rien. Ou alors je n'ai pas bien compris :)

Je re-joins le document avec ton code si ça t'intéresse toi ou les prochains qui auront le même souci que moi.

Merci encore pour votre aide :)

(PS: je n'ai pas trouvé où marquer la discussion comme résolue, je suis censée le rajouter directement dans le titre?)
 

Pièces jointes

  • azertyuiop.xlsm
    114.4 KB · Affichages: 102

Modeste

XLDnaute Barbatruc
Re : Afficher case à cocher si cellule non vide

Re,

Sandrine321 à dit:
[...] le code masque et décoche bien la case quand la cellule en colonne B est vide, donc il ne peut pas y avoir de case à cocher qui ne correspondent à rien. Ou alors je n'ai pas bien compris :)
L'inverse est sans doute plus vraisemblable: c'est sans doute moi qui ai imaginé une utilisation du fichier autre que la tienne :rolleyes:

Sandrine321 à dit:
Je re-joins le document avec ton code si ça t'intéresse toi ou les prochains qui auront le même souci que moi
Merci ... pour eux, surtout :)

Sandrine321 à dit:
(PS: je n'ai pas trouvé où marquer la discussion comme résolue, je suis censée le rajouter directement dans le titre?)
On pourrait considérer que tu viens de le faire :)
Et puis, à l'usage, tu verras bien s'il n'y a pas un aspect un peu oublié, des situations imprévues, etc. Ne manque pas de revenir le signaler!
 

RomaneK

XLDnaute Nouveau
Bonjour, si j'ai bien compris l'ensemble, pour que le code fonctionne il faut que les cases à cocher soit déjà créées dans la feuille et ainsi elles apparaîtront décochées dans les lignes où une valeur a été détecté en colonne B ? Je sais que ça remonte à 2015, j'espère avoir une réponse ^^
 

ERIC S

XLDnaute Barbatruc
Bonjour
la manip fonctionne effectivement en 2 temps :

la feuille est créée avec ses cases à cocher et celles-ci sont renommées en fonction de la ligne où elles se trouvent (1er code de Modeste au post3)

ensuite, à chaque changement sur une cellule en colonne B de la feuille on décoche la case et si B est vide on masque la case sinon elle reste visible et décochée
 

RomaneK

XLDnaute Nouveau
Sur mon excel, j'ai les cases à cocher. Du coup j'ai vérifié quand j'effaçais en colonne B la case est masquée mais lorsque je réécris quelque chose elle ne réapparait pas. Pourtant j'ai pas touché au code et il pouvait s'adapter à mon classeur...
 

RomaneK

XLDnaute Nouveau
oui j'ai essayé et ça marche mais je ne comprends pas pourquoi ça ne marche pas chez moi. J'ai passé 1h à renommer mais case à cocher (une cinquantaine) pour m'adapter à ce code et maintenant elles ont disparu... Je joins mon fichier. Je travaille avec la feuille "Mise en préparation" qui contient un tableau qui se rempli en fonction de ce qui a été coché dans "Choix matériau". Mes cellules sont liées à la feuille "Gestion_CAC". Celles de "Choix matériaux" sont en colonne G et celles de "Mise en préparation" sont en colonne I. Merci
 

Pièces jointes

  • Bons de chargement et de livraison (b).xlsm
    241.6 KB · Affichages: 53

ERIC S

XLDnaute Barbatruc
re
il faut mettre du code au niveau de ta feuille "mise en préparation" (le second proposé par Modeste mais en démarrant en B3)

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
     If Not Intersect(Target, [B3:B100]) Is Nothing Then
         If Target.Count > 1 Then Exit Sub
         With Me.Shapes("Check Box" & Target.Row)
             .DrawingObject.Value = False
             .Visible = Target <> ""
         End With
     End If
End Sub

Note pour les lignes déjà remplies, retape la valeur en cellule B (ex 22 en B3), la case apparaitra
 

RomaneK

XLDnaute Nouveau
Exact merci ! je pense que c'était ça qui était de trop :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub
?
Parce que j'avais déjà essayé de changer en mettant à partir de B3 dans le code et ça ne fonctionnait pas. Il me reste plus qu'à trouver une solution pour ne pas devoir retaper les numéros à chaque fois mais ça devrait aller. Merci pour votre aide !
 

Discussions similaires

Réponses
5
Affichages
192

Statistiques des forums

Discussions
312 330
Messages
2 087 339
Membres
103 524
dernier inscrit
Smile1813