Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

problème avec Checkbox

NICOALBERT

XLDnaute Occasionnel
Bonsoir le forum ,

Je vient vers vous car j'ai un soucis avec mes checkBox.

Dans mon fichier j'ai 3 userform qui me permettent de créer un graphique , chacun est constitué de 5 checkbox qui sélectionnent les colonnes à prendre en compte .

Chaque checkbox coché est enregistrer dans la feuille "Programme".

Pour que lorsque j'ouvre de nouveau l'userform ma sélection soit conservée .

Mais la ou est mon soucis c'est lorsque j'ouvre l'userform les checkbox sont bien coché mais si je clique sur graphique la sélection ne prend pas .

Je vous joint mon fichier pour l'exemple .

Cdlt Nicoalbert.
 

Pièces jointes

  • Masque colonne avec Userform.xlsm
    46.1 KB · Affichages: 17
C

Compte Supprimé 979

Guest
Bonjour Nicoalbert,

Normal oserais-je dire
Comme le code est fait, la sélection se fait au moment du clique sur la checkbox

Il faut donc ajouter une petit bout de code au moment de l'ouverture de ton USF
C'est ce que j'ai fait pour le UserForm1, à toi de jouer pour les autres

A+
 

Pièces jointes

  • Nicoalbert_Masque colonne avec Userform.xlsm
    43.6 KB · Affichages: 12

NICOALBERT

XLDnaute Occasionnel
Bonjour le forum , BrunoM45 ,

Je revient vers vous car en faite mon code initiale est le suivant :

VB:
Private Sub CheckBox1_Click()
If CheckBox1 = False Then
Worksheets("Données").Columns("C").Hidden = True
Worksheets("Colonnes").Rows("1").Hidden = True
Else
Worksheets("Données").Columns("C").Hidden = False
Worksheets("Colonnes").Rows("1").Hidden = False
End If
    
    CommandButton2000.Visible = CheckBox1

End Sub

Avec l'initialisation de la feuille UserForm qu'a fait BrunoM45 ça fonctionne niquel (et je le remercie encore) sauf pour le masquage des lignes de l'onglet Colonnes ou je n'arrive pas à le modifier

Faut il que je fasse la même chose avec TabRow ?

Cdlt Nicoalbert .
 
C

Compte Supprimé 979

Guest
Bonjour Nicoalbert

Petite (grande) modification du code en plus de ce que tu souhaites (pour l'UserForm1)
VB:
Option Explicit

Dim Ind As Integer, Flg As Boolean

Private Sub CheckBox1_Click()
  Worksheets("Données").Columns("C").Hidden = Not Me.CheckBox1.Value
  Worksheets("Colonnes").Rows("1").Hidden = Not Me.CheckBox1.Value
  '
  Call AfficherBouton
End Sub

Private Sub CheckBox2_Click()
  Worksheets("Données").Columns("D").Hidden = Not Me.CheckBox2.Value
  Worksheets("Données").Rows("2").Hidden = Not Me.CheckBox2.Value
  '
  Call AfficherBouton
End Sub

Private Sub CheckBox3_Click()
  Worksheets("Données").Columns("E").Hidden = Not Me.CheckBox3.Value
  Worksheets("Données").Rows("3").Hidden = Not Me.CheckBox3.Value
  '
  Call AfficherBouton
End Sub

Private Sub CheckBox4_Click()
  Worksheets("Données").Columns("F").Hidden = Not Me.CheckBox4.Value
  Worksheets("Données").Rows("4").Hidden = Not Me.CheckBox4.Value
  '
  Call AfficherBouton
End Sub

Private Sub CheckBox5_Click()
  Worksheets("Données").Columns("G").Hidden = Not Me.CheckBox5.Value
  Worksheets("Données").Rows("5").Hidden = Not Me.CheckBox5.Value
  '
  Call AfficherBouton
End Sub

Private Sub CommandButton1_Click()
  Call SupGraph
  Call Graphiques
  Call Macrotaille
  'Graphique.Show
End Sub

' A l'ouverture de l'USF, appliquer les choix des Checkbox
Private Sub UserForm_Initialize()
  Dim TabCol() As String
  ' Définir le tableau des colonnes
  TabCol = Split("C,D,E,F,G", ",")
  ' Pour les CheckBox de 1 à 5
  For Ind = 1 To 5
    Worksheets("Données").Columns(TabCol(Ind - 1)).Hidden = Not Me("Checkbox" & Ind).Value
    Worksheets("Colonnes").Rows(Ind).Hidden = Not Me("Checkbox" & Ind).Value
    ' Si au moins 1 CheckBox est à VRAI, le FLAG est à VRAI
    If Me("Checkbox" & Ind).Value = True Then Flg = True
  Next Ind
  ' Afficher ou masquer le bouton
  Me.CommandButton1.Visible = Flg
End Sub

Sub AfficherBouton()
  ' Mettre le FLAG à FAUX avant tout
  Flg = False
  ' Boucle sur les Checkbox
  For Ind = 1 To 5
    ' Si une est à vrai
    If Me("Checkbox" & Ind).Value = True Then
      Flg = True: Exit For
    End If
  Next Ind
  ' Selon FLAG
  Me.CommandButton1.Visible = Flg
  If Flg = False Then Call SupGraph
End Sub

A+
 

NICOALBERT

XLDnaute Occasionnel
Je vient de faire le test avec ton fichiers . Pour la feuille "Données" tout fonctionne très bien .
Par contre pour la feuille "Colonnes" les colonnes sélectionnées dans l'userform ne s'affiche bien que dans la première utilisation .

Exemple : à la 1er utilisation je coche Col1 et Col3 , pas de soucis , les informations s'affichent bien dans les 2 onglets.
si je ferme et que j'ouvre à nouveau l'USF et coche col2 en plus , dans l'onglet " données" pas de soucis par contre dans "colonnes" ligne 2 n'apparait pas.

Et si je ferme une nouvelle fois l'USF et coche col4 à la nouvelle ouverture dans "colonnes" apparait Col2 mais pas Col4 . comme si il y avait un temps de décalage .

Cdlt Nicoalbert.
 
C

Compte Supprimé 979

Guest
Re,

Je pense que tu pourrais essayer à minima d'analyser et comprendre le code

L'erreur vient du nom de la feuille utilisée "Données" au lieu de "Colonnes"
VB:
Worksheets("Données").Rows(
A remplacer par
Code:
Worksheets("Colonnes").Rows(
 

NICOALBERT

XLDnaute Occasionnel
Toute mes excuses , j'ai bien regardé le code et dans le checkBox1 j'ai bien vu les deux feuilles , mais il est vrai que je n'ai pas fait attention au nom des feuilles dans les autres checkbox .

Encore toute mes excuses .

Effectivement en modifiant ça fonctionne très bien. Un grand merci
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…