Créer des filtres par UserForm

Résolu
Bonjour,
Je souhaite créer des filtres par un userform.
Il y aura 6 filtres qui iront masquer des colonnes si la valeur d'une ligne (pour chaque colonne) est dans une fourchette de valeur par rapport au niveau sélectionné par le OptionButton.

Ci-dessous le Userform



Sur l'exemple ci-dessus:
La première ligne niveau 3 cochée devra masquer toutes les colonnes à partir de la colonne G (ou 7) et jusqu'à 100 de la ligne 14 dont la valeur est < à 300 et > à 399
La 2ème ligne le niveau 2 cochée devra masquer toutes les colonnes à partir de la colonne G (ou 7) et jusqu'à 100 de la ligne 34 dont la valeur est < à 200 et > à 299
...
Dans l'idéal, je souhaiterais avoir un indicateur du nombre de colonne encore visibles au fur et à mesure. J'ai actuellement 83 colonnes au départ, mais cela peut évoluer.

Merci de votre retour.
Looping

17 réponses

  1. Bonjour Looping

    Il faut partir de ton fichier pour établir un code VBA adapté
    Poste un exemple de ton fichier (anonymé si nécessaire) sur mon-partage.fr, fais créer un lien que tu copies et reviens coller ici

    Cdlmnt
    Via
    0
    1. Bonjour Via et merci de ton intérêt pour ma problématique.
      le lien vers le fichier.
      Tu aura des bug au lancement, c'est normal, j'ai enlevé les 25 autres onglets du classeur...
      Il s'agit du UserForm 6
      Merci encore
      https://www.cjoint.com/c/HGgf4VfpM0o
      0
      1. J'ajoute une demande complémentaire :
        Dans l'idéal, je souhaite ajouter un filtre par curseur comme sur l'image ci-dessous.
        J'espère pas en demander trop...

        Cordialement,
        0
        1. Bonjour Looping

          1) nommer tous les boutons options dans l'ordre
          par ex ceux d'hospitalisation hc1, hc2....hc5, ceux de médecine conventionnelle mc1...mc5

          2) Macro à associer au bouton Appliquer de l'UF
          Private Sub CommandButton1_Click()
          Application.ScreenUpdating = False
          Dim DernCol As Integer
          DernCol = ActiveSheet.Cells(14, Cells.Columns.Count).End(xlToLeft).Column
          nbrecol = DernCol - 6
          For n = 7 To DernCol
          For x = 1 To 5
          If Me.Controls("hc" & x) = True Then
          If Cells(14, n) < x Or Cells(14, n) >= x + 1 Then Columns(n).Hidden = True: nbrecol = nbrecol - 1
          End If
          If Me.Controls("mc" & x) = True Then
          If Cells(34, n) < x Or Cells(14, n) >= x + 1 Then Columns(n).Hidden = True: nbrecol = nbrecol - 1
          End If
          'mettre ici les IF pour les autres option button
          Next x
          Next n
          Application.ScreenUpdating = True
          MsgBox "Reste " & nbrecol & " colonnes"
          End Sub


          Je te laisse le soin de la compléter pour les autres Option Button

          3) Macro à associer à un bouton sur la feuille pour rendre visible toutes les colonnes :
          Application.ScreenUpdating = False
          Dim DernCol As Integer
          DernCol = ActiveSheet.Cells(14, Cells.Columns.Count).End(xlToLeft).Column
          For n = 7 To DernCol
           Columns(n).Hidden = False
           Next
           Application.ScreenUpdating = True


          Par contre je ne comprends ton histoire de filtre supplémentaire, il devrait remplacer les Options BUtton ou être en plus ? et sur quels critères ?

          Cdlmnt
          Via

          0
          1. Bonjour Via.
            J'ai fais l'ensemble des modifications.
            J'ai un souci :
            La valeur X est toujours de 1 à 5, alors que je souhaite que la valeur soit dans une fourchette (d'où ma question précédente de curseur) en fonction des données de la ligne à filtrer.
            Par exemple, dans la ligne 14, les garanties sont exprimées en % du BR, le format de la cellule est automatisé. Si je coche le OptionButton sur 2, je souhaite filtrer uniquement les colonnes de la ligne qui ont une valeur entre 200% et 300%.
            Pour la 3ème sélection, je souhaite en cochant 3, avoir les colonnes ayant des garanties entre 150 € et 200 €....
            Merci d'avance
            0
            1. Bonjour Looping

              Renvoie moi ton fichier via mon-partage.fr puisqu'il y a des macros
              0
              1. Le voilà : https://mon-partage.fr/f/fggo6Abb/
                0
                1. Malgré mon adaptation, j'ai quand même des bugs.
                  Le nombre de formules restantes est pas bon.
                  Effectivement, le remplacement des OptionButton par des curseurs serait la bonne chose.
                  Comme sur ce lien pour la partie tarif : https://www.vous-assurer.fr/mutuelle-sante-offres-detaillees?uuid=ddbb8bfd-6675-4278-bd78-a9a7839bfcdc
                  0
                  1. Ok je regarde cela dès que possible
                    Question : Il y a des colonnes Frais réels, doivent elles rester démasquées tout le temps ?
                    1
                    1. Re.
                      Le valeur Frais réels sont les valeurs les plus hautes.
                      Merci.
                      0
                    2. @LoopingSi le filtre sélectionne les valeurs entre 200 et 300%, alors "Frais Réels" ne sera pas compris, par contre, si la sélection est de 300% à "maximum", alors frais réels sera inclus.
                      Suis-je assez clair ?
                      Merci
                      0
                  2. Regarde si comme cela ça te convient
                    https://mon-partage.fr/f/flRLbpF3/

                    J'ai du rectifier des cellules qui au lieu d'avoir seulement un nombre avaient aussi du texte(125% BR par ex)

                    Pour l'instant les 2 lignes dans la macro pour Fourchette de prix sont shuntées car il n'y a que des REF en ligne 98

                    Les valeurs Min et Max sont modifiables dans les Propriétés des SpinButton, ainsi que le pas d’incrémentation (SmallChange)
                    Pour Fourchette de prix ne connaissant par les min/max j'ai mis nombres bidon

                    Cdlmnt
                    Via
                    1
                    1. Bonjour Via55.
                      Je suis super désolé de te répondre si tardivement.

                      Je n'ai pas pu exploiter ta solution, entre-temps, j'ai développé d'autres fonctions sur l'excel...
                      J'ai mal grès tout utilisé pas mal de bouts de ta macro.

                      Je te remercie encore pour ta patience et ton aide.

                      Si cela t’intéresse, en MP, je peux te transmettre une version de l'outil développé.
                      Merci encore
                      0
                  3. Bonjour Via et UN GRAND MERCI pour cette collaboration à mon travail.
                    Je suis sur un ferry la journée de demain, j'aurais le temps de travailler dessus. Par contre, je serais sans connexion.
                    Je te tiens au courant Mardi dans la journée.
                    Cela correspond manifestement à mon besoin.
                    Je me demande s'il ne va pas y avoir de conflit avec la macro "Bouton23_Cliquer" qui permettait de masquer les solutions que je ne souhaite pas présenter.
                    Un grand merci encore.
                    Looping
                    0
                    1. Ah tu ne m'en avais pas parlé !
                      Remplace le If de la macro du bouton 23 par
                      If Cells(123, x) <> "x" Then Columns(x).Hidden = True
                      et ça ne devrais plus poser de problème

                      Par contre j'avais désactivé des parties de tes macros pour avoir accès au ruban et j'ai oublié de réactiver, ne t’inquiète pas ce n’est pas un bug!
                      Et je m'aperçois que j'ai laisé dans 2 lignes de la macro associée à la nouvelle userform 2 instructions Msgbox que j’avais mise pour contrôler et qu'il faut supprimer bien sûr

                      Cdlmnt
                      Via

                      0
                      1. Re bonjour.
                        Avant d'embarquer dans le bateau, pour que cela soit compatible avec ma première fonction (Les X dans les cases), je pense qu'il faudrait que les filtres qui excluent les colonnes y mettent un X ligne 123 et lancent la macro "Bouton23_Cliquer". Comme ça plus de soucis.
                        Si tu as ce message d'ici mon départ (15h)...
                        Merci d'avance.
                        0
                        1. Pour rappel, le fait de mettre un X ligne 23 permet de cacher manuellement les colonnes en question.Il s'agit d'un pré-tri.
                          0
                          1. ligne 123...
                            0
                        2. Bonjour

                          Essaie ainsi oui et si ça ne va pas tu me fais signe à ton retour

                          0
                          1. Bonjour Via55.
                            Je suis super désolé de te répondre si tardivement.

                            Je n'ai pas pu exploiter ta solution, entre-temps, j'ai développé d'autres fonctions sur l'excel...
                            J'ai mal grès tout utilisé pas mal de bouts de ta macro.

                            Je te remercie encore pour ta patience et ton aide.

                            Si cela t’intéresse, en MP, je peux te transmettre une version de l'outil développé.
                            Merci encore.
                            0
                            1. Bonjour Looping

                              Oui envoie moi l'outil développé en mp cela m'intéresse fortement ☺

                              Bonne continuation
                              0