Liste déroulante qui masque et affiche des colonnes

Résolu/Fermé
MarineB63 Messages postés 33 Date d'inscription mercredi 5 septembre 2012 Statut Membre Dernière intervention 10 février 2016 - 2 oct. 2014 à 07:03
 Maurice - 6 oct. 2014 à 10:20
Bonjour,

Comme l'indique le titre, je souhaiterai réussir à intégrer une liste déroulante avec les 12 mois de l'année. Pour que quand on sélectionne un mois il n'y a ai que les colonnes correspondantes qui s'affichent et les autres se masques automatiquement.

J'espère que je suis claire. Dans tous les cas je vous joint un lien avec un fichier test ressemblant quasiment à l'orignal : http://cjoint.com/14oc/DJchgbUc9mF.htm

Merci d'avance pour votre aide !

Bonne journée,
Marine
A voir également:

7 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
Modifié par Vaucluse le 2/10/2014 à 07:43
Bonjour
et avec le volet bloqués sur la colonne F et un tableau des mois avec des liens hyper texte ne suffirait pas?

Voir ici en cliquant en haut à gauche sur les mois

https://www.cjoint.com/c/DJchPwvNFUM

Pour mettre en place ou modifier
__Lien hyper texte: clic droit sur la cellule du mois et "lien hyper texte" ou "modifier...."
__Blocage du volet: sélection colonne F et figer les volets
__zoom pour vision maxi d'un seul mois:
afficher janvier/sélectionner A1:AM10 et zoom ajusté à la sélection

C'est simple et basique, si ça ne convient pas, il faudra passer par VBA

crdlmnt

Errare humanum est, perseverare diabolicum
0
Bonjour Vaucluse,

merci pour cette proposition, malheureusement la place bloquée est déjà occupée.
D'où l'idée d'une liste déroulante pour limiter la prise de place !
Je vais tout de même garder l'idée des liens en mémoire, je la trouve très intéressante...

Merci pour l'astuce !

Si vous avez la possibilité de me proposer l'idée de la liste (cela me permettra d'apprendre aussi à la faire) car j'imaginais bien qu'elle allait fonctionner avec des VBA.

Cordialement,

Marine
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
2 oct. 2014 à 08:09
Pas de quoi
pour ce qui est de VBA, je pourrais probablement " bricoler" quelque chose, mais mes connaissances sont trop limitées pour que ce soit rationnel et professionnel,et je cède bien volontiers la place à des compétences sur CCM (et il y en a) bien plus efficaces qui ne manqueront pas d'intervenir sur ce sujet
Bonne route
Crdlmnt
0
MarineB63 Messages postés 33 Date d'inscription mercredi 5 septembre 2012 Statut Membre Dernière intervention 10 février 2016
3 oct. 2014 à 11:31
Merci beaucoup quand même...! :)
Cordialement
Marine
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
2 oct. 2014 à 09:02
Bonjour,

Salut Vaucluse, comment va?

Je veux bien prendre la suite...

1- Définir des noms pour toutes les plages de colonnes :
par exemple pour Janvier :
Sélectionner les colonnes entières de F à AM
Onglet Formules, cliquez sur définir un nom
nom : Janvier
fait référence à : =Feuil1!$F:$AM (déjà indiqué si colonnes sélectionnées)

Faire la même chose pour chaque mois, en changeant les plages bien entendu.

2- En C3 : Faire une liste des mois avec validation de données :
Onglet Données, cliquez sur Validation des données.
Autoriser : Liste
Source : saisir : Janvier;Février;Mars;Avril;Mai;Juin;Juillet;
!!!!!! Attention même orthographe que pour les noms définit avant...

3- Clic droit sur l'onglet de la feuille / Visualiser le code
copier/coller ces codes :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Noms As Name
'ne fonctionne qu'avec la cellule C3 :
If Target.Address <> "$C$3" Then Exit Sub
'Boucle sur tous les noms définis du classeur :
For Each Noms In ThisWorkbook.Names
  If Noms.Name = Target.Value Then
    Range(Noms.Name).EntireColumn.Hidden = False
  ElseIf Est_Une_Colonne(Noms.Value) Then
    Range(Noms.Name).EntireColumn.Hidden = True
  End If
Next
End Sub


Function Est_Une_Colonne(Adresse As String) As Boolean
Dim suffix As String, i As Byte
Est_Une_Colonne = True
suffix = Split(Adresse, "!")(1)
For i = 1 To Len(suffix)
  If IsNumeric(Mid(suffix, i, 1)) Then Est_Une_Colonne = False: Exit Function
Next i
End Function


4- Tester
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
Modifié par Vaucluse le 2/10/2014 à 10:18
Salut Pïjaku

.. et merci pour elle.

Pour ma part, vu mes limites en VBA j'avais pensé à quelque chose de moins performant, mais je donne quand même pour ceux qui comme moi, ne sont pas doués.

https://www.cjoint.com/?DJckb2ItE6r

le système utilise la cellule A2 pour afficher le mois et la cellule A1 pour évaluer le déplacement nécessaire à l'affichage.

Bien sur, ça ne fonctionne plus après Août puisque les mois ne sont pas nommés sur la ligne 3 dans le fichier.

bien amicalement
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
2 oct. 2014 à 10:08
Pour elle... De rien!
;-)

Je trouve ta solution intéressante car moins "complexe". Du coup ce sera plus facile à maintenir en cas d'erreur ou de bug futur.

En plus cela va laisser le choix MarineB63...

Amicalement
0
MarineB63 Messages postés 33 Date d'inscription mercredi 5 septembre 2012 Statut Membre Dernière intervention 10 février 2016
3 oct. 2014 à 11:53
Pour moi MERCI !!!!!!!!!! :)

Pijaku, votre solution est parfaite !!! elle réalise exactement ce que je voulais.....
Merci merci merci merci merci !!!!!

Le problème est donc résolu !

Bonne fin de journée à tous,

Marine
0
Bonjour

Voir aussi avec un Select Case

http://cjoint.com/?3Jcl0Q3Jf4s

A+

Maurice
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
2 oct. 2014 à 12:05
Salut,

Voir aussi avec un Select Case
Oui également...
Solution facile à entretenir...

Trois solutions, c'est parfait non?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MarineB63 Messages postés 33 Date d'inscription mercredi 5 septembre 2012 Statut Membre Dernière intervention 10 février 2016
3 oct. 2014 à 11:37
Bonjour à tous !!!

je suis désolée de ma réponse tardive mais les impondérables du travail m'ont fait mettre mon tableau de côté.
Je me replonge dessus dès maintenant et vais essayer les formules que vous avez eu la gentillesse de me proposer.

En tout cas je suis toujours aussi satisfaite de ce CCM parce que nous obtenons toujours des réponses rapides :)

Je vous tiens au courant des résultats !!

Merci

Marine
0
Bonjour

J'ais un peux jouer aver ton calendier

http://cjoint.com/?DJesqVnSkle

A toi de voir si ca te va

A+
Maurice
0
MarineB63 Messages postés 33 Date d'inscription mercredi 5 septembre 2012 Statut Membre Dernière intervention 10 février 2016
6 oct. 2014 à 07:09
Bonjour !!

effectivement tu t'es bien amusé avec mon calendrier !! Super intéressant comme idée...
Je retiens ton fichier car pour l'instant celui que j'ai finalisé avec l'idée de Pijaku est parti au "test" .
Merci beaucoup en tout cas :)

Bonne semaine !!!

Marine
0
Bonjour

rectification d'un bug
& avec ouverture sur le mois en cours

http://cjoint.com/?0Jgkug43ucf

A+

Maurice
0