Garder la valeur d'une checkbox apres fermeture du fichier

man8

XLDnaute Nouveau
Bonjour à tous

Je me permet de solliciter votre aide car là je sèche sur un problème de checkbox. J'ai fait pas mal de recherches sur les forums mais je ne trouve pas la solution.

Voici mon problème:

J'ai une feuille excel dans laquelle 3 ligne sont remplies avec trois couleurs différentes (Rouge vert et bleu). J'ai créé un userform qui permet, grâce à trois checkbox (1 pour chaque couleur), de selectionner les lignes (donc les couleurs) visibles à l'écran. Si la checkbox "Bleu" est cochée, la ligne "Bleu" est affichée. A l'inverse si elle n'est pas cochée, la ligne "Bleu" est masquée... Idem pour les autres couleurs.

Jusqu'ici tout va bien. Le problème est que lorsque je ferme mon fichier (en enregistrant) et que je l'ouvre à nouveau, toutes mes checkbox reprennent leur valeur par défaut quelque soit les couleurs visibles à l'écran.

Par exemple, je souhaiterais que quand je ferme le fichier avec les ligne "bleu" et "rouge" visible et la ligne "vert" masquée; lorsque j'ouvre mon fichier à nouveau et que j'affiche le userform, les checkbox "bleu" et "rouge" soient cochée et la checkbox "vert" décochée. Ce n'est pas le cas!:mad:

La solution intuitive me venant à l'esprit consiste à stocker la valeur des checkbox dans des cellules une fois le bouton "Ok" activé, puis aller chercher ces valeurs lorsque la macro est à nouveau appelée puis les attribuer aux différentes checkbox. le pb, c'est que je n'arrive pas à attribuer une valeur à une checkbox. De plus, mon excel est en français ce qui fait qu'il y a des pb de traduction (true/vrai...).

Voilà!! le fichier en question est en pièce-jointe.

J'espère que qqun a une solution.

Je vous remercie d'avance pour vos contributions.

Man8
 

Pièces jointes

  • Checkbox.xls
    36.5 KB · Affichages: 106
  • Checkbox.xls
    36.5 KB · Affichages: 98
  • Checkbox.xls
    36.5 KB · Affichages: 105
G

Guest

Guest
Re : Garder la valeur d'une checkbox apres fermeture du fichier

Bonjour Man8,

Essaie ceci:

Code:
Private Sub CommandButton1_Click()
    Unload Me
End Sub
Private Sub CommandButton2_Click()
    With Sheets("Feuil1")
        .Range("7:7").EntireRow.Hidden = Not Rouge
        .Range("8:8").EntireRow.Hidden = Not Vert
        .Range("9:9").EntireRow.Hidden = Not Bleu
    End With
   Unload Me
End Sub
Private Sub UserForm_Initialize()
    With Sheets("Feuil1")
        Rouge = Not .Range("7:7").EntireRow.Hidden
        Vert = Not .Range("8:8").EntireRow.Hidden
        Bleu = Not .Range("9:9").EntireRow.Hidden
    End With
End Sub

J'ai remplacé Hide par unload car à un moment donné ou un autre il faut bien décharger la feuille.
A+
 

pierrejean

XLDnaute Barbatruc
Re : Garder la valeur d'une checkbox apres fermeture du fichier

bonjour man8

Vois si cela te convient

Nb : les cellules colonne A des lignes 7 a 9 ne doivent pas etre utilisées

Edit : Salut Hasco
 

Pièces jointes

  • Checkbox.zip
    11 KB · Affichages: 85
  • Checkbox.zip
    11 KB · Affichages: 92
  • Checkbox.zip
    11 KB · Affichages: 91

job75

XLDnaute Barbatruc
Re : Garder la valeur d'une checkbox apres fermeture du fichier

Bonjour man8,

Stocker l'état des Checkbox dans des cellules est une bonne solution (on peut aussi stocker dans des noms définis).

Pour stocker dans les cellules A1 A2 A3 par exemple, dans le code du bouton OK :

Code:
[A1] = rouge
[A2] = vert
[A3] = bleu

Pour que les TextBox soient au bon état à l'ouverture de l'USF, mettre cette macro dans le code de l'USF :

Code:
Private Sub UserForm_Initialize()
rouge = [A1]
vert = [A2]
bleu = [A3]
End Sub

Edit : bonjour Hasco, content de te revoir, bonjour pierrejean. Je suis en retard !

A+
 

man8

XLDnaute Nouveau
Re : Garder la valeur d'une checkbox apres fermeture du fichier

Merci à tous

En fait vos solutions se ressemblent. Il me manquait tout simplement la macro "initialize".

Du coup, juste une petite question additionnelle (tant qu'à comprendre...):

Est ce que la commande

Private Sub UserForm_Initialize()

agit sur tous les tous les userform ou juste sur celui dans lequel j'écris le code ?


merci beaucoup;)

Man8
 

job75

XLDnaute Barbatruc
Re : Garder la valeur d'une checkbox apres fermeture du fichier

Re,

Private Sub UserForm_Initialize()

agit sur tous les tous les userform ou juste sur celui dans lequel j'écris le code ?

Juste sur l'USF concerné.

Pour stocker dans des noms définis, écrire dans le code du bouton OK :

Code:
ActiveWorkbook.Names.Add Name:="Rouge", RefersTo:=Rouge
ActiveWorkbook.Names.Add Name:="Vert", RefersTo:=Vert
ActiveWorkbook.Names.Add Name:="Bleu", RefersTo:=Bleu

Ainsi que :

Code:
Private Sub UserForm_Initialize()
Rouge = [Rouge]
Vert = [Vert]
Bleu = [Bleu]
End Sub

A+
 

job75

XLDnaute Barbatruc
Re : Garder la valeur d'une checkbox apres fermeture du fichier

Re,

Voilà, j'ai trouvé :

Code:
Private Sub UserForm_Initialize()
On Error Resume Next
Rouge = ActiveWorkbook.Names("Rouge") = "=TRUE"
Vert = ActiveWorkbook.Names("Vert") = "=TRUE"
Bleu = ActiveWorkbook.Names("Bleu") = "=TRUE"
End Sub

A+
 

job75

XLDnaute Barbatruc
Re : Garder la valeur d'une checkbox apres fermeture du fichier

Re,

Il y a plus simple :

Code:
Private Sub UserForm_Initialize()
Rouge = Evaluate("Rouge")
Vert = Evaluate("Vert")
Bleu = Evaluate("Bleu")
End Sub

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 362
Messages
2 087 634
Membres
103 617
dernier inscrit
cisco1