Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Bonjour a tous.
Je viens vers vous car je bloque sur une petite fonctionnalité de mon nouveau tableau.
Je trouve toujours la solution en cas de blocage sur votre site mais pour une fois, je bloque !!
Sur un tableau assez simple, j'aimerai créer une case à cocher en colone E uniquement si la colonne A de la même ligne est remplie.
Imaginons que je renseigne la cellule A1 (par n'importe quoi, c'est à dire qu'il faut qu'elle soit non vide), une case à cocher se créée automatiquement en E1.
Si je viens renseigner A2, alors case à cocher en E2.
J'ai pour l'instant palié le problème par une macro qui m'affiche un X au double clic, mais je ne suis pas pleinement satisfait de cette solution.
La case à cocher aura une action sur la colonne O de la même ligne qui contient une liste de choix.
Auriez vous une jolie solution à me proposer ?
Merci de votre réponse
Tu peux essayer ce code à placer dans le code de la feuille en question (ckick-droit sur le nom d'onglet puis "visualiser le code") :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim h As Integer, g As Integer
h = Range("E" & Target.Row).Top
g = Range("E" & Target.Row).Left
If Not Intersect(Target, [A:A]) Is Nothing And Target <> "" Then
ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=g, Top:=h, Width:=15, Height:=12).Select
End If
End Sub
Merci pour ta bienvenue 🙂 Je suis présent sur votre forum depuis 2009 🙂 Mais je ne poste quasiment jamais.
En effet, pas assez compétent pour aider les autres, mais assez pour m'en sortir avec votre aide 🙂
Ta solution est juste magique.
C'est Exactement ce que je cherchais.
Cependant, peut on pousser la solution à la perfection ?
Serait il possible d'avoir une check box de formulaire et non active x ?
Pense tu que cette dernière peut etre centrée par rapport aux dimensions de ma cellule E ?
Et dernière chose même si je ne pense pas que ce soit très utile mais on ne sait jamais : Peut on faire en sorte que si je supprime le contenu de ma cellule A, la check box disparaisse?
J'en demande peut être trop.
MERCI pour ta première réponse rapide 🙂
A+
---------------------EDIT-----------------------
En modifiant un peu le code, j'ai la réponse à 1 de mes questions.
J'ai pu remplacé par une CheckBox formulaire. Reste à la centrée, et la faire disparaitre si la colonne A est vidée
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim h As Integer, g As Integer, cb As CheckBox
h = Range("E" & Target.Row).Top
g = Range("E" & Target.Row).Left
If Not Intersect(Target, [A:A]) Is Nothing And Target <> "" Then
Set cb = ActiveSheet.CheckBoxes.Add(g, h, 0, 0)
With cb
.Text = ""
.Value = xlOff
End With
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim h As Integer, g As Integer, l As Integer, c As Integer, cb As CheckBox
h = Range("E" & Target.Row).Top
g = Range("E" & Target.Row).Left
l = Range("E" & Target.Row).Width
c = g + Int(l / 2) - 8
If Not Intersect(Target, [A:A]) Is Nothing And Target.Count = 1 Then
If Target <> "" Then
Set cb = ActiveSheet.CheckBoxes.Add(c, h, 0, 0)
With cb
.Text = ""
.Value = xlOff
.Name = "CheckBox_E" & Target.Row
End With
Else
On Error Resume Next
ActiveSheet.Shapes.Range("CheckBox_E" & Target.Row).Delete
On Error GoTo 0
End If
End If
End Sub
C'est EXACTEMENT ce que je recherche.
Je continue à avancer grâce à toi.
Je regarderai ton code plus en détail demain (car il se fait tard) et comme ça fait 2 jours que je suis sur le problème, j'ai le cerveau pollué.
Le but de ce forum étant d'apprendre et pas de se faire fournir les réponses, je reviendrai vers toi au cas ou ce code soit un peu trop complexe, si ça ne t'embête pas.
Je fini ma fonction demain et je met en résolu.
MERCI MERCI MERCI !!!
A bientôt
JB
Hello
Je reviens vers toi.
J'ai pu comprendre le code et ca parait si simple ...
Il n'y a que la facon de centrer la CB que je n'ai pas compris. (donc cette ligne : c = g + Int(l / 2) - 8)
Avec quelques explication peut etre.
Je cherche maintenant à inscrire quelque chose dans une cellule O de la même ligne et effacer le contenu si la case est décoché.
Mon code ne fonctionne pas ... mais j'avoue ne pas y avoir passer beaucoup de temps ...
As tu une solution ?
Merci encore !!!!
Hello
J'ai compris la formule pour centrer. J'ai confondu le l avec un 1. Mais du coup, j'ai compris !!!
Je n'arrive par contre toujours pas à faire le reste. Une fois la check box créée, si cette dernière est cochée, alors en colonne O de la même ligne s'affiche un texte. Si on la décoche, elle vide la case en O.
Merci pour tes lumières 🙂
JB
J'ai pu pallier :
J'ai rajouté l'option de liaison de cellule dans la macro :
.LinkedCell = "E" & Target.Row
Ma case est donc lié à la cellule dans laquelle elle s'affiche.
Puis en O, j'ai ajouter la formule :
=SI(E3=VRAI;"texte";"")
Et ca fonctionne...
Si tu as une solution par macro, je suis preneur.
MERCI ENCORE POUR TOUT 🙂
A+
JB
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD