Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ToggleButton

67 views
Skip to first unread message

Match

unread,
Apr 8, 2001, 1:03:28 PM4/8/01
to
Bonjour à tou(te)s,

J'aimerais avoir un exemple de l'utilisation d'un bouton
"ToggleButton".

J'ai besoin d'un bouton qui, lorsqu'on clique dessus masque disons les
colonnes AI à CD (incl)
et que lorsque je clique à nouveau dessus ces mêmes colonnes réapparaissent.

Je ne sais pas comment faire pour que le deuxième click déclenche la macro :
Cells.Select
Cells.Select
Selection.EntireColumn.Hidden = False
Selection.EntireRow.Hidden = False
Range("A1").Select
Application.ScreenUpdating = True

Merci de m'aider et au plaisir

Charles


Daures L

unread,
Apr 8, 2001, 2:26:12 PM4/8/01
to
Salut match,
essaye ça

Private Sub ToggleButton1_Click()
If Columns("a:cd").Hidden = True Then
Columns("a:cd").Hidden = False
ToggleButton1.Caption = "Masquer colonnes"
Exit Sub
End If
Columns("a:cd").Hidden = True
ToggleButton1.Caption = "Afficher colonnes"
End Sub

Cette macro peut aussi être affecté à un bouton ordinaire
Amicalement
Laurent(de Marseille)
"Match" <ma...@videotron.ca> a écrit dans le message news:
OBnL23EwAHA.1924@tkmsftngp05...

Match

unread,
Apr 8, 2001, 2:59:44 PM4/8/01
to
Bonjour,
merci beaucoup pour la rapidité et l'exactitude de la réponse.

Merci aussi à ceux qui avaient commencé à chercher une piste.

c'est vraiment un plaisir de vous connaître tous et toutes.

Charles (qui a une petite pensés pour tous ceux qui ont les pieds dans
l'eau ; pas à la plage... :-( )


"Daures L" <LAURENt...@wanadoo.fr> a écrit dans le message news:
Oknf0dFwAHA.1396@tkmsftngp05...

Frédéric Sigonneau

unread,
Apr 8, 2001, 3:27:28 PM4/8/01
to
Bonsoir,

Je te propose une petite barre d'outils avec 1 bouton qui simule assez bien le
comportement d'un "ToggleButton" (j'avais galéré un moment avec cette question, il y
a quelques mois, avant de trouver cette solution). Vu l'éloignement des colonnes que
tu as besoin de masquer ou d'afficher, il n'est pas mal en effet que le bouton
rappelle visuellement ce qu'il en est.

Le code est à copier dans un module standard. Exécute la procédure CreateToggleBtn
pour créer la barre d'outils.

FS

'=========================
Sub CreateToggleBtn()
With Application.CommandBars.Add("Colonnes")
.Controls.Add (msoControlButton)
With .Controls(1)
.TooltipText = "Cacher colonnes"
.FaceId = 294
.State = msoButtonUp
.OnAction = "CacheEtMontre"
.Visible = True
End With
.Visible = True
End With
End Sub

Sub CacheEtMontre()
Dim btn As CommandBarControl, bar As CommandBar, i%

Set bar = Application.CommandBars("Colonnes")
Set btn = bar.Controls(1)

Select Case btn.State
Case msoButtonUp
btn.TooltipText = "Montrer colonnes"
btn.State = msoButtonDown
btn.FaceId = 297
ActiveSheet.Range("AI:CD").EntireColumn.Hidden = True
Case msoButtonDown
btn.TooltipText = "Cacher colonnes"
btn.State = msoButtonUp
btn.FaceId = 294
ActiveSheet.Range("AI:CD").EntireColumn.Hidden = False
End Select
End Sub
'=========================

--
Frédéric Sigonneau [né un Sans-culottide !]
Gestions de temps : http://perso.wanadoo.fr/frederic.sigonneau

sabatier

unread,
Apr 8, 2001, 4:34:37 PM4/8/01
to
je sais pas toi, match alias charles, mais moi je n'ai pas réussi à
faire marcher la proc de laurent D ; ce dernier peut-il être plus disert
quant à sa TogglePonte?
merci pour eux
jps

Daures L

unread,
Apr 8, 2001, 4:56:24 PM4/8/01
to
Dans la feuille de calcul,
insère un togglebutton (que tu obtiens avec la boite à outils contrôles)
et tu colle la macro dans le module obtenu en cliquant 2 fois sur le
togglebutton.
Dans la feuille de calcul, appuie sur le bouton mode création afin d'annuler
le mode création (bouton avec une équerre bleue)
ensuite, clique sur le togglebutton (qui doit se nommer togglebutton1) et tu
observes.
C'est tout!
Amicalement
Laurent (de Marseille)

"sabatier" <jps...@club-internet.fr> a écrit dans le message news:
3AD0CB5D...@club-internet.fr...

sabatier

unread,
Apr 8, 2001, 5:17:07 PM4/8/01
to
veni, vidi, observavi...un boguage dès que je clique sur le ToggleButton
et pourtant, je te jure, laurent, que j'ai fait comme tu as dit
je bogue sur la ligne :

Columns("a:cd").Hidden = True
avec "impossible de définir la propriété Hidden de la classe Range"
quid arrivavit?
jps

Daures L

unread,
Apr 8, 2001, 5:37:35 PM4/8/01
to
Je suis circonspect,
Je viens à mon tour de refaire l'opération sur un
nouveau classeur, et cela marche très bien.
Essaye sur un nouveau classeur pour voir.

Private Sub ToggleButton1_Click()
If Columns("a:cd").Hidden = True Then
Columns("a:cd").Hidden = False
ToggleButton1.Caption = "Masquer colonnes"
Exit Sub
End If
Columns("a:cd").Hidden = True
ToggleButton1.Caption = "Afficher colonnes"
End Sub

Amicalement


Laurent (de Marseille)
"sabatier" <jps...@club-internet.fr> a écrit dans le message news:

3AD0D553...@club-internet.fr...

Match

unread,
Apr 8, 2001, 6:31:29 PM4/8/01
to
Bonsoir à tous,

La solution de Laurent D ( pas Laurent Jade)
fonctionne comme vous dites :
Nickel-Chrome
Pile-poil
Super
Extra
Full Cool

et merci à Frédéric S.
...
Charles


"Daures L" <LAURENt...@wanadoo.fr> a écrit dans le message news:
Oyj$GKHwAHA.2292@tkmsftngp02...

sabatier

unread,
Apr 8, 2001, 6:59:54 PM4/8/01
to
bon, moi je renonce
encore une histoire de XL 2000 et XL 97, je pense
jps

Monique Brunel

unread,
Apr 9, 2001, 4:42:21 AM4/9/01
to
Bonjour Laurent,
Je ne connaissais même pas l'existence du ToggleButton. Il faut dire qu'il
est bien caché dans la longue liste des contrôles supplémentaires. J'ai
fait un petit tour dans l'aide
Je n'ai pas eu le temps d'essayer ta macro hier, c'est chose faite
aujourd'hui et je me retrouve dans la même situation que Jean-Paul. La
macro s'arrête sur la ligne

Columns("a:cd").Hidden = True
J'ai demandé la liste des propriétés et méthodes de Columns, Hidden n'y
figure pas.
Je le précise, j'ai aussi Excel 97.

--
Amicalement,
Monique
http://www.respublica.fr/osga , pour les amateurs d'athlétisme


"Daures L" <LAURENt...@wanadoo.fr> a écrit dans le message news:
Oyj$GKHwAHA.2292@tkmsftngp02...

Daures L

unread,
Apr 9, 2001, 6:21:29 AM4/9/01
to
C'est vrai qu'on ne l'utilise pas beaucoup ce bouton, le pauvre.
Essayez cette macro qui devrait convenir.

Private Sub ToggleButton1_Click()
Application.ScreenUpdating = False


If Columns("a:cd").Hidden = True Then

Columns("a:cd").Select
Selection.EntireColumn.Hidden = False
ToggleButton1.Caption = "Masquer colonnes"
ActiveCell.Select
Exit Sub
End If
Columns("a:cd").Select
Selection.EntireColumn.Hidden = True
ActiveCell.Select


ToggleButton1.Caption = "Afficher colonnes"
End Sub


Je me suis contenté de sélectionner les colonnes au lieu de
simplement leur donner la propriété hidden.
C'est un peu comme [A1].select
Range ("A1").select marche mieux sur excel 95.

On en bave avec ces versions d'excel.
Amicalement
Laurent (de Marseille)

"Monique Brunel" <bs98...@skynet.be> a écrit dans le message news:
uekF2oNwAHA.1940@tkmsftngp05...

Monique Brunel

unread,
Apr 9, 2001, 8:29:06 AM4/9/01
to
Génial, Laurent, merci :-)))
C'est super et en plus très pratique (Flo... il y du boulot)
Je suppose qu'on peut l'adapter pour masquer des lignes aussi.
Dans les propriétés de ToggleButton1, j'ai modifié Placement (choisir 3
pour que le contrôle ne puisse être ni déplacé ni dimensionné avec les
cellules, sinon le contrôle se retrouve au-dessus de la 1ère colonne et
pour le déplacer on est obligé de passer en mode création) et j'ai donné la
valeur qui me convient à Left.

Pour Jean-Paul :
Puisque la macro semblait t'intéresser, elle est opérationnelle avec Excel
97.
C'est parfois utile d'être une testa di mula ;-)))

--
Amicalement,
Monique
http://www.respublica.fr/osga , pour les amateurs d'athlétisme


"Daures L" <LAURENt...@wanadoo.fr> a écrit dans le message news:

ebSqmzNwAHA.1940@tkmsftngp05...

sabatier

unread,
Apr 9, 2001, 8:39:48 AM4/9/01
to
eh bien, tu vois bien, laurent, que quand tu veux, tu peux ;
tout marche à merveille maintenant et monique devrait nous le confirmer
de côté sous peu ; comme il fait bon s'asseoir à tes côtés pour
approfondir les mystères d'excel ; au fait, as-tu déjà essayé de
t'asseoir des deux côtés d'un gars à la fois? pas facile, hein, même
avec de belles performances en athlétisme
jps

Daures L

unread,
Apr 9, 2001, 10:10:23 AM4/9/01
to
Il faut dire que je suis surpris parfois des solutions hyper courtes que
certains offrent.
En fait, à cause des versions bâtardes, on est obligé de faire plus long.
C'est le cas sur la plupart des ordis sur lesquels je travaille (après ma
tournée), et lorsque
j'ai le malheur de simplifier, tout plante, et le téléphone ne tarde pas à
sonner.
Laurent, ça beuuugue est le mot le plus couramment utilisé.
Je vais m'appeler bugman si ça continue.
Amicalement
Laurent (de Marseille)

"Monique Brunel" <bs98...@skynet.be> a écrit dans le message news:

u076zMPwAHA.1804@tkmsftngp02...

Daures L

unread,
Apr 9, 2001, 10:10:29 AM4/9/01
to
J'arrive assez facilement à m'asseoir entre deux chaises,
mais des deux côtés d'un gars, j'avoue que non.

Amicalement
Laurent (de Marseille)
"sabatier" <jps...@club-internet.fr> a écrit dans le message news:
3AD1AD94...@club-internet.fr...

Misange

unread,
Apr 9, 2001, 11:02:53 AM4/9/01
to
Et bien si t'as tout fait tu me le bal !
et si t'es mimi, tu me rajoutes le titre de la question, et comme ça j'ai
quasi plus rien à faire ;-))) (air ingénu, je sais pas faire en souriettes)

Misange
http://disciplus.simplex.free.fr

"Monique Brunel" <bs98...@skynet.be> a écrit dans le message news:

u076zMPwAHA.1804@tkmsftngp02...

sabatier

unread,
Apr 9, 2001, 11:43:02 AM4/9/01
to
merci monique ; j'ai aussi répondu à laurent D que tout marchait bien
maintenant
je pense que pour que sa macro figure sur la FAQ, il faut l'améliorer en
lui ajoutant un Inputbox qui permet de choisir les colonnes à masquer et
à afficher plutôt qu'à avoir à remplacer dans la proc les références
desdites colonnes ; j'y suis plus ou moins parvenu sauf que j'aurais
souhaité qu'on puisse sélectionner les colonnes à la souris plutôt que
de devoir en écrire les lettres dans l'Inputbox mais là, je n'ai pas su
faire
allez laurent, encore un p'tit effort maintenant qu'à marseille tu ATAPI
jps

Daures L

unread,
Apr 9, 2001, 1:02:48 PM4/9/01
to
Ce que tu demandes est facile à mettre en oeuvre, seulement, le problème
sera de désigner exactement les colonnes masquées à afficher.
Essaye de sélectionner des solonnes masquées, bon courage.
Il faut les prendre plus large, donc la macro les masquera aussi.
Private Sub ToggleButton1_Click()
Dim mess As Range, mess2 As String
Selection.Columns.Select
Set mess = Application.InputBox(prompt:="Désignez les colonnes à masquer ou
à afficher ou bien inscrivez leur nréférence", Title:="DESIGNEZ LES
COLONNES", Type:=8)
mess2 = mess.Address
If Columns(mess2).Hidden = True Then
Columns(mess2).Hidden = False

ToggleButton1.Caption = "Masquer colonnes"
Exit Sub
End If
Columns(mess2).Hidden = True

ToggleButton1.Caption = "Afficher colonnes"
End Sub
C'est assez pénible.

Par contre, celle ci est intéressante pour masquer les colonnes de la
sélection ou bien les afficher.
sans avoir à sélectionner la colonne entière.

Private Sub ToggleButton1_Click()
Dim cell As Range
For Each cell In Selection
If cell.Columns.Hidden = True Then
Selection.Columns.Select
ToggleButton1.Caption = "colonnes des cellules " & Selection.Address & "
Affichées"
Selection.EntireColumn.Hidden = False
Exit Sub
End If
Next cell
Selection.Columns.Select
ToggleButton1.Caption = "colonnes des cellules " & Selection.Address & "
Masquées"
Selection.EntireColumn.Hidden = True
End Sub

Même chose pour les lignes en créant un togglebutton2

Private Sub ToggleButton2_Click()
Dim cell As Range
For Each cell In Selection
If cell.Rows.Hidden = True Then
Selection.Rows.Select
ToggleButton2.Caption = "Lignes des cellules " & Selection.Address & "
Affichées"
Selection.EntireRow.Hidden = False
Exit Sub
End If
Next cell
Selection.Rows.Select
ToggleButton2.Caption = "Lignes des cellules " & Selection.Address & "
Masquées"
Selection.EntireRow.Hidden = True
End Sub

Amicalement
Laurent (de Marseille)


"sabatier" <jps...@club-internet.fr> a écrit dans le message news:

3AD1D886...@club-internet.fr...

0 new messages