IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

pb vba recherche sur un formulaire


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2016
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2016
    Messages : 36
    Par défaut pb vba recherche sur un formulaire
    Bonjour a tous,

    j'ai besoin de votre aide, j'ai un formulaire qui fonctionne tres bien, j'aimerais y rajouter un userform pour faire des recherche.
    Chose que j'ai faite, mais je ne touve pas le bon code pour ce que je veux faire...
    Voici mon fichier ci joint et ce que j'aimerais faire.

    j'ai crée un Userform2 pour la recherche pour vous montrer ce que j'aimerais faire.

    En faite dans recherche il fraudais qu’il apparais la liste de la page CATEG.

    Donc si je choisis devis a faire,

    Sa doit m'afficher tous les devis a faire qu'il ce trouve dans la page DTEL colonne AM.

    Résultat en dessous: num sav / nom / date entree

    j'avais réussi a faire quelque chose, mais le soucie c'est que si j'ai 15 devis a faire, dans ma liste déroulante sa va M'afficher 15 fois 'devis a faire' c'est pas le but. Le but c'est que sa m'affiche dans le résultat tous les numéros sav,nom,date entrée a faire!

    et la je ne sais comment faire.

    Si vous pouvez m'aidez c'est cool!
    merci

  2. #2
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 308
    Billets dans le blog
    15
    Par défaut
    Bonsoir,

    De nombreux membres n'ouvrent pas les pièces jointes, surtout s'ils contiennent des macros.

    Le mieux serait de fournir des captures d'écran et poster le code VBA (via la balise #) que vous souhaitez corriger.

    Cordialement,
    Malick
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc..
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  3. #3
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2016
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2016
    Messages : 36
    Par défaut
    J'ai ce code que j'ai trouvé sur internet, il permet une recherche intégrale dans la feuille.

    Il faudrait adapter ce code selon ma feuille.

    Ce que j'aimerais c'est avoir une liste déroulante avec les termes suivant pour ma recherche.

    DEVIS A FAIRE
    A FAIRE REPARATION
    ATTENTE REPONSE
    ATTENTE PIECE
    A VENIR CHERCHER
    TERMINE / SORTIE

    Exemple si je clique sur devis a faire, le résultat qui doit s'afficher sont les colonnes, AK - AM - B de toutes les lignes de la feuille.

    Voila voila. sa fais 1 semaine que je cherche


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    Option Explicit
    Option Compare Text
     
    Const Sign As String = "RECHERCHES"
     
    'ICI C'est la mise en place initialisation
    Private Sub UserForm_Initialize()
        'pour la date du jour
        Me.Caption = Format(Date, "dddd dd mmmm yyyy")
        With ListBox1
            .ColumnCount = 7
            .ColumnWidths = "150;100;0;80;80;70;0"
        End With
        Me.CommandButton1.Default = True
     
       ' pour définir la couleur des objets lors de l'initialisation d'un UserForm.
        With RECHERCHETOUS
            .BackColor = &H8000000F
            .CommandButton1.BackColor = &H8000000F
            .CommandButton2.BackColor = &H8000000F
            .Label3.BackColor = &H8000000F
        End With
     
    End Sub
     
    'ICI C'est le Moteur de Recherche
    Private Sub CommandButton1_Click()
    Dim F As Worksheet
    Dim Plage As Range, C As Range
    Dim T As String, Firstaddress As String
    Dim x As Integer
        ListBox1.Clear
        T = Me.TextBox1
        If T = "" Then Exit Sub
        For Each F In Worksheets
            With F
                Set Plage = Application.Intersect(.UsedRange.Cells, .Range(.Cells(8, 1), .Cells(.Rows.Count, .Columns.Count)))
            End With
            Set C = Plage.Find(T, LookIn:=xlValues, LookAt:=xlPart)
            If Not C Is Nothing Then
                Firstaddress = C.Address
                Do
                    With ListBox1
                        .AddItem F.Name
                        For x = 2 To 6
                            .List(.ListCount - 1, x - 1) = F.Cells(C.Row, x).Text
                        Next x
                        .List(.ListCount - 1, 6) = C.Address(False, False)
                    End With
                    Set C = Plage.FindNext(C)
                Loop While Not C Is Nothing And C.Address <> Firstaddress
            End If
        Next F
     
        If ListBox1.ListCount = 0 Then
            MsgBox "Le Texte " & T & " n'a pas été trouvé" & vbLf & "Faites un essai sur une partie du nom", vbCritical, Sign
        End If
    End Sub
     
    'ICI C'est la sélection au Double Click & Sortie du UserForm
    Private Sub ListBox1_dblClick(ByVal Cancel As MSForms.ReturnBoolean)
        With ListBox1
            Application.Goto Sheets(.Text).Range(.List(.ListIndex, 6))
        End With
        Unload Me
    End Sub
     
    'ICI Sortie du UserForm
    Private Sub CommandButton2_Click()
        Unload Me
    End Sub

  4. #4
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2016
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2016
    Messages : 36
    Par défaut
    Bonjour,
    je recherche toujours une solution :/

    j'ai trouvé un code plus simple qui fonctionne avec mon formulaire, mais je n'arrive pas a changer les colonnes dans ce code.

    Voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Dim f, TblBd
    Private Sub UserForm_Initialize()
      Set f = Sheets("DTEL")
      Set D = CreateObject("Scripting.Dictionary")
      TblBd = f.Range("a2:f" & f.[A65000].End(xlUp).Row)
      D("*") = ""
      For i = LBound(TblBd) To UBound(TblBd)
        a = Split(TblBd(i, 6), ";")
        For Each C In a: D(C) = "": Next C
      Next i
      Me.ComboBox1.List = D.keys
     
      Me.ComboBox1 = ActiveSheet.[A1]
     
    End Sub
     
     
    Private Sub ComboBox1_click()
     ListBox1.Clear
     j = 0
     For i = LBound(TblBd) To UBound(TblBd)
       If (InStr(TblBd(i, 6), ComboBox1) > 0 And TblBd(i, 5) Like ComboBox2) _
         Or (Me.ComboBox1 = "*" And TblBd(i, 5) Like ComboBox2) Then
         Me.ListBox1.AddItem
         For k = 1 To 6
             ListBox1.List(j, k - 1) = TblBd(i, k)
         Next k
         j = j + 1
       End If
      Next i
    End Sub

    En ce moment, la combox1 recherche dans la colonne F;
    J'aimerais qu'elle recherche dans la colonne AM.
    il y a des doublons dans ma liste, mais d’après ce code sa ne les affiches pas donc c'est parfait.
    Le résultat qu'elle donne en ce moment dans la listbox1, c'est les valeurs de toutes les ligne(je suppose) des colonnes A et F.
    Et j'aimerais tous simplement le résultat des colonnes : B / I /AN / Ak de toutes les lignes.

    Je pense pas qu'il a pas beaucoup de modif a faire, mais je n'y arrive pas.
    Merci a vous.

  5. #5
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Pour en revenir à cette ligne que tu ne comprends pas, pour moins d'ambiguïté changes pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      TblBd = f.Range("A2:AN" & f.UsedRange.Rows.Count)
    Si ce code est ne fonctionne pas, peux être utiliser une autre solution?
    Tu as vue mon message a la page 1, a la fin?
    il faut que je me replonge dedans (il y a eu de l'eau sous le pont, depuis) mais pourquoi ça ne fonctionnerais pas ?
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  6. #6
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2016
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2016
    Messages : 36
    Par défaut
    Ce qui donne :

    Erreur d'excution '13'
    Incompatibilité de type.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Private Sub UserForm_Initialize()
     
    Set f = Sheets("DTEL")
      Set d = CreateObject("Scripting.Dictionary")
      TblBd = f.Range("A2:AN" & f.UsedRange.Rows.Count).Address
      ReDim Tb(1 To UBound(TblBd, 1))
      For i = 1 To UBound(Tb, 1)
        Tb(i) = TblBd(i, 39)
      Next i
      d("*") = ""
      For i = 1 To UBound(Tb)
        For Each c In Tb: d(c) = "": Next c
      Next i
      Me.ComboBox1.List = d.keys
     
     ' Me.ComboBox1 = ActiveSheet.[A1]
     
    End Sub
     
    Private Sub ComboBox1_click()
     ListBox1.Clear
     j = 0
     For i = LBound(TblBd) To UBound(TblBd)
       If (InStr(TblBd(i, 39), ComboBox1) > 0 And TblBd(i, 5) Like ComboBox2) _
         Or (Me.ComboBox1 = "*" And TblBd(i, 5) Like ComboBox2) Then
          ListBox1.AddItem
          ListBox1.List(j, 0) = TblBd(i, 2)
          ListBox1.List(j, 1) = TblBd(i, 9)
          ListBox1.List(j, 2) = TblBd(i, 40)
          ListBox1.List(j, 3) = TblBd(i, 37)
          j = j + 1
       End If
      Next i
    End Sub
    Si je savais pourquoi sa marcherais pas :/

  7. #7
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Regarde ce fichier:
    lequel ?

    On va tous faire dans USERFORM1.
    ah bon !

    et regardes-tu les citations en bas de mes messages (la totalité)
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  8. #8
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    oui, car tu utilises la col AN dans la recherche, j'ai pris cette partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ....f.Range("AM" & f.Rows.Count....
    uniquement pour faire référence à ta colonne la plus remplie dans ton dernier fichier
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  9. #9
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2016
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2016
    Messages : 36
    Par défaut
    D'accord.

    Si ce code est ne fonctionne pas, peux être utiliser une autre solution?
    Tu as vue mon message a la page 1, a la fin?

  10. #10
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Comme c'est un code que j'ai reprit c'est pour sa.
    Je supprime c'est ligne ?
    comment veux-tu que je te réponde, il faut essayer de comprendre ce que tu fais, si tu ne comprends pas toi-même, n'étant pas devin.........

    De toutes façon, je pense que cet Usf ne sert à rien, rien ne t'empêche d'entrer des nouvelles données dans l'autre usf (si tu n'en a pas quinze) et les valider
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  11. #11
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2016
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2016
    Messages : 36
    Par défaut
    On va tout reprendre.

    Regarde ce fichier:

    On va tous faire dans USERFORM1.

    Dans USERFORM1 il y a :

    ListBox1
    ComboBox3

    Dans Combox3 j'aimerais qu'il est :

    DEVIS A FAIRE
    A FAIRE REPARATION
    ATTENTE REPONSE
    ATTENTE PIECE
    A VENIR CHERCHER
    TERMINE / SORTIE

    Ce qui correspond a la colonne AM.
    Dans cette Colonnes je vais avoir plusieurs devis a faire, plusieurs a faire réparation et le reste.

    Imagine je choisie devis a faire dans ma combox3
    j'aimerais qu'il s'affiche tous les résultat de toutes les lignes de la feuille, tous les devis a faire et le reste.
    Dans la listebox je veux juste les colonnes Ak et I qui s'affiche.

    Tu comprend ?
    Fichiers attachés Fichiers attachés

  12. #12
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    tu laisses comme je te dis, pourvu que tu ai des données dans les colonnes concernées
    évènement Initialize corrigé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub UserForm_Initialize()
    Set Sh = Sheets("DTEL")
    Set Dcel = Sh.Range("B" & Sh.Rows.Count).End(xlUp)
    Me.ComboBox1.List = Application.Transpose(Sh.Range("B3", Dcel))
    Set Dcel = Sh.Range("AK" & Sh.Rows.Count).End(xlUp)
    Me.ComboBox2.List = Application.Transpose(Sh.Range("AK3", Dcel))
    Set Dcel = Sheets("DONNEES").Range("A" & Sheets("DONNEES").Rows.Count).End(xlUp)
    TB13.List = Application.Transpose(Sheets("DONNEES").Range("A2", Dcel))
    TB11.List = Application.Transpose(Sheets("DONNEES").Range("A2", Dcel))
    Set Dcel = Sheets("CP").Range("A" & Sheets("CP").Rows.Count).End(xlUp)
    TB5.List = Application.Transpose(Sheets("CP").Range("A2", Dcel))
    Set Dcel = Sheets("CATEG").Range("A" & Sheets("CATEG").Rows.Count).End(xlUp)
    TB39.List = Application.Transpose(Sheets("CATEG").Range("A2", Dcel))
    End Sub
    et le module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Explicit
    Public Sh As Worksheet, Dcel As Range, i As Long
    Sub AFFICHER()
    Userform1.Show vbModeless
    Sheets("DTEL").Activate
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  13. #13
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,

    sans tester, ni regarder plus précisément, je pense qu'il faut changer cette ligne dans l'évènement "Initialize"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      TblBd = f.Range("A2:AN" & f.Range("A" & f.Rows.Count).End(xlUp).Row)
    parce que
    J'aimerais qu'elle recherche dans la colonne AM.
    et tu veux dans la listbox, la colonne "AN"
    ensuite dans l'évènement "Click", je mettrais ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Private Sub ComboBox1_click()
     ListBox1.Clear
     j = 0
     For i = LBound(TblBd) To UBound(TblBd)
       If (InStr(TblBd(i, 39), ComboBox1) > 0 And TblBd(i, 5) Like ComboBox2) _
         Or (Me.ComboBox1 = "*" And TblBd(i, 5) Like ComboBox2) Then
          ListBox1.AddItem
          ListBox1.List(j, 0) = TblBd(i, 2)
          ListBox1.List(j, 1) = TblBd(i, 9)
          ListBox1.List(j, 2) = TblBd(i, 40)
          ListBox1.List(j, 3) = TblBd(i, 37)
     
       End If
      Next i
    End Sub
    à toi de vérifier les conditions, je peux me tromper!!!
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  14. #14
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2016
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2016
    Messages : 36
    Par défaut
    Merci pour ta réponse,

    malheureusement, dans ma liste combox1 j'ai toujours les élément de la colonnes F.

    et sa mais une erreur sur la ligne ListBox1.List(j, 2) = TblBd(i, 40)

    Voici ce que j'ai entree comme code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Dim f, TblBd
    Private Sub UserForm_Initialize()
      Set f = Sheets("DTEL")
      Set D = CreateObject("Scripting.Dictionary")
      TblBd = f.Range("A2:AN" & f.Range("A" & f.Rows.Count).End(xlUp).Row)
      D("*") = ""
      For i = LBound(TblBd) To UBound(TblBd)
        a = Split(TblBd(i, 6), ";")
        For Each C In a: D(C) = "": Next C
      Next i
      Me.ComboBox1.List = D.keys
     
      Me.ComboBox1 = ActiveSheet.[A1]
     
    End Sub
     
     
    Private Sub ComboBox1_click()
     ListBox1.Clear
     j = 0
     For i = LBound(TblBd) To UBound(TblBd)
       If (InStr(TblBd(i, 39), ComboBox1) > 0 And TblBd(i, 5) Like ComboBox2) _
         Or (Me.ComboBox1 = "*" And TblBd(i, 5) Like ComboBox2) Then
          ListBox1.AddItem
          ListBox1.List(j, 0) = TblBd(i, 2)
          ListBox1.List(j, 1) = TblBd(i, 9)
          ListBox1.List(j, 2) = TblBd(i, 40)
          ListBox1.List(j, 3) = TblBd(i, 37)
     
       End If
      Next i
    End Sub

  15. #15
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    j'ai simplement oublié d'enlever ".Address", tu devrais le deviner (c'était pour un test)
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  16. #16
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2016
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2016
    Messages : 36
    Par défaut
    Ha pardon....

    J'essaye de comprendre en même temps, mais je comprend pas tous.

    Alors la sa fonctionne, j'ai bien ma liste déroulante dans mon combox1( au passage peux ton commencer a afficher a partir de la ligne 4 ?

    Maintenant si je choisie devis a faire ou n'importe j'ai un erreur ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     For i = LBound(TblBd) To UBound(TblBd)
    Erreur d’exécution 13

    incompatibilité de type.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Private Sub UserForm_Initialize()
     
    Set f = Sheets("DTEL")
      Set d = CreateObject("Scripting.Dictionary")
      TblBd = f.Range("A2:AN" & f.UsedRange.Rows.Count)
      ReDim Tb(1 To UBound(TblBd, 1))
      For i = 1 To UBound(Tb, 1)
        Tb(i) = TblBd(i, 39)
      Next i
      d("*") = ""
      For i = 1 To UBound(Tb)
        For Each c In Tb: d(c) = "": Next c
      Next i
      Me.ComboBox1.List = d.keys
     
     ' Me.ComboBox1 = ActiveSheet.[A1]
     
    End Sub
    
    Private Sub ComboBox1_click()
     ListBox1.Clear
     j = 0
     For i = LBound(TblBd) To UBound(TblBd)
       If (InStr(TblBd(i, 39), ComboBox1) > 0 And TblBd(i, 5) Like ComboBox2) _
         Or (Me.ComboBox1 = "*" And TblBd(i, 5) Like ComboBox2) Then
          ListBox1.AddItem
          ListBox1.List(j, 0) = TblBd(i, 2)
          ListBox1.List(j, 1) = TblBd(i, 9)
          ListBox1.List(j, 2) = TblBd(i, 40)
          ListBox1.List(j, 3) = TblBd(i, 37)
          j = j + 1
       End If
      Next i
    End Sub

  17. #17
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    écoutes,

    je viens de regarder ta dernière version, je n'ai pas le temps de détailler chaque procédure que tu as faite, il faut que tu prépares le fichier proprement, tu me vois reprendre des procédures qui contiennent des lignes comme la partie ci-dessous, tu ne t'ai pas posé la question s'il n'y avais pas plus simple ?, tu ne t'ai pas renseigné sur les boucles ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    .....
    L = Sheets("DTEL").Range("a65536").End(xlUp).Row + 1 'Permet de se positionner sur la dernière ligne de tableau NON VIDE
     
    Range("A" & L).Value = TB1 'Insère la donnée de la liste déroulante dans la colonne A
    Range("B" & L).Value = TB2 'Insère la donnée de la textbox1 dans la colonne B
    'et à suivre....
    Range("C" & L).Value = TB3
    Range("D" & L).Value = TB4
    Range("E" & L).Value = TB5
    Range("F" & L).Value = TB6
    Range("G" & L).Value = TB7
    Range("H" & L).Value = TB8
    Range("I" & L).Value = TB9
    Range("J" & L).Value = TB10
    Range("K" & L).Value = TB11
    Range("L" & L).Value = TB12
    Range("M" & L).Value = TB13
    Range("N" & L).Value = TB14
    Range("O" & L).Value = TB15
    Range("P" & L).Value = TB16
    Range("Q" & L).Value = TB17
    Range("R" & L).Value = TB18
    Range("S" & L).Value = TB19
    Range("T" & L).Value = TB20
    Range("U" & L).Value = TB21
    Range("V" & L).Value = TB22
    Range("W" & L).Value = TB23
    Range("X" & L).Value = TB24
    Range("Y" & L).Value = TB25
    Range("Z" & L).Value = TB26
    Range("AA" & L).Value = TB27
    Range("AB" & L).Value = TB28
    Range("AC" & L).Value = TB29
    Range("AD" & L).Value = TB30
    Range("AE" & L).Value = TB31
    Range("AF" & L).Value = TB32
    Range("AG" & L).Value = TB33
    Range("AH" & L).Value = TB34
    Range("AI" & L).Value = TB35
    Range("AJ" & L).Value = TB36
    Range("AK" & L).Value = TB37.Value
    Range("AL" & L).Value = TB38
    Range("AM" & L).Value = TB39
    Range("AN" & L).Value = TB40
    Range("AO" & L).Value = TB41
    Range("AP" & L).Value = TB42
    Range("AQ" & L).Value = TB43
    Range("AR" & L).Value = TB44
    End If
    ......
    déjà, réponds -moi à ça, cherches/proposes et je t'aiderai
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  18. #18
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2016
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2016
    Messages : 36
    Par défaut
    Je sais qu'il a une méthode plus simple.
    C'est mon premier VBA dans ma vie, je comprend et cette méthode fonctionne, alors j'ai pas chercher plus loin.
    Je sais sa fais beaucoup de linge, j'y vois plus claire quand j'ai besoin de rajouter une ligne.

    Ce que je demande pour ma recherche est si compliquer que sa ..?

  19. #19
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    pour la combo, essayes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        a = Split(TblBd(i, 39), ";")
    et pour l'autre, un oubli
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Private Sub ComboBox1_click()
     ListBox1.Clear
     j = 0
     For i = LBound(TblBd) To UBound(TblBd)
       If (InStr(TblBd(i, 39), ComboBox1) > 0 And TblBd(i, 5) Like ComboBox2) _
         Or (Me.ComboBox1 = "*" And TblBd(i, 5) Like ComboBox2) Then
          ListBox1.AddItem
          ListBox1.List(j, 0) = TblBd(i, 2)
          ListBox1.List(j, 1) = TblBd(i, 9)
          ListBox1.List(j, 2) = TblBd(i, 40)
          ListBox1.List(j, 3) = TblBd(i, 37)
          j = j + 1
       End If
      Next i
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  20. #20
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2016
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2016
    Messages : 36
    Par défaut
    Merci j'ai pas trop comprit ou je mes cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a = Split(TblBd(i, 39), ";")
    merci

Discussions similaires

  1. Afficher le résultat d'une recherche sur un formulaire
    Par cheikhoufia dans le forum NetBeans
    Réponses: 1
    Dernier message: 08/06/2011, 23h52
  2. Réponses: 2
    Dernier message: 03/03/2011, 19h05
  3. [AC-2007] créer une barre de recherche sur un formulaire
    Par marco_t dans le forum IHM
    Réponses: 5
    Dernier message: 03/11/2010, 19h05
  4. [VBA] filtre sur un formulaire en mode feuille de données
    Par dalmasma dans le forum Requêtes et SQL.
    Réponses: 24
    Dernier message: 25/07/2007, 11h09
  5. [vba]recherche sur multichamp
    Par adriantox dans le forum VBA Access
    Réponses: 5
    Dernier message: 19/04/2007, 11h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo