[VBA] Cacher les check box sous conditions
Merenptah44
Messages postés
625
Statut
Membre
-
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 ses amis sur facebook - Guide
- Cacher conversation whatsapp - 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