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 :mad: .

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 :mad:

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
Il y a un soucis lorsque je copie ta macro dans le code de l'UserForm1 ,.

j'ai ce message d'erreur et l'userform ne s'affiche pas .

1029428

Cdlt Nicoalbert
 

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(
 

Discussions similaires

Statistiques des forums

Discussions
314 711
Messages
2 112 126
Membres
111 430
dernier inscrit
rebmania67