Liste déroulante qui masque et affiche des colonnes

Résolu
MarineB63 Messages postés 35 Statut Membre -  
 Maurice -
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

7 réponses

  1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    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
  2. MarineB63
     
    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
    1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      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
    2. MarineB63 Messages postés 35 Statut Membre
       
      Merci beaucoup quand même...! :)
      Cordialement
      Marine
      0
  3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
    1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      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
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
    3. MarineB63 Messages postés 35 Statut Membre
       
      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
  4. Maurice
     
    Bonjour

    Voir aussi avec un Select Case

    http://cjoint.com/?3Jcl0Q3Jf4s

    A+

    Maurice
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Salut,

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

      Trois solutions, c'est parfait non?
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. MarineB63 Messages postés 35 Statut Membre
     
    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
  7. Maurice
     
    Bonjour

    J'ais un peux jouer aver ton calendier

    http://cjoint.com/?DJesqVnSkle

    A toi de voir si ca te va

    A+
    Maurice
    0
    1. MarineB63 Messages postés 35 Statut Membre
       
      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
  8. Maurice
     
    Bonjour

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

    http://cjoint.com/?0Jgkug43ucf

    A+

    Maurice
    0