Menu

VBA pour masquer/afficher des lignes [Résolu]

Messages postés
118
Date d'inscription
lundi 15 octobre 2018
Dernière intervention
11 février 2019
- - Dernière réponse : Anthelm
Messages postés
118
Date d'inscription
lundi 15 octobre 2018
Dernière intervention
11 février 2019
- 5 févr. 2019 à 19:07
Bonjour,

Je souhaiterais faire un bouton et/ou une macro pour afficher/masquer des lignes et des colonnes dans le tableau.

Mon tableau démarre ligne 3 à cause des entêtes mais admettons qu'il soit ligne 1 pour la description:

Si j'ai besoin de seulement 18 lignes, j'aimerais pouvoir saisir "18" dans une cellule ou dans une "messagebox", et qu'il ne laisse que les lignes 1 à 18.
Si j'ai besoin des 50 lignes du tableau, je saisis "50"...
Si vous pouvez m'aiguiller sur une piste svp, j'essaierais ensuite d'utiliser la même méthode pour les colonnes.

La il faut voir le fichier pour comprendre mais: il y a 5 bâtiments et 10 étages par bâtiments prévus dans le tableau. Il faudrait pouvoir afficher seulement le bon nombre (exemple: seulement 2 bâtiments de 3 étages)...

Le tableur va me servir à compter le nombre de chaque éléments par étage et leur nombre total, c'est très basique.

Si vous créez un bouton ou une cellule sur le fichier, vous pouvez le faire n'importe ou, je me débrouillerais...

Merci beaucoup!

https://mon-partage.fr/f/cG1uurLF/
Afficher la suite 

Votre réponse

1 réponse

Messages postés
118
Date d'inscription
lundi 15 octobre 2018
Dernière intervention
11 février 2019
0
Merci
Pour masquer les colonnes C à E, vous feriez comment?

Columns(3, 5).Hidden = True ne fonctionne pas...!
Anthelm
Messages postés
118
Date d'inscription
lundi 15 octobre 2018
Dernière intervention
11 février 2019
-
Columns("C:E").Hidden = True marche mais j'aimerais avoir le numéro de colonne plutôt, pour intégrer une variable la dedans...
Yoyo01000
Messages postés
106
Date d'inscription
samedi 2 février 2019
Dernière intervention
17 février 2019
12 -
Bonjour, pour masquer des colonnes :
les sélectionner, clic droit et faire "masquer".
Anthelm
Messages postés
118
Date d'inscription
lundi 15 octobre 2018
Dernière intervention
11 février 2019
-
Merci infiniment Yoyo.

Bon j'ai bricoler quelque chose, si ça intéresse quelqu'un...

'Macro de masquage
Sub BOX()

'Désignation des variables
Dim Batiments As Integer
Dim Etages As Integer
Dim Types As Integer

Batiments = (Range("BI3") * 11 + 3)
Etages = Range("BI4")
Types = Range("BI5")

'Afficher tout (réinitialiser)
Columns("A:BJ").Hidden = False
Rows("1:150").Hidden = False

'Puis, masquer les colonnes inutiles

'Masquer colonnes selon variable Batiments
If Batiments > 58 Then MsgBox "5 bâtiments MAX !"
If Batiments > 58 Then Batiments = 58
If Batiments < 58 Then Range(Columns(Batiments), Columns(57)).Hidden = True

'Masquer colonnes selon variable Etages
If Etages > 11 Then MsgBox "11 étages MAX !"
If Etages > 11 Then Etages = 11
If Etages < 11 Then Range(Columns(13), Columns(13 - 10 + Etages)).Hidden = True
If Etages < 11 Then Range(Columns(24), Columns(24 - 10 + Etages)).Hidden = True
If Etages < 11 Then Range(Columns(35), Columns(35 - 10 + Etages)).Hidden = True
If Etages < 11 Then Range(Columns(46), Columns(46 - 10 + Etages)).Hidden = True
If Etages < 11 Then Range(Columns(57), Columns(57 - 10 + Etages)).Hidden = True

'Masquer lignes selon variable Types
If Types < 100 Then Range(Rows(102), Rows(3 + Types)).Hidden = True

End Sub
Anthelm
Messages postés
118
Date d'inscription
lundi 15 octobre 2018
Dernière intervention
11 février 2019
-
J'ai 11 colonnes par bâtiment et le tableau démarre en 3eme colonne
Batiments = (Range("BI3") * 11 + 3)
5 batiments max donc 5x11+3 = 58 au max.

If Batiments < 58 Then Range(Columns(Batiments), Columns(57)).Hidden = True
Si BI3=ou>à 5, ça donne 58 ou plus, la macro ne fait rien.

Si c'est en dessous (4x11+3=47 si j'active 4 bâtiments), masquer de la colonne 47 à 57, j'ai donc bien 11 colonnes de moins sur mon tableau et il me reste les 4x11 colonnes de mes autres bâtiments. + les entêtes.
Commenter la réponse de Anthelm