Macro pour masquer simultanément des colonnes sur plusieurs onglets

Bonjour,

Je ne sais pas du tout créer de macros or j'ai un fichier avec 3 onglets dans lesquels, en fonction des années, je souhaite afficher seulement certaines colonnes.

Les colonnes sont toujours les mêmes.

Il me semble que ça doit être faisable ?

Exemple :

En année 1 :

  • dans l'Onglet 1 je souhaite afficher les colonnes B, D, X
  • dans l'Onglet 2 je souhaite afficher les colonnes R, Q, P
  • dans l'Onglet 3 je souhaite afficher les colonnes W, X Z

En année 2 :

  • dans l'Onglet 1 je souhaite afficher les colonnes C, E, Y
  • dans l'Onglet 2 je souhaite afficher les colonnes S, R, Q
  • dans l'Onglet 3 je souhaite afficher les colonnes X, Z, AA

etc...

Est-ce que quelqu'un peut m'aider ?

Merci!!

Bonjour et bienvenue,

Joins un fichier à ta demande pour une aide adaptée du forum et précise bien ton objectif.

Cdlt.

Bonjour Jean-Eric, merci de ta réponse,

J'aimerais ajouter dans l'onglet VARIABLES 3 boutons :

Bouton "Année 1" qui :

  • dans les onglets "Budget-rapport format FAAI" et "Plan de financement" --> masque les colonnes E, F, H, J, K, M, M, O, Q, R, T, V, W, Y, Z, AA
  • dans l'onglet "Base de données collecte" --> masque les colonnes J, L, M, O, P

Bouton "Année 2" qui :

  • dans les onglets "Budget-rapport format FAAI" et "Plan de financement" --> masque les colonnes D, F, G, I, K, L, N, O, P, R, S, U, W, X, Z, AA
  • dans l'onglet "Base de données collecte" --> masque les colonnes I, K, M, N, P

Bouton "Année 3" qui :

  • dans les onglets "Budget-rapport format FAAI" et "Plan de financement" --> masque les colonnes D, E, G, I, J, L, M, O, P, Q, S, U, V, X, Y, AA
  • dans l'onglet "Base de données collecte" --> masque les colonnes I, K, L, N, P

Merci infiniment si vous pouvez m'aider,

Lucile

Bonjour toutes et tous et bon dimanche

un début pour le bouton 1 (masqueColAnnee1)

Sub masqueColAnnee1()
' en cas d'erreur
On Error GoTo plouf
' on sélectionne la feuille du classeur  Budget-rapport format FAAI
' ensuite on affiche les colonnes dans un premier temps puis on va masqué les  colonnes de cette feuille 
'E, F, H, J, K, M, M, O, Q, R, T, V, W, Y, Z, AA
With Sheets("Budget-rapport format FAAI").Activate
' on remet en place les colonnes masquées au cas où
    Range("E:E,F:F,H:H,J:J,K:K,M:M,O:O,Q:Q,R:R,T:T,V:V,W:W,Y:Y,Z:Z,AA:AA").EntireColumn.Hidden = False
 ' on masque ensuite les colonnes
    Range("E:E,F:F,H:H,J:J,K:K,M:M,O:O,Q:Q,R:R,T:T,V:V,W:W,Y:Y,Z:Z,AA:AA").EntireColumn.Hidden = True
End With
' on active la feuille en question
' ensuite on affiche les colonnes dans un premier temps puis on va masqué les  colonnes de cette feuille  Plan de financement
'E, F, H, J, K, M, M, O, Q, R, T, V, W, Y, Z, AA

With Sheets("Plan de financement").Activate
' on remet en place les colonnes masquées au cas où
    Range("E:E,F:F,H:H,J:J,K:K,M:M,O:O,Q:Q,R:R,T:T,V:V,W:W,Y:Y,Z:Z,AA:AA").EntireColumn.Hidden = False
 ' on masque ensuite les colonnes
    Range("E:E,F:F,H:H,J:J,K:K,M:M,O:O,Q:Q,R:R,T:T,V:V,W:W,Y:Y,Z:Z,AA:AA").EntireColumn.Hidden = True

End With
' masquer colonnes de la feuille Base de données collecte
' J, L, M, O, P

' on active la feuille en question
With Sheets("Base de données collecte").Activate
' on remet en place les colonnes masquées au cas où
    Range("J:J,L:L,M:M,O:O,P:P").EntireColumn.Hidden = False

' on masque ensuite les colonnes
    Range("J:J,L:L,M:M,O:O,P:P").EntireColumn.Hidden = True

End With
' en cas d'erreur
plouf: Exit Sub
End Sub

' ******************************************************
'NOTE:  pour afficher le tout par true et non false    '
' ******************************************************

exemple sur ce forum ici

ci-dessous le même sans commentaire

Sub masqueColAnnee1()
On Error GoTo plouf
With Sheets("Budget-rapport format FAAI").Activate
    Range("E:E,F:F,H:H,J:J,K:K,M:M,O:O,Q:Q,R:R,T:T,V:V,W:W,Y:Y,Z:Z,AA:AA").EntireColumn.Hidden = False
    Range("E:E,F:F,H:H,J:J,K:K,M:M,O:O,Q:Q,R:R,T:T,V:V,W:W,Y:Y,Z:Z,AA:AA").EntireColumn.Hidden = True
End With
With Sheets("Plan de financement").Activate
    Range("E:E,F:F,H:H,J:J,K:K,M:M,O:O,Q:Q,R:R,T:T,V:V,W:W,Y:Y,Z:Z,AA:AA").EntireColumn.Hidden = False
    Range("E:E,F:F,H:H,J:J,K:K,M:M,O:O,Q:Q,R:R,T:T,V:V,W:W,Y:Y,Z:Z,AA:AA").EntireColumn.Hidden = True
End With
With Sheets("Base de données collecte").Activate
    Range("J:J,L:L,M:M,O:O,P:P").EntireColumn.Hidden = False
    Range("J:J,L:L,M:M,O:O,P:P").EntireColumn.Hidden = True
End With
plouf: Exit Sub
End Sub

Note : pour un MAC, je ne sais pas si ce bout de code fonctionnera donc à tester

Bonjour Andre13, c'est génial merci je comprends la logique de ce code, je vais pouvoir l'adapter aux autres boutons.

Sauf que...

Je m'excuse déjà de ma question de néophyte mais : concrètement quelles étapes dois-je suivre pour intégrer cette macro dans mon excel ?

J'ai fouillé et regardé des tutos mais ils ne me présentent que la fonction "enregistrement" et pas l'intégration de ce bout de code. Du coup je ne sais pas quoi en faire....

Merci de votre aide !

Bonjour à tous!

J'ai trouvé!

Andre13 encore un grand merci, j'ai juste fait un petite modif : j'affiche toutes les colonnes en début de processus car sinon si j'enchaînait les différentes macros tout était masqué

Merci!!

Chers tous,

Me voici à nouveau sur ma macro pour masquer des colonnes.

J'ai ajouté ces onglets à la macro (l'objectif est de masquer les mêmes colonnes en allemand et en français).

J'ai bien changé le nom de l'onglet dans la macro.

Cela fonctionne en français et en allemand sur mon MAC.

Mais dès que je l'ouvre sur PC, la macro fonctionne sur les onglets initiaux (en français) mais pas sur les 2 nouveaux (en allemand).

Je ne comprends pas du tout ce qui se passe.

Un pro peut m'aider ?

Merci par avance !!

Lucile

Bonjour toutes et tous

classeur nommé:

DATE_INITIALES- budget NOM_DI-FAAI nvelle v V5 bis (2) trame vierge_avec macro et trad allemand V3

@ tester et à voir pour PC:

Lorsque tu es sur PC tu as l'accent aigu du e qui est sous format MAC

regarde tes modules 2,3,4 et 5 (le mot données)

With Sheets("Base de données collecte").Activate

Ensuite, tu as la feuill1 le code de ta feuil1, qui demande à ouvrir la feuille D_penses (je pense que tu ne l'as pas mise pour question de confidentialité)

@ tester en supprimant ce code au cas où ! ou mettre des apostrophes devant pour que le code devienne un commentaire

Spoiler
Private Sub Workbook_Open()
  With Worksheets("D_penses")
    .EnableAutoFilter = True
    .EnableOutlining = True
    .Protect Contents:=True, Password:="DPO", UserInterfaceOnly:=True
  End With

End Sub

Private Sub Workbook_Open()
  'With Worksheets("D_penses")   ' en attente
   ' .EnableAutoFilter = True   ' en attente
   '.EnableOutlining = True   ' en attente
   ' .Protect Contents:=True, Password:="DPO", UserInterfaceOnly:=True   ' en attente
'  End With   ' en attente
End Sub   

Pour l'autre classeur idem (modules 5,6,7 et 8)

en attente de ta réponse...

crdlt,

André

Bonjour André,

C'est parfait ça a fonctionné en supprimant le problème de l'accent.

Je ne savais aps qu'une macro s'interrompait au moment où elle rencontrait un problème, je ne comprenais donc vraiment pas comment ma macro pouvait fonctionner sur certains onglets et pas sur d'autres.

Merci infiniment de votre aide,

Lucile

Bonjour à tous,

Au moment où je pensais en avoir terminé...

Voici un fichier récalcitrant, j'ai appliqué le même principe de macros sur un fichier avec 5 années au lieu de 3.

Et là, alors que mes macros sont bien intégrées dans la partie VBA, je ne les retrouve pas dans le listing des macros et impossible de les affecter aux boutons de commande !

Merci si vous pouvez m'aider, j'ai vraiment fouillé mais impossible de trouver la solution...

Lucile

Bonjour toutes et tous

1/La macro 4 ton module 2 sert sur quel onglet ? (1 onglet ou plusieurs onglets de ton classeur ?)

2/ idem pour la macro 5

3/ ta macro 4 et 5 sont IDENTIQUES ?

ne voulais-tu pas mettre comme ceci: (une macro qui cache les colonnes et l'autre qui les ré affiche plus tôt ?)

'  ' sur quel onglet ?
' exemple:

 Sub Macro4()
'
' Macro4 Macro
'
' CACHER ou HIDDEN les colonnes
'
 with sheets(" Budget-rapport format FAAI")
    Columns("C:E").Select
    Range("C2").Activate
    Selection.EntireColumn.Hidden = True
    End With                         ' ajouter 
End Sub

 Sub Macro5()
'
' Macro5 Macro
'
' AFFICHER ou SHOW les colonnes
'
 with sheets(" Budget-rapport format FAAI")
    Columns("C:E").Select
    Range("C2").Activate
    Selection.EntireColumn.Hidden = False  ' modifier

    End With                                                      ' ajouter 
End Sub

petite contribution ou aide:

Exemple pour masquer les colonnes avec un bouton ActiveX+ta macro4: soit tu y insères dans la feuille adéquate de ton classeur un bouton ActiveX (mode de création)

lorsque tu cliqueras dessus fera appel à ta macro 4 par pour cela, tu mets sur ce bouton ce code à placer sur ta feuille:Call Macro4

Call pour faire Appel à ta Macro4

quant à ta Macro4, elle sera dans ton Module2 qui donnera ceci:

Sub Macro4()
'
' Macro4 Macro
'

'
 with sheets(" Budget-rapport format FAAI")
    Columns("C:E").Select
    Range("C2").Activate
    Selection.EntireColumn.Hidden = True
    End With                         ' ajouter 
End Sub

suite: il te restera plus qu'à faire la même chose avec un autre bouton afin d'afficher tes colonnes

4/ tu as mis dans la feuil1 "Depense au format AFD" à placer dans le ThisWorkbook et nom dans ta feuill1

Spoiler

'========== à placer dans ThisWorkbook ===============

Private Sub Workbook_Open()

With Worksheets("D_penses") ' ATTENTION mettre le nom de la feuille correspondante correctement !!!

.EnableAutoFilter = True

.EnableOutlining = True

.Protect Contents:=True, Password:="XXX", UserInterfaceOnly:=True ' mot passe modifier pour raison de sécurité -;)

End With

End Sub

'=======================

En espérant de ne pas t'avoir pas trop chambouler avec mes explications

NOTE du 07/08/2019 : pas de bouton de commande ActiveX sous MAC

Bonjour André13, bonjour à toutes et tous,

1 et 2/ J'aurais dû faire du ménage, les macros 4 et 5 ne servent à rien, je les ai supprimées.

3/ en fait, je mélange des commandes qui affichent et qui masquent les colonnes dans chaque macro car pour chaque année du projet il ne faut masquer que certaines colonnes donc je m'assure ainsi que toutes les autres s'affichent bien.

(j'espère que ça répond à la question !)

4/ Alors là, je n'étais jamais entrée dans ces feuilles de code. J'ai fait la modification.

Mais du coup, j'ai toujours mon problème : je ne parviens pas à accéder aux macros qui restent... voir la copie d'écran...

Si vous pouvez m'aider c'est merveilleux

Lucile

capture

Bonjour toutes et tous

@Lulugrent

essayes de mettre exemple:

Public Sub MAMACRO()
' le code
End Sub

---------ou bien

NOTE du 07/08/2019 : pas de bouton de commande ActiveX sous MAC

Bonjour à toutes et tous,

@andre13,

J'ai mis tous mes modules en Public Sub,

J'ai intégré un bouton ActiveX sur l'onglet "Variables" et j'ai modifié le code de cette feuille.

Et je ne vois toujours pas apparaître mes macros...

Je dois rater un truc ?

Merci infiniment,

Lucile

Re

j'ai testé rien n'y fait, comme tu es sous MAC c'est chaud pour moi sur Windows

Sub mamacro() ' suffit

le problème doit être ailleurs

1/ on va oublier les boutons de commande ActiveX sous MAC (vu sur le NET)

Bonjour à tous,

J'ai intégré un bouton ActiveX

Les ActiveX n'existent pas sur Mac.

Tu ne peux mettre que des objets type Formulaire.

eric

Bonjour Eriic

je venais juste de voir à l'instant pour ActiveX sur la toile merci pour ton intervention

Bonsoir à toutes et tous,

@Eriic et Andre13, comme j'ai vu qu'il y avait des soucis de compatibilité je bosse mon fichier sur PC maintenant, c'est pour ça que j'ai pu intégrer un bouton Active X.

OK je ne sais pas trop comment faire je vais essayer de reconstruire ce fichier de 0 !

Bonjour à tous,

Grâce à votre aide inestimable, j'avais construit il y a 2 ans une macros pour masquer simultanément un certain nombre de colonnes dans un fichier Excel.

Or j'ai ce fichier sur lequel les macros ne fonctionnaient plus, j'ai donc essayé de les reconstruire.

J'ai ouvert la page VBA et j'ai re-créé les macros à partir d'un fichier qui fonctionnait.

Problème : mes macros n'apparaissent pas dans la fenêtre "Macros". Je ne comprends vraiment pas pourquoi, elles sont positionnées identiquement à un fichier qui fonctionne... Du coup, impossible de les lier aux boutons de commande présents dans l'onglet "Variables".

Pouvez-vous de nouveau m'apporter de l'aide ?

J'ai inclus le fichier "malade"

en PJ,

Merci à tous,

Lucile

Bonjour,

ton fichier semble vérolé.
J'ai copié-collé toutes tes feuilles dans un classeur neuf.
Tu peux y remettre tes macros. Par prudence fais-le en copiant le texte et non par un cliqué-glissé des modules.
eric

Rechercher des sujets similaires à "macro masquer simultanement colonnes onglets"