VBA pour masquer/afficher des lignes

Résolu
Anthelm Messages postés 202 Statut Membre -  
Anthelm Messages postés 202 Statut Membre -
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

  1. Anthelm Messages postés 202 Statut Membre 1
     
    Pour masquer les colonnes C à E, vous feriez comment?

    Columns(3, 5).Hidden = True ne fonctionne pas...!
    0
    1. Anthelm Messages postés 202 Statut Membre 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...
      0
    2. Yoyo01000 Messages postés 1720 Date d'inscription   Statut Membre Dernière intervention   168
       
      Bonjour, pour masquer des colonnes :
      les sélectionner, clic droit et faire "masquer".
      0
    3. Anthelm Messages postés 202 Statut Membre 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
      0
    4. Anthelm Messages postés 202 Statut Membre 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.
      0