Masquer colonne via CheckBox (dans ruban) [Résolu]

cco86260 166 Messages postés dimanche 22 janvier 2012Date d'inscription 30 juillet 2015 Dernière intervention - 27 sept. 2014 à 10:01 - Dernière réponse : cco86260 166 Messages postés dimanche 22 janvier 2012Date d'inscription 30 juillet 2015 Dernière intervention
- 27 sept. 2014 à 11:16
Bonjour à tous,

J'avais bien dis que je reviendrais pour de nouvelles aventures ;-)

Donc, toujours dans mon fichier "Bilan", j'ai créer un ruban perso, il fonctionne, seulement, j'ai placé dans ce ruban 3 cases à cocher, ayant chacune pour fonction de masquer une colonne :

CheckBox1 = colonne E ; CheckBox2 = Colonne F; CheckBox3 = Colonne G

Voici le code de la CheckBox1 :

'Callback for CheckBox1 onAction
Sub hzonemasq(control As IRibbonControl, pressed As Boolean)

If (control.ID = "msqcol1") = True Then
Sheets("Bilan").Columns("E:E").EntireColumn.Hidden = True
Else

If (control.ID = "msqcol1") = False Then
Sheets("Bilan").Columns("E:E").EntireColumn.Hidden = False
End If
End If


'MsgBox control.ID & vbCrLf & pressed
End Sub

Lorsque je clique sur la CheckBox1, la colonne E se masque bien, mais lorsque je décoche, rien ne se passe, elle ne se ré-affiche pas, ou se trouve mon erreur ?

Merci à tous pour votre aide

Bonne journée et bon we,

Christian

--
Afficher la suite 

Votre réponse

12 réponses

Meilleure réponse
1
Merci
Salut,

Je n'ai pas les moyens de tester mais la logique voudrait qu'on écrive :

Sub hzonemasq(control As IRibbonControl, pressed As Boolean)
If control.ID = "msqcol1" Then
Sheets("Bilan").Columns("E:E").EntireColumn.Hidden = pressed
End If
End Sub

ou bien :

Sub hzonemasq(control As IRibbonControl, pressed As Boolean)
If control.ID = "msqcol1" Then
Sheets("Bilan").Columns("E:E").EntireColumn.Hidden = Not pressed
End If
End Sub

Merci banana32 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de banana32
Meilleure réponse
jordane45 22901 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 octobre 2018 Dernière intervention - 27 sept. 2014 à 10:47
1
Merci
Je viens de lire de la doc sur l'utilisation des checkbox dans le RUBAN.
Comme te l'a conseillé Banana (que je salue au passage).. il faut utiliser aussi le PRESSED pour connaitre la valeur du bouton.

http://silkyroad.developpez.com/excel/callbacks/

L'argument pressed.
Exemple : Sub ____OnAction(control As IRibbonControl, pressed As Boolean)
Cet argument renvoie la valeur Vrai si le contrôle est coché (pour les checkBox) ou si la touche est enfoncée (pour les toggleButton). La valeur Faux est renvoyée dans le cas contraire.

Donc en en mixant mon code et celui de Banana ça donnerait quelque chose du genre :


Sub hzonemasq(control As IRibbonControl, pressed As Boolean)

debug.print "Bouton : " & control.ID
debug.print "pressed = " & pressed 

'On regarde ce que vaut control.ID ....
SELECT CASE control.ID
 CASE "msqcol1"
     debug.print "bouton msqcol1"
      Sheets("Bilan").Columns("E:E").EntireColumn.Hidden = pressed

 CASE "msqcol2"
     debug.print "bouton msqcol2"
     Sheets("Bilan").Columns("F:F").EntireColumn.Hidden = pressed

 CASE else
    debug.print "Autre bouton"

END SELECT
     
  
End Sub

Merci jordane45 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

jordane45 22901 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 octobre 2018 Dernière intervention - 27 sept. 2014 à 10:50
Tu peux voir le résultat des " DEBUG.PRINT " dans la fenêtre d'execution.
http://boisgontierjacques.free.fr/pages_site/presentation_vba.htm#FenetreExecution
Commenter la réponse de jordane45
jordane45 22901 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 octobre 2018 Dernière intervention - Modifié par jordane45 le 27/09/2014 à 10:24
0
Merci
Bonjour,

Déjà.. je pense que tu as un souci dans tes Conditions ...
If qqchose = machin = truc ???


Ensuite... pour que tu essaies de comprendre ce qui pourrait bloquer dans ton code... n'hésites pas à y ajouter des DEBUG.PRINT pour savoir si tu rentres bien dans tes différents IF..

Et enfin... Je pense que pour savoir si ta checkbox est cochée...il faut regarder la VALUE de ton bouton...

Bref, le code devrait, je pense, ressembler plus à ça :

Sub hzonemasq(control As IRibbonControl, pressed As Boolean)

'On regarde ce que vaut control.ID ....
SELECT CASE control.ID
 CASE "msqcol1"
     debug.print "bouton msqcol1 => " & control.value 
     If control.value = True Then
        debug.print(" On Masque la colonne E")
       Sheets("Bilan").Columns("E:E").EntireColumn.Hidden = True
     Else
       debug.print(" On Affiche la colonne E")
       Sheets("Bilan").Columns("E:E").EntireColumn.Hidden = False
     End If

 CASE "msqcol2"
     debug.print "bouton msqcol1 => " & control.value 
     If control.value = True Then
        debug.print(" On Masque la colonne F")
       Sheets("Bilan").Columns("F:F").EntireColumn.Hidden = True
     Else
       debug.print(" On Affiche la colonne F")
       Sheets("Bilan").Columns("F:F").EntireColumn.Hidden = False
     End If

 CASE else
    debug.print "Autre bouton"

END SELECT
     
    'MsgBox control.ID & vbCrLf & pressed
End Sub


Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
Commenter la réponse de jordane45
cco86260 166 Messages postés dimanche 22 janvier 2012Date d'inscription 30 juillet 2015 Dernière intervention - Modifié par cco86260 le 27/09/2014 à 10:36
0
Merci
Salut Jordane45,

Merci pour ta réponse, je vais tester ça de suite, (j'ai supprimer une bêtise que j'ai écrit...rhooo)

En tous les cas je test et reviens pour te tenir au courant, merci pour l'astuce... je n'ai pas encore toutes les ficelles, mais j'y travail...lol


Merci et bon we

Christian

--
jordane45 22901 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 octobre 2018 Dernière intervention - 27 sept. 2014 à 10:36
cependant je crois comprendre qu'avec les cases à cocher il vaux mieux utiliser la fonction "SelectCase" que "If...Then" ?
Ah non aucun rapport.... c'est juste que lorsque tu veux tester UNE VARIABLE qui peut avoir plusieurs Valeurs... ( ici... control.ID peut correspondre à ton bouton 1 ou ton bouton 2 ou ....) il est plus simple d'utiliser le SELECT CASE.
Cela évite de faire des IF /ELSE en masse....

http://fr.openclassrooms.com/informatique/cours/analysez-des-donnees-avec-excel/les-conditions-18

http://msdn.microsoft.com/fr-fr/library/cy37t14y.aspx

.
Commenter la réponse de cco86260
cco86260 166 Messages postés dimanche 22 janvier 2012Date d'inscription 30 juillet 2015 Dernière intervention - 27 sept. 2014 à 10:40
0
Merci
Je viens de tester et il me dit méthode ou propriété non gerer par cet objet :

Voici la ligne pointée :
Debug.Print "bouton msqcol1 => " & control.Value



Donc je cherche...

Merci
--
jordane45 22901 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 octobre 2018 Dernière intervention - 27 sept. 2014 à 10:51
oui c'est control.value qu'il n'aime pas. regarde mes messages suivants.. j'ai modifié avec PRESSED.
Commenter la réponse de cco86260
cco86260 166 Messages postés dimanche 22 janvier 2012Date d'inscription 30 juillet 2015 Dernière intervention - Modifié par cco86260 le 27/09/2014 à 11:09
0
Merci
Extra ... tout fonctionne parfaitement, je prend note de cette nouvelle leçon :), un jour je serais bon et c'est moi qui aiderais les autres (soyez pas pressé quand même y a encore du travail), Je te remercie, je vais regarder le lien de banana, avec assistant ruban, d'ailleur, fonctionne aussi sous 2013 avec un petit bug... comment lui signaler ?

En tout cas merci et bon we, profites en bien...

Christian

--
jordane45 22901 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 octobre 2018 Dernière intervention - 27 sept. 2014 à 11:13
Le tuto dont je t'ai mis le lien n'est pas de Banana... c'est celui de SILKYROAD .. du site developpez.net (rien à voir avec nous...codes-sources )

Pour ma part.. c'est avec ses tutos que j'ai appris le VBA ....
Tu as tous ses tutos à cette adresse : http://silkyroad.developpez.com/
Tu y trouveras aussi un lien pour le contacter par mp. => http://www.developpez.net/forums/private.php?do=newpm&u=70508 ... mais il te faut d'abord te créer un compte sur leur site pour y accéder.


PS :
Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

Cordialement,
Jordane
cco86260 166 Messages postés dimanche 22 janvier 2012Date d'inscription 30 juillet 2015 Dernière intervention - 27 sept. 2014 à 11:16
c'était déjà fait pour le résolu...j'ai retenu la leçon... lol
Commenter la réponse de cco86260
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 27 sept. 2014 à 11:15
0
Merci
Bonjour,
essayer ceci :
Private Sub CheckBox1_Click()
toto CheckBox1
End Sub

Private Sub CheckBox2_Click()
toto CheckBox2
End Sub

Private Sub CheckBox3_Click()
toto CheckBox3
End Sub

Private Sub toto(c As Object)
Dim co As Range
Set co = Columns(Val(Right(c.Name, 1) + 4))
If c.Value Then
co.Hidden = True
Else
co.Hidden = False
End If
End Sub
Nota : on aurait pu créer un groupe de contrôles, mais pas vraiment utile pour seulement 3 checkboxes

Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.