Macro pour masquer des colonnes

Bonjour à tous

Ne sachant pas faire de macro en VBA, quelqu'un pourrait-il m'en écrire une pour que :

pour chaque cellule vide ou égale à 0 sur une ligne (par exemple de C10 à Z10) chaque colonne correspondante doit être masquée.

PS : quand je dois faire des macros, j'utilise les macros enregistrées mais dans le cas présent, j'ai beau réfléchir je ne vois pas comment faire : je pense que c'est impossible et qu'il faut absolument passer par une programmation en VBA.

Merci de votre aide

2repartition.xlsm (87.98 Ko)

Bonsoir,

Une macro ne peut faire que ce que tu pourrais faire manuellement, rien de +

Repose ton problème en l'illustrant avec un bout de fichier et annotations

Amicalement

Claude.

Bonjour dubois

Je te joins un exemple.

Merci de to aide.

https://www.excel-pratique.com/~files/doc2/Masquage_colonne.xlsx

Bonjour,

Si tu veux plus de réponse, mets ton fichier au format *.xls car là pas possible de répondre pour ceux qui n'ont pas excel 2007.

Sinon essaie ce code pour la ligne 10

Sub test()
'Macro Dan pour JP06 - 22/09/09
Dim cel As Range
For Each cel In Range("C10:Z10")
If cel = 0 Then
cel.EntireColumn.Hidden = True
Else: cel.EntireColumn.Hidden = False
End If
Next
End Sub

A te relire

Dan

1fournisseurs.xlsx (35.58 Ko)

Bonjour à tous,

Suivant ton fichier:

Sub MasqueCol()
''Macros par Claude Dubois pour "jp06" Excel-Pratique le 23 Sept 09
Dim Dc As Byte, i As Byte
    Application.ScreenUpdating = False
        Range("A:K").EntireColumn.Hidden = False
        Dc = [IV7].End(xlToLeft).Column
    For i = 1 To Dc
        If WorksheetFunction.Sum(Cells(7, Dc), Cells(30, Dc)) = 0 Then
            Cells(1, Dc).EntireColumn.Hidden = True
        End If
            Dc = Dc - 1
    Next i
End Sub

Fichier:

https://www.excel-pratique.com/~files/doc2/Masquage_colonne2.xls

Amicalement

Claude.

édit: Salut Dan

Merci à Dubois et Nad-Dan.

Je vais esayé de les intégrer en les adaptant à mon vrai tableau.

Bonjour la bande

J'ai essayé la macro de Nad-Dan (plutôt que Dubois car je la comprenais mieux, mais merci aux 2 quand même) et ça marche.

Un client satisfait pouvant devenir un client plus exigeant, il faudrait maintanant que je puisse masquer des colonnes en fonction d'1 ligne qui pourrait être indiquée par sa saisie dans 1 cellule du tableau.

Je vous joinds 1 exemple (j'ai fais, en vrai, un énorme tableau pour gérer des commandes mais sans cette possibilité, il perd beaucoup d'intérêt ...)

https://www.excel-pratique.com/~files/doc2/Masquage_colonnes_selectif.xls

Merci d'avance pour (encore) votre aide

Bonjour,

La macro de Dan adaptée,

Entrer un N° de ligne en A1

code à mettre dans le VBE de la Feuil1 (pas un module)

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim cel As Range, Lg As Byte
    Application.ScreenUpdating = False
    If Not Application.Intersect(Target, Range("a1")) Is Nothing Then
            Lg = Range("a1")
        For Each cel In Range(Range("e" & Lg), Range("n" & Lg))
            If cel = 0 Then
                cel.EntireColumn.Hidden = True
                Else: cel.EntireColumn.Hidden = False
            End If
        Next
    End If
End Sub

Claude.

Merci Dubois pour ton efficacité mais que dois-je faire exactement ?

"code à mettre dans le VBE de la feuil1 (pas un module) : c'est quoi un VBE et c'est où ? Le module c'est bien une macro complète ?

Merci encore

re,

VBE, c'est l'éditeur Visual Basic, (Alt+F11) pour y accéder

à gauche, tu sélectionne ton fichier, en dessous tu sélectionne "Feuil1" puisque le

tableau est dans Feuil1.édit

et tu copie/colle le code.

reviens si çà coince

Claude.

Bonsoir Dubois

J'ai honte mais je reviens avant même d'avoir essayé car je ne sais pas comment intégrer ta macro additionnelle dans celle de Nad-Dan ?

Si ton capital patience n'est pas épuisé, peux-tu me dire :

1°/ quelles sont les lignes de ta macro à intégrer dans celle que j'ai ?

2°/ et à la place de quelles lignes dans la macro que j'ai ?

Merci (... de ne pas me crier dessus)

Bonsoir,

Ton fichier à jour

https://www.excel-pratique.com/~files/doc2/Masquage_colonnes3.xls

Bonne soirée

Claude.

Merci Dubois, c'est vraiment très sympa.

J'essaie cela dès demain.

Cordialement

Bo,jour Dubois,

C'est super mais ... je n'arrive pas à la coller dans mon vrai dossier.

Je voulais la copier-coller mais quand j'essaie de l'afficher dans ton dossier (affihage > Macro), elle n'apparaît pas.

Encore un petit coup de pouce SVP, en espérant que ce sera le dernier (au moins pour ce sujet ...)

Merci encore

Bonjour à tous,

Une macro est toujours spécifique à un fichier ou feuille donnée,

suffit pas de copier/coller, il faut adapter suivant la structure réelle !

Envoie ton fichier réel, les en-têtes et quelques lignes suffisent

(ce que tu aurais du faire dès le début !)

Claude.

Re-bonjour Dubois,

Impossible de te l'envoyer, il fait plus de 4Mo.

Je vais l'alléger et je reviens.

Merci de ta patience.

Me revoilà

Impossible de descendre en dessous de 2Mo (d'ailleurs je comprends pas pourquoi car j'ai supprimé les formules de tous les onglets non concernés et dans celui qui m'intéresse il n'y a que 20 cellules renseignées !...)

Le néant m'envahie...

re,

Déjà un fichier de 4 Mo, faut se poser des questions !

il y a surement du ménage à faire ?

Pas besoin des autres onglets, fais simplement une copie de la feuille sur un nouveau

classeur et :

1) tu ne garde que les vingt 1ères lignes, (le reste à supprimer)

2) tu supprime tous les noms/définis.

3) tu enregistre ce nouveau classeur, qui ne devrait pas faire + de 80 Ko

Vas-tu t'en sortir ???

Claude.

Gagné ! (60 ko)

https://www.excel-pratique.com/~files/doc2/Gestion_BROSSERIE_v4.xls

Je t'ai indiqué ce que sera la dernière ligne et la dernière colonne pour le tableau définitif afin que tu puisses l'intégrer dans ta macro.

SVP : nom de macro : masquage_sélectif_colonnes

Et encore merci

re,

Il n'y a plus que 4 pièces maintenant ?

çà s'arrête à la colonne "O" ?

Confirme

édit: pas vu l'information

Il n'y a pas de bouton avec une macro, il s'agit d'une macro événementielle qui se déclenche

quand tu entre un chiffre en "A1"

ici, tu tape le N° index (et non le N° de ligne)

Code à mettre dans VBE "Feuil1"

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim cel As Range, Lg As Byte
    Application.ScreenUpdating = False
    If Not Application.Intersect(Target, Range("a1")) Is Nothing Then
            Lg = Range("a1") + 9
        For Each cel In Range(Range("k" & Lg), Range("fe" & Lg))
            If cel = 0 Then
                cel.EntireColumn.Hidden = True
                Else: cel.EntireColumn.Hidden = False
            End If
        Next
    End If
End Sub

Fichier:

https://www.excel-pratique.com/~files/doc2/Masquage_colonnes4.xls

Claude.

Rechercher des sujets similaires à "macro masquer colonnes"