VBA pour masquer/afficher des lignes

Résolu/Fermé
Anthelm Messages postés 198 Date d'inscription lundi 15 octobre 2018 Statut Membre Dernière intervention 2 mars 2024 - 4 févr. 2019 à 20:32
Anthelm Messages postés 198 Date d'inscription lundi 15 octobre 2018 Statut Membre Dernière intervention 2 mars 2024 - 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/

1 réponse

Anthelm Messages postés 198 Date d'inscription lundi 15 octobre 2018 Statut Membre Dernière intervention 2 mars 2024 1
4 févr. 2019 à 21:52
Pour masquer les colonnes C à E, vous feriez comment?

Columns(3, 5).Hidden = True ne fonctionne pas...!
0
Anthelm Messages postés 198 Date d'inscription lundi 15 octobre 2018 Statut Membre Dernière intervention 2 mars 2024 1
4 févr. 2019 à 21:54
Columns("C:E").Hidden = True marche mais j'aimerais avoir le numéro de colonne plutôt, pour intégrer une variable la dedans...
0
Yoyo01000 Messages postés 1639 Date d'inscription samedi 2 février 2019 Statut Membre Dernière intervention 7 mars 2022 165
5 févr. 2019 à 09:10
Bonjour, pour masquer des colonnes :
les sélectionner, clic droit et faire "masquer".
0
Anthelm Messages postés 198 Date d'inscription lundi 15 octobre 2018 Statut Membre Dernière intervention 2 mars 2024 1
5 févr. 2019 à 18:53
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
0
Anthelm Messages postés 198 Date d'inscription lundi 15 octobre 2018 Statut Membre Dernière intervention 2 mars 2024 1
Modifié le 5 févr. 2019 à 19:10
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.
0