Masquer les colonnes vide en VBA

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

debord23

XLDnaute Nouveau
Bonjour tout le monde je suis un petit nouveau dans la programmation en VBA.
Je voudrais savoir si quelqu'un peut me faire et m'expliquer comment faire une macro.

Je m'explique:
J'ai un tableau avec 12 colonnes et 6 lignes.

1-5 2-5 3-5 4-5 5-5 6-5 7-5 8-5 9-5 10-5 11-5
Tête n°1 2 6 2
Tête n°2
Tête n°3 2 3
Tête n°4
Tête n°5 1 4

Comme celui-ci, la première ligne et la première colonne soient des titres.
Le but de ce tableau, est de faire remplir les cellules par une personne, et de le faire lire part une autre.
Et pour que la lecture soit plus rapide, il fauderait que je masque les lignes et colonnes non utilisées.
Ici les lignes "Tête n°2" et "Tête n°4" a l'aide d'un bouton.
Et les colonnes "3-5", "4-5","5-5","7-5","9-5" et "10-5" avec un autre bouton.

Merci
 
Re : Masquer les colonnes vide en VBA

Bonjour Debord23 et bienvenue sur ce forum

Un petit fichier serait mieux qu'un long discours 😉

Pour faire une macro, il faut :
- commencer par personnaliser le ruban pour afficher l'onglet développeur
- ensuite dans l'onglet tu cliques sur : enregistrer une macro

A+
 
Re : Masquer les colonnes vide en VBA

Merci BrunoM45,
Je sais enregistrer une macro, mais mon problème c'est que les cellules repli ne sont pas les mêmes a chaque fois. A moins que je ne fais pas la bonne manip pour enregistrer la macro. Et comment je peut mettre mon fichier?
 
Re : Masquer les colonnes vide en VBA

Bonjour à tous,

En effet, pas simple de visualiser sans fichier joint.
En considérant que la ligne 1 et que la colonne A soient le nom de tes champs.

VB:
Sub Cacher()
For Each i In Range("B2:B6")
    If Application.CountA(i.Resize(1, 11)) = 0 Then i.EntireRow.Hidden = True
Next
For Each i In Range("B2:L2")
    If Application.CountA(i.Resize(5, 1)) = 0 Then i.EntireColumn.Hidden = True
Next
End Sub

Klin89
 
Re : Masquer les colonnes vide en VBA

Bonjour le fil, bienvenu Debord, bonjour le forum,

En principe je fais comme mes camarades, je me refuse à fournir une réponse toute faite s'il n'y a pas un petit effort de la part du demandeur. Mais comme tu es nouveau parmi nous (et surtout comme je m'emm... grave), je te propose une solution avec un seul bouton qui Masque/Affiche selon le remplissage des cellules...

Le code appliqué au bouton :
Code:
Private Sub CommandButton1_Click() 'bouton "Masquer/Afficher"
Dim li As Byte 'déclare la variable li (LIgne)
Dim col As Byte 'déclare la variable col (COLonne)
Dim test As Boolean 'déclare la variable test
Range("A1").Select 'enlève le focus au bouton
If Me.CommandButton1.Caption = "Afficher" Then 'si le texte du bouton est "Afficher"
 
    ActiveSheet.Rows.Hidden = False 'affiche toutes les lignes
    ActiveSheet.Columns.Hidden = False 'affiche toutes les colonnes
    Me.CommandButton1.Caption = "Masquer" 'modifie le texte du bouton
    Me.CommandButton1.Accelerator = "M" 'modifie le raccourci clavier du bouton
Else 'sinon (si le texte du bouton est "Masquer")
 
    For li = 2 To 6 'boucle sur les lignes 2 à 6
        'condition : si le nombre de valeurs des colonne B à L de la ligne est égal à zéro
        If Application.WorksheetFunction.CountA(Range(Cells(li, 2), Cells(li, 12))) = 0 Then
            Rows(li).Hidden = True 'masque la ligne
            test = True 'définit la variable test
        End If 'fin de la condition
    Next li 'prochaine ligne de la boucle
 
    For col = 2 To 12 'boucle sur les colonnes B à L
        'condition : si le nombre de valeurs des lignes 2 à 6 de la colonne est égal à zéro
        If Application.WorksheetFunction.CountA(Range(Cells(2, col), Cells(6, col))) = 0 Then
            Columns(col).Hidden = True 'masque la colonne
            test = True 'définit la variable test
        End If 'fin de la condition
    Next col 'prochaine colonne de la boucle
 
    If test = True Then 'si test est vrai
        Me.CommandButton1.Caption = "Afficher" 'modifie le texte du bouton
        Me.CommandButton1.Accelerator = "A" 'modifie le raccourci clavier du bouton
    End If 'fin de la condition
End If
End Sub

Le fichier :
 

Pièces jointes

Re : Masquer les colonnes vide en VBA

Bonsoir


Sur un code de départ de klin89, mon adaptation 😉
Not ("les décors sont de Roger Harth et les costumes de Donald Cardwell"=true)

Code:
Sub masque()
 a 1
 End Sub
Code:
Sub affiche()
 a 0
 End Sub
Code:
Sub a(x As Boolean)
Dim i
With Application
    .ScreenUpdating = False
    For Each i In Range("B2:B6")
        i.EntireRow.Hidden = IIf(x, (.CountA(i.Resize(1, 11)) = 0), False)
    Next
    For Each i In Range("B2:L2")
        i.EntireColumn.Hidden = IIf(x, (.CountA(i.Resize(5, 1)) = 0), False)
    Next
    .ScreenUpdating = True
End With
End Sub

PS: Pour plus de lisibilité 1 veut dire True et 0 false
donc on pouvait aussi écrire
a False
et
a True
 
Dernière édition:
Re : Masquer les colonnes vide en VBA

Bonjour à tous,

Je profite de cette ancienne discussion pour demander une précision sur ton code Robert:
Comment faudrait-il l'adapter pour masquer non pas les colonnes/lignes vides mais plutôt celles où la valeur est égale à 0 (Je renseigne mon tableau avec une simple formule qui renvoie soit la valeur "x" s'il y a un résultat valide sinon "")?

Merci par avance, bon week-end.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
163
Réponses
22
Affichages
1 K
Réponses
5
Affichages
236
Retour