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

Signaler
Messages postés
182
Date d'inscription
lundi 15 octobre 2018
Statut
Membre
Dernière intervention
13 mars 2020
-
Messages postés
182
Date d'inscription
lundi 15 octobre 2018
Statut
Membre
Dernière intervention
13 mars 2020
-
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/

1 réponse

Messages postés
182
Date d'inscription
lundi 15 octobre 2018
Statut
Membre
Dernière intervention
13 mars 2020
1
Pour masquer les colonnes C à E, vous feriez comment?

Columns(3, 5).Hidden = True ne fonctionne pas...!
Messages postés
182
Date d'inscription
lundi 15 octobre 2018
Statut
Membre
Dernière intervention
13 mars 2020
1
Columns("C:E").Hidden = True marche mais j'aimerais avoir le numéro de colonne plutôt, pour intégrer une variable la dedans...
Messages postés
344
Date d'inscription
samedi 2 février 2019
Statut
Membre
Dernière intervention
29 mai 2020
26
Bonjour, pour masquer des colonnes :
les sélectionner, clic droit et faire "masquer".
Messages postés
182
Date d'inscription
lundi 15 octobre 2018
Statut
Membre
Dernière intervention
13 mars 2020
1
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
Messages postés
182
Date d'inscription
lundi 15 octobre 2018
Statut
Membre
Dernière intervention
13 mars 2020
1
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.