[VBA] Cacher les check box sous conditions

Fermé
Merenptah44 Messages postés 623 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 2 mai 2007 - 2 mai 2007 à 10:32
 masterseb - 4 mai 2007 à 01:32
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)
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

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
0