[VBA] Cacher les check box sous conditions
Merenptah44
Messages postés
625
Date d'inscription
Statut
Membre
Dernière intervention
-
masterseb -
masterseb -
Bonjour à tous,
je vous présente mon problème :
j'ai un tableau de données sur 11 colonnes (de la 3 à la 13)
sur la 14 la 15 et la 16 j'ai des checkboxes (pas dans un userform)
je souhaite que ces check box ne soit affiché que s'il y a des données dans toutes les colonnes de la ligne correspondante.
1- doit-je activer une macro créer à cet effet ("hidechk()") à chaque changement, ou il y a t'il une méthode moins couteuse en tps de calcul?
2-j'ai un problème lors de l'appel de "hidechk()" avec le message suivant :"select method of Checkbox class has failed"
voici le code avec lequel je crée mes box (un peu faignant)
et celui qui me sert à verifier puis à cacher !
MsgBox i me sert à verifier à quel moment il plante, je vous le donne dans le mille, il m'affiche "3" puis plus rien...
mercid 'avance pour le ocup de main éventuel
Benjamin
je vous présente mon problème :
j'ai un tableau de données sur 11 colonnes (de la 3 à la 13)
sur la 14 la 15 et la 16 j'ai des checkboxes (pas dans un userform)
je souhaite que ces check box ne soit affiché que s'il y a des données dans toutes les colonnes de la ligne correspondante.
1- doit-je activer une macro créer à cet effet ("hidechk()") à chaque changement, ou il y a t'il une méthode moins couteuse en tps de calcul?
2-j'ai un problème lors de l'appel de "hidechk()" avec le message suivant :"select method of Checkbox class has failed"
voici le code avec lequel je crée mes box (un peu faignant)
Sub AddCheckBoxes() Dim i, j As Integer Application.ScreenUpdating = False 'Call erasecheck For i = 3 To 12 For j = 14 To 16 Cells(i, j).Select ActiveSheet.CheckBoxes.Add(Selection.Left, Selection.Top, Selection.Width, Selection.Height).Select With Selection .LinkedCell = Cells(i, j).Address .Characters.Text = "" .name = "chk" & i & j End With Next j Next i i = 13 For j = 14 To 16 Cells(i, j).Select ActiveSheet.CheckBoxes.Add(Selection.Left, Selection.Top, Selection.Width, Selection.Height).Select With Selection .LinkedCell = Cells(i, j).Address .Characters.Text = "All" .name = "chk" & i & j End With Next j Application.ScreenUpdating = True End Sub
et celui qui me sert à verifier puis à cacher !
Public Sub hideboxes() Dim i, j, k As Integer Dim name As String Dim cbox As CheckBox For i = 3 To 12 MsgBox i visibility = True For j = 3 To 13 If Cells(i, j).Value = "" Then visibility = False End If Next For k = 14 To 16 name = "chk" & i & k If visibility = False Then ActiveSheet.CheckBoxes(name).Select Selection.Visible = False Else ActiveSheet.CheckBoxes(name).Select Selection.Visible = True End If Next Next End Sub
MsgBox i me sert à verifier à quel moment il plante, je vous le donne dans le mille, il m'affiche "3" puis plus rien...
mercid 'avance pour le ocup de main éventuel
Benjamin
A voir également:
- [VBA] Cacher les check box sous conditions
- Set-top box - Accueil - Box & Connexion Internet
- Check disk - Guide
- Cacher son numéro - Guide
- Cacher conversation whatsapp - Guide
- Cacher ses amis sur facebook - Guide
1 réponse
Salut,
En fait, ton code est très bien agencé. Le message d'erreur que tu as est logique, je m'explique :
ta macro AddcheckBoxes ne peut être utilisée qu'UNE SEULE FOIS. A la rigueur, tu l'exécute 1 fois pour avoir tes checkbox dans ton classeur puis tu la supprime.
En effet, j'ai testé ton code et il fonctionne magnifiquement bien la première fois. Puis ensuite, j'ai le même message d'erreur que toi. Celà est du au fait qu'il m'a rajouté une couche de checkbox indésirables.
Salut
Seb
En fait, ton code est très bien agencé. Le message d'erreur que tu as est logique, je m'explique :
ta macro AddcheckBoxes ne peut être utilisée qu'UNE SEULE FOIS. A la rigueur, tu l'exécute 1 fois pour avoir tes checkbox dans ton classeur puis tu la supprime.
En effet, j'ai testé ton code et il fonctionne magnifiquement bien la première fois. Puis ensuite, j'ai le même message d'erreur que toi. Celà est du au fait qu'il m'a rajouté une couche de checkbox indésirables.
Salut
Seb