Combobox tri

Résolu
Bonjour,
Je me permets de vous soliciter car je suis de nouveau bloqué…
Lorsque vous cliquez sur recherche, il y a UsF_Modification qui se charge,
J’ai 5 Combobox de tri.
Voici le fichier : http://www.cijoint.fr/cjlink.php?file=cj200903/cijT1OKLdw.xls
Lorsque je fait une recherche avec une seule combobox , il n’y a pas de soucis, ça fonctionne, par contre lorsque je veux faire une recherche avec plusieurs combobox, si la valeur n’existe pas ça plante…. Il faut faire l’essai pour comprendre..
Y aurait-il possibilité de me donné un petit coup de main de nouveau…
Encore merci
Configuration: Windows XP
Internet Explorer 7.0

43 réponses

Résumé de la discussion

Le fil porte sur un formulaire Excel utilisant UsF_Modification et cinq combobox de tri ; lors d'une recherche multi-critères, si une valeur n’existe pas, l’exécution plante. Des participants proposent des corrections, notamment un remaniement du code pour lever l’erreur et la suppression d’une ligne, tandis qu’un autre signale une variable non définie et ajuste le démarrage. L’échange rappelle le rôle central de UsF_Modification pour extraire rapidement les données de la feuille BDD via les filtres, et propose une réorganisation vers une feuille dédiée avec désactivation des contrôles. En parallèle, les propositions vont jusqu’à supprimer l’UF Modification et créer une feuille simplifiée, afin de limiter les points d’échec et de stabiliser le filtrage multi-critères sans imposer une solution immédiate.

Bobot (l’IA à votre service)
  1. Contributeur
    J'ai "un tout petit peu" remanier ton code :-)
    Plus d'erreur..
    https://www.cjoint.com/?eilKIXXVQO
    Tu dis...
    Edit: faut supprimer la ligne...
    Tabtemp = .Range(.Cells(2, 1), .Cells(Derligne, 10))
    Tu devras réadapter un peu les contrôles, je n'ai pas un écran suffisament large et j'ai du modifier l'affichage pour tout voir.
    1. Contributeur
      Bonjour,
      Je ne comprend pas ton problème, ça a l'air de fonctionner convenablement !!
      A+
      1. Par exemple si dans la Combobox RNC N° tu choisi "2", et que dans la Combobox délai de réponse tu choisi "16", ça plante.
        C'est normal car ça n'existe pas dans la base de donnée, tu vois ce que je veux dire?

        L'essentiel serait que je puisse limiter les choix dans les textbox en fonction des filtres précédents...
        1. Contributeur
          Je ne pense pas qu'il soit nécessaire que je te fasse la macros, tu semble déjà maitriser pas mal excel.
          Pour que les autres combo soit réinitialiser...
          Faire une fonction qui les vide et les réinitialise en testant..

          If not rows(x).hide then
              Mettre la cellule dans le combo
          end if

          Et si tu t'étais inspiré de cet exemple tu pourrais économiser 200 à 300 lignes de code
          A+
          1. :) Si seulement j’avais fait cette macro tout seul..Je ne suis hélas pas aussi bon que cela, vous m’aviez déjà bien aidé lors de l’élaboration de celle-ci !

            Pour ce qui est de la ligne de code que tu me donne, où dois-je la mettre ?
            Dans l’USF ou dans le module ?

            Merci à toi

            1. Si seulement j’avais fait cette macro tout seul..Je ne suis hélas pas aussi bon que cela, vous m’aviez déjà bien aidé lors de l’élaboration de celle-ci !

              Pour ce qui est de la ligne de code que tu me donne, où dois-je la mettre ?
              Dans l’USF ou dans le module ?

              Merci à toi
              1. Contributeur
                Dans "Mes interventions" je vois que tu a poster un message à 10h19 mais dans le topic je ne le trouve pas, probablement dù au bug de ce matin.
                Veux-tu le remettre
                A+
                1. Mmmm... je ne vois pas où tu dis.............
                  Dans "MES INTERVENTIONS"? la feuille?

                  Désolé..
                  1. Contributeur
                    tu as poster un message à 10h19 ??
                2. OUI,OUI POURQUOI?

                  Je n'arrive toujours pas là--- Je ne vois pas ou mettre cette ligne de code...
                  1. Contributeur
                    OK, laisse tomber pour le poste de 10h19, maintenant il est visible.
                    Vu ta réponse j'ai regarder ton code d'un peu plus près et ma 1ère constatation...
                    Tu t'évertue à recréer la roue, le filrage ne devrait pas être fait par des routines ni le remplissage des combo, tout est disponnible sur la feuille excel, sur la feuille "Interventions" il y a bien sûr beaucoup de colonnes, serait alors préférable de recopier les colonnes nécessaires sur une autre feuille et d'y mettre les filtres, et de travailler à partir de cette feuille et pas d'un UF qui ne sert à rien.
                    Et 2èm constatation, si tu sélectionne par N° le mieux serait de mettre les autre combo enabled à false, puisqu'il n'y aurait rien d'autre à filtrer.
                    3èm constatation, ton code est beaucoup trop "tarabiscoté" pour que je puisse le debuggé valablement, il faudrait tout reprendre à zéro.
                    En résumé : Je supprimerais l'UF Modification, je créerais une feuille du même nom en laissant quelque lignes disponnible sur le haut de la feuille pour éventuellement y mettre quelque boutons si nécessaire.
                    A+
                    1. Salut,
                      En fait Usf_Modification est très utile ! Là on ne le voit pas trop car le fichier n’est pas complet, mais en fait cet Usf permet de récupérer les données de la feuille « BDD » très rapidement via les différents filtres que l’on peut appliquer via les combobox (car tous sont utilisés, et non pas juste celui avec le N° de Rnc), puis lorsque l’on double clique sur une ligne de la listbox, il y a l’Usf_Creation qui s’affiche, là il y a toutes les informations de la feuille BDD qui sont visibles et modifiables si on a le mot de passe…. A savoir que toutes ses données qui se trouvent dans beaucoup de colonnes doivent être insérées dans un rapport qui se trouve sur une feuille nommée « Formulaire » juste en cliquant sur un bouton de l’Usf_Creation.
                      Je récapitule juste mon problème car je ne sais pas si c’était bien clair…
                      Lorsque je veux mettre plusieurs filtres avec les combobox dans l’usf modification, je voudrais qu’à chaque nouveau filtre mis, le choix dans les combobox se réduise, afin que la macro ne plante du fait que le choix ne corresponde a rien… faire l’essai..
                      J’aimerais vraiment pouvoir rester dans cette configuration et que la macro ne plante pas…. Ce serait génial... Merci encore
                      1. Ok je viens d'essayer, ça plante au démarage me met Variable non définie :

                        Dans l'USF_Modification:

                        Sub RemplirListeTout()
                        Dim lig As Long
                        Dim col As Integer
                        Dim FL1 As Worksheet
                        Set FL1 = Sheets("INTERVENTIONS")
                        With FL1
                        Derligne = .Range("C" & Rows.Count).End(xlUp).Row
                        Tabtemp = .Range(.Cells(2, 1), .Cells(Derligne, 10))
                        End With
                        ListBox1.Clear
                        For lig = 2 To Derligne
                        With ListBox1
                        .AddItem
                        For col = 1 To 10
                        .List(lig - 2, col - 1) = FL1.Cells(lig, col)
                        Next col
                        End With
                        Next lig
                        remplirCombo
                        End Sub
                        1. ralalala...

                          Excuse moi suis au boulot et j'avais juste jeter un oeil.. désolé.

                          Je regarde tout ça!

                          Je te remercie pour ton aide!
                          1. C’est parfait tout ça ! ça fonctionne exactement comme je le souhaitait ! Avec beaucoup moins de lignes de codes…. !!
                            Tu as vraiment fait un excellent boulot !
                            Par contre juste une question, crois tu qu’il y aurait possibilité de supprimer les doublons dans les combo de tri ? J’ai essayé un code que j’avais pour de simple cbbx mais pas moyen avec ce prog là…
                            Encore merci !
                            1. Contributeur
                              J'y avais pensé mais comme tu n'en parlais pas je me suis dit que ça ne t'intéressais pas.
                              Je revois ça..
                              1. Contributeur
                                Remplace cette sub...
                                Sub remplirCombo()
                                Dim CB As Control
                                Dim Index As Integer, lig As Long, Buff As String
                                Dim LigCb As Long, B As Boolean
                                    Pas = True
                                    For Each CB In Me.Controls
                                        If TypeOf CB Is MSForms.ComboBox Then
                                            Index = CB.Tag
                                            CB.Clear
                                            For lig = 0 To ListBox1.ListCount - 1
                                                Buff = ListBox1.List(lig, Index)
                                                If CB.ListCount > 0 Then
                                                    For LigCb = 0 To CB.ListCount - 1
                                                        If CB.List(LigCb) = Buff Then B = True: Exit For
                                                    Next LigCb
                                                End If
                                                If Not B Then CB.AddItem Buff
                                                B = False
                                            Next lig
                                        End If
                                    Next CB
                                    Pas = False
                                End Sub

                                Tu dis...
                                1. …. Respect…. C’est au top…
                                  Je vais en profiter pour poser ma dernière question…

                                  Je ne sais pas si tu à vu, mais lorsque l’on double clique sur la listbox, (et qu’il n’y a pas de filtre de sélectionné) il y a le Usf_Creation qui s’affiche avec toute les données de la ligne.
                                  Ça fonctionne nickel, par contre dès qu’il y a un filtre, ça me prend automatiquement la RNC N°1… faire l’essai pour mieux comprendre. Le problème vient de cette sub :

                                  Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

                                  ' Masquer le formulaire Modification
                                  'UsF_Modification.Hide
                                  Unload Me

                                  LigInt = 1 + Me.ListBox1.ListIndex + 1
                                  UsF_Creation.Show
                                  End Sub

                                  Je ne savais pas quoi mettre pour que ça prenne la ligne filtrée… Tu comprend mon dernier pb ? Merci encore….
                                  1. Contributeur
                                    J'ai pas tester mais je pense que la modif ci-dessous devrait résoudre le problème
                                    remplacer la ligne...
                                    LigInt = 1 + Me.ListBox1.ListIndex + 1
                                    par
                                    LigInt = ListBox1.list(ListBox1.ListIndex ,0) 'éventuellement ajouter 1
                                    sinon tu dis, je verrais avec le classeur.
                                    • 1
                                    • 2
                                    • 3