problème d'affichage / masquage de colonne

daemonofcf

XLDnaute Nouveau
Bonjour,

j'ai un souci sur un tableau que je viens de faire. C'est un tableau récupéré en grande partie et que j'ai adapté à mes besoins.

En pièce jointe, je ne vous ai mis que la feuille qui pose problème.

J'ai inséré 2 boutons pour masquer chacun une partie de colonnes.
Quand je clique sur l'un ou sur l'autre des boutons ça fonctionne.
Mais quand je clique sur les 2 en même temps, ça m'indique "erreur d'exécution 1004" "impossible de définir la propriété hidden de la classe range"

Et du coup après débogage ou avoir cliquer sur fin, si je déselectionne les boutons, j'ai des colonnes qui ont disparu et que je dois réafficher.

Pour les boutons et les lignes de code, j'ai essayé avec tous les codes possibles et imaginables trouvés sur internet. c'est toujours pareil.

En désespoir de cause, je me tourne vers vous.

Merci
 

Pièces jointes

  • pour excel download.zip
    39.9 KB · Affichages: 40

Softmama

XLDnaute Accro
Re : problème d'affichage / masquage de colonne

Bonjour,

J'ai une solution, c'est pas super mais au moins ça fonctionne :

VB:
Private Sub ToggleButton1_Click()
 On Error Resume Next
  For p = 10 To 13
     Columns(p).Hidden = Not Columns(p).Hidden
  Next p
 End Sub

Private Sub ToggleButton2_Click()
 On Error Resume Next
 For p = 14 To 19
     Columns(p).Hidden = Not Columns(p).Hidden
  Next p
End Sub

Private Sub ToggleButton3_Click()
 On Error Resume Next
  For p = 20 To 23
     Columns(p).Hidden = Not Columns(p).Hidden
  Next p
End Sub
 

daemonofcf

XLDnaute Nouveau
Re : problème d'affichage / masquage de colonne

Bonjour et merci,

Déjà un bon point c'est que je n'ai plus de message d'erreur.

Mais ça ne fonctionne que lorsqu'on actionne un seul bouton à la fois. Si un lot de colonne reste masqué et que je clique à répétition sur le deuxième bouton, un décalage se forme et certaines colonnes ne se cachent pas en même temps que les autres.

merci quand même en tout cas.

Quelqu'un a une autre idée ?
 

Si...

XLDnaute Barbatruc
Re : problème d'affichage / masquage de colonne

Bonjour

Toutes les colonnes étant affichées, les 3 boutons étant à False,
pour 3 actions indépendantes , tester :
Code:
Private Sub ToggleButton1_Click()
  For p = 10 To 23
   Columns(p).Hidden = IIf(p < 14, Not Columns(p).Hidden, False)
  Next
 End Sub

Private Sub ToggleButton2_Click()
  For p = 10 To 23
   Columns(p).Hidden = IIf(p > 13 And p < 20, Not Columns(p).Hidden, False)
  Next
End Sub
Private Sub ToggleButton3_Click()
  For p = 10 To 23
    Columns(p).Hidden = IIf(p > 19, Not Columns(p).Hidden, False)
  Next
End Sub
 

daemonofcf

XLDnaute Nouveau
Re : problème d'affichage / masquage de colonne

Merci

Pour 3 actions indépendantes ça fonctionne effectivement. Mais je souhaiterai pouvoir actionner les 3 boutons en même temps.

Sur le 1ier fichier que j'ai joint, pour 3 actions indépendantes, ça fonctionnent aussi.
C'est quand je sélectionne 2 ou 3 boutons en même temps que ça coince.
 

Softmama

XLDnaute Accro
Re : problème d'affichage / masquage de colonne

Re,

En changeant un chouille la façon d'aborder le problème, je te propose comme ceci : (à tester, l'ai pas fait)

VB:
Private Sub ToggleButton1_Click()
 If ToggleButton1 Then
    Cells.Columns.Hidden = False
    n = 3
    If ToggleButton2 Then
        n = 9
        If ToggleButton3 Then n = 13
    Else
        If ToggleButton3 Then Columns(Chr(64 + 20) & ":" & Chr(64 + 23)).Hidden = True
    End If
    Columns(Chr(64 + 10) & ":" & Chr(64 + 10 + n)).Hidden = True
 Else
    Columns(Chr(64 + 10) & ":" & Chr(64 + 13)).Hidden = False
 End IF
 End Sub

Private Sub ToggleButton2_Click()
 If ToggleButton2 Then
    Cells.Columns.Hidden = False
    d = 4: n = 5
    If ToggleButton1 Then
        d = 0: n = 9
        If ToggleButton3 Then n = 13
    Else
        If ToggleButton3 Then n = 9
    End If
    Columns(Chr(64 + 10 + d) & ":" & Chr(64 + 10 + d + n)).Hidden = True
 Else
    Columns(Chr(64 + 14) & ":" & Chr(64 + 19)).Hidden = False
 End If
End Sub

Private Sub ToggleButton3_Click()
 If ToggleButton3 Then
    Cells.Columns.Hidden = False
    d = 10: n = 3
    If ToggleButton2 Then
        n = 9: d = 4
        If ToggleButton1 Then
            n = 13: d = 0
        End If
    Else
        If ToggleButton1 Then Columns(Chr(64 + 10) & ":" & Chr(64 + 13)).Hidden = True
    End If
    Columns(Chr(64 + 10 + d) & ":" & Chr(64 + 10 + d + n)).Hidden = True
 Else
    Columns(Chr(64 + 20) & ":" & Chr(64 + 23)).Hidden = False
 End If
End Sub
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : problème d'affichage / masquage de colonne

Bonjour daemonofcf, le fil, le forum,

Le problème venait du fait que les colonnes après AZ étaient masquées : on ne pouvait pas masquer toutes les colonnes de N à W.

Si on affiche les colonnes BA:IV, plus de problème.

Pour les macros, il est vraiment plus simple d'écrire :

Code:
Private Sub ToggleButton2_Click()
Dim liste, n As Byte
liste = Array("N", "O", "P", "Q", "R", "S")
  For n = 0 To UBound(liste)
    Columns(liste(n)).Hidden = Not Columns(liste(n)).Hidden
  Next n
End Sub

Private Sub ToggleButton3_Click()
Dim liste, q As Byte
liste = Array("T", "U", "V", "W")
  For q = 0 To UBound(liste)
    Columns(liste(q)).Hidden = Not Columns(liste(q)).Hidden
  Next q
End Sub

Et pourquoi faire des boucles pour des colonnes contigües ?

Code:
Private Sub ToggleButton2_Click()
Columns("N:S").Hidden = Not Columns("N").Hidden 'plus simple non ???
End Sub

Private Sub ToggleButton3_Click()
Columns("T:W").Hidden = Not Columns("T").Hidden 'plus simple non ???
End Sub

Voir fichier joint.

A+
 

Pièces jointes

  • pour excel download(1).zip
    40.3 KB · Affichages: 41

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 149
Membres
103 133
dernier inscrit
mtq