Afficher certaine colonnes seulement (Mois)

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 !

Michel10ml

XLDnaute Nouveau
Bonjour,

Je cherche une façon de filtrer ou masquer des colones afin d'afficher que certaine colones d'après une validation de donné (menu déroulant A2)

Ex. si je choisi le mois de mai, j'aimerais masquer tout les autres mois, je dois seulement voir la colonne A, B et toutes les colonnes de la ligne 3 = mai
Donc 23 colones = 2 (Titre & Total) + 21 (mai)
Est-ce possible de le faire sans VB
A moins qu'il y est une autre façon simple d'aller à la première colonne de mai avec un menu déroulant?
J'ai déjà essayé de créer 12 feuilles par mois avec un lien direct, mais lorsqu'il y avait un ajout d'employés ou de titre, je devais faire 12 modifications.

J'ai trouvé plein de façon de filtrer les colonnes verticalement, mais aucune information pour filtrer horizontalement!

Merci à l'avance
 

Pièces jointes

Dernière édition:
Re

=>riton00
Juste de publier ton code dans l'édition de ton message#11 😉
(Rapport que j'ai tellement de fichiers exemples sur mon HD, que si je peux lire le code dans message, ça m'évite de perpétuer l'encombrement binaire)
D'un autre côté, ça développe ma fainéantise mais bon c'est le week-end. 😉
 
Re

Merci riton00
Grâce à ta syntaxe, je suis sortie de ma fainéantise et je suis retourné jouer dans VBE 😉
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim col(), x$
If Not Intersect(Target, Range("$A$2")) Is Nothing Then
Columns("C:IT").Hidden = True
col = _
Array([{"Janv","C:W"}], [{"Févr","X:AR"}], [{"Mars","AS:BM"}], [{"Avr","BN:CH"}], [{"Mai","CI:DC"}], [{"Juin","DD:DX"}], _
[{"Juill","DY:ES"}], [{"Août","ET:FN"}], [{"Sept","FO:GI"}], [{"Oct","GK:HD"}], [{"Nov","HE:HY"}], [{"Déc","HZ:IT"}], [{"Tout","C:IT"}])
With Application
.ScreenUpdating = False
x = .VLookup([A2], col, 2, 0): Columns(x).Hidden = False
End With
End If
End Sub
 
Re

Essaie avec ces modifs
(NB:j'ai rajouté Tout dans la plage nommée Mois)
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, p As Range
Application.ScreenUpdating = False
Set p = Rows(3).SpecialCells(2, 2)
If [A2] = "Tout" Then
  p.EntireColumn.Hidden = False
  Else
  On Error Resume Next
  Mois = CDate("1/" & [A2])
  For Each c In p
    Select Case CDate("1/" & c)
    Case Is = Mois: c.EntireColumn.Hidden = False
    Case Else: c.EntireColumn.Hidden = True
    End Select
  Next
End If
End Sub


Simple question, j'essaie de décortiquer le VBA pour le comprendre.
J'aimerais savoir à quoi sert Le"1" dans CDate("1/" & c)
J'ai fait un test en fusionnant tout les mêmes mois ensemble de la ligne 3 mais ça ne fonctionne plus
J'ai remis comme avant, une colone un mois
 
Re

Alors, fais ce petit test pour comprendre
VB:
Sub t_est()
c = "Janv"
MsgBox CDate("1/" & c)
MsgBox CDate("31/" & c)
c = "Avr"
MsgBox Month(CDate("1/" & c))
MsgBox MonthName(Month(CDate("1/" & c)))
End Sub
Tu vois désormais à quoi correspond le 1 ? 😉
 
Re Bonjour,

En voulant ajouter une colonne et supprimer une ligne, le VBA ne fonctionne plus
J'ai changé le Rows(2)
Menu déroulant à B2

Mais je ne saisis pas le SpecialCells (2, 2)
Je croyais que c'était pour (RowIndex, ColumnIndex)
Je ne comprend pas comment l'interpréter,
j'ai essayé toute sorte de chiffres, mais j'ai toujours une erreur.

Merci de me faire comprendre mon erreur!

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, p As Range
Application.ScreenUpdating = False
Set p = Rows(2).SpecialCells(2, 2)
If [B2] = "Tout" Then
p.EntireColumn.Hidden = False
Else
On Error Resume Next
Mois = CDate("1/" & [B2])
For Each c In p
Select Case CDate("1/" & c)
Case Is = Mois: c.EntireColumn.Hidden = False
Case Else: c.EntireColumn.Hidden = True
End Select
Next
End If
End Sub
 

Pièces jointes

Re

Un petit tour avec la touche F5 s'impose 😉
(à tester sur une feuille vierge, c'est juste un exemple explicatif)
VB:
Sub Eclairer_Ta_Lanterne()
Dim p As Range: Set p = Range("A1:A10")
p.Formula = "=CHOOSE(1+MOD(ROW(),2),""ABC_""&ROW(),1)": p = p.Value
'écriture classique
MsgBox p.SpecialCells(xlCellTypeConstants, 2).Address
'écriture "raccourcie"
MsgBox p.SpecialCells(2, 2).Address
End Sub
En espérant que cela t'a aidé à comprendre 😉
 
Re

Un petit tour avec la touche F5 s'impose 😉
(à tester sur une feuille vierge, c'est juste un exemple explicatif)
VB:
Sub Eclairer_Ta_Lanterne()
Dim p As Range: Set p = Range("A1:A10")
p.Formula = "=CHOOSE(1+MOD(ROW(),2),""ABC_""&ROW(),1)": p = p.Value
'écriture classique
MsgBox p.SpecialCells(xlCellTypeConstants, 2).Address
'écriture "raccourcie"
MsgBox p.SpecialCells(2, 2).Address
End Sub
En espérant que cela t'a aidé à comprendre 😉


Ok! je crois comprendre que le message commence (A2) en row 2, mais colonne 1?
C'est la que je ne comprend pas le (2, 2)

Merci!
 
- 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

Retour