moteur de recherche sur 3 onglets

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jeannot68

XLDnaute Occasionnel
Bonjou a tous

je cherche a cré un moteur de recherche qui cherche dans différents onglets des infos concernant la valeur selectionné dans la comboBox7 de ma userform4

1 /comment faire apparaitre les info dans les textbox de la userform a partir de mon onglet Base?

2/dans ma listview2 je souhaite faire apparaite les actions a entreprendre du palan selectionné( si il y a une croix dans la ligne du palan alors est inscrit la valeur de la ligne 6

3/ dans la listview1, je souhaiterai faire apparaitre les valeurs qui correspondrait a la valeur selectionné dans ma combobox7

quelqu un a des pistes à me fournir??
merci d avance
 

Pièces jointes

Re : moteur de recherche sur 3 onglets

Bonjour

Ci joint le fichier avec un code à tester.

J'ai modifié l'usf pour simplifier le code.
J'ai remplacé une listview par une listbox pour ne pas faire une usine à gaz du fait que l'important était les têtes de colonnes.

JP
 

Pièces jointes

Re : moteur de recherche sur 3 onglets

Bonjour JP 14, bonjour le forum

Tu as raison l'idée de la Listbox est meilleur que celle de la listview, par contre les actions a entreprendre reste affiché et si je selectionne un autre palan les actions s'aditionne a la precedente?

Après avoir réalisés les actions a entreprendre comment les passer en depannage effectué est il possible de faire un double clik sur l'action a entreprendre ce qui ouvre une usf et qui permet de remplir les donnée de l'onglet dépannage a savoir Date , executant et observation et pour l'adresse et la nature du dépannage que ces infos sont rentré automatiquement??
ou alors un glisser ??

Est ce possible?
Merci de vos réponses
 
Re : moteur de recherche sur 3 onglets

Bonjour

En réponse au problème indiqué ci dessous, il faut modifier la procédure.
Bonjour JP 14, bonjour le forum

Tu as raison l'idée de la Listbox est meilleur que celle de la listview, par contre les actions a entreprendre reste affiché et si je selectionne un autre palan les actions s'aditionne a la precedente?

Code:
Private Sub comboBox3_Click()
With ComboBox3
If .ListIndex = -1 Then Exit Sub
If flag = True Then Exit Sub
lig = CLng(.List(.ListIndex, (.ColumnCount - 1)))
Call ecrireTextbox(lig, nomfeuille1)
Call remplistbox(.Value, "Actions a entreprendre")
[COLOR="Red"]Me.ListView1.ListItems.Clear[/COLOR]
Call remplistview(.Value, "Dépannage")

End With
End Sub

JP
 
Re : moteur de recherche sur 3 onglets

Bonsoir

Une première approche

Code:
Private Sub remplistbox(donnee As String, £nomfeuille1 As String)
Dim cellule As Range
Dim i As Long
Dim j As Integer
ListBox1.Clear
With Sheets(£nomfeuille1)
For Each cellule In .Range("a2:a" & .Cells(.Columns(1).Cells.Count, 1).End(xlUp).Row)

    If cellule.Value = donnee Then
    For i = 2 To 30
        If LCase(.Cells(cellule.Row, i)) = "x" Then
            If Len(Cells(7, i)) > 80 Then
            For j = 1 To Len(Cells(7, i)) Step 80
                Me.ListBox1.AddItem Mid(.Cells(7, i), j, 80)
            Next j
                Me.ListBox1.AddItem " "
            Else
            Me.ListBox1.AddItem .Cells(7, i)
            Me.ListBox1.AddItem " "
            End If
        End If
    Next i
        Exit For
    End If
Next cellule
End With
End Sub


Pour parfaire il faudrait couper la phrase à un point ou espace.

JP
 
Re : moteur de recherche sur 3 onglets

Bonjour

Ci dessous une procédure pour éviter de couper le texte au milieu d'un mot.
Code:
Private Sub remplistbox(donnee As String, £nomfeuille1 As String)
Dim cellule As Range
Dim i As Long
Dim j As Integer
Dim j2 As Integer
Dim j3 As Long
ListBox1.Clear
With Sheets(£nomfeuille1)
For Each cellule In .Range("a2:a" & .Cells(.Columns(1).Cells.Count, 1).End(xlUp).Row)

    If cellule.Value = donnee Then
    For i = 2 To 30
        If LCase(.Cells(cellule.Row, i)) = "x" Then
            If Len(Sheets(£nomfeuille1).Cells(7, i)) > 80 Then
            j = 1
            j2 = 100
            j3 = 100
            Do
            pos = InStr(j3, .Cells(7, i), " ")
            If pos = 0 Then
                j2 = Len(Sheets(£nomfeuille1).Cells(7, i)) + 1
            Else
               j2 = pos - 1
            End If
            j3 = 80 + j2
            Me.ListBox1.AddItem Mid(.Cells(7, i), j, j2 - j + 1)
            j = j2 + 1
            If j >= Len(Sheets(£nomfeuille1).Cells(7, i)) Then Exit Do
            Loop
            
            Me.ListBox1.AddItem " "
            Else
            Me.ListBox1.AddItem .Cells(7, i)
            Me.ListBox1.AddItem " "
            End If
        End If
    Next i
        Exit For
    End If
Next cellule
End With
End Sub
A tester

JP
 
Re : moteur de recherche sur 3 onglets

JP14

Ta formule marche mais le soucis c'est qu'avec les code de btqr, si je double clique sur la deuxieme ligne de la prhrase ca lance egalement ma usf depannage avec seulement la moitier de la phrase!!

Je te remercie j'ai utilisé ton ancien code et réduit les phrase pour pls de clarté.
Mais sais tu comment je peux automatiser la taille des colonne de la listview en fonction du text??
Merci
 
Re : moteur de recherche sur 3 onglets

Bonjour

Avec ce code on élimine le problème de plusieurs lignes dans la listbox

Code:
Private Sub remplistbox(donnee As String, £nomfeuille1 As String)
Dim cellule As Range
Dim i As Long
Dim j As Integer
Dim j2 As Integer
Dim j3 As Long
With ListBox1
    .Clear
    .ColumnCount = 2
    .ColumnWidths = .Width & ";0"
End With
With Sheets(£nomfeuille1)
For Each cellule In .Range("a2:a" & .Cells(.Columns(1).Cells.Count, 1).End(xlUp).Row)

    If cellule.Value = donnee Then
    For i = 2 To 30
        If LCase(.Cells(cellule.Row, i)) = "x" Then
            If Len(Sheets(£nomfeuille1).Cells(7, i)) > 80 Then
            j = 1
            j2 = 100
            j3 = 100
            Do
            pos = InStr(j3, .Cells(7, i), " ")
            If pos = 0 Then
                j2 = Len(Sheets(£nomfeuille1).Cells(7, i)) + 1
            Else
               j2 = pos - 1
            End If
            j3 = 80 + j2
            Me.ListBox1.AddItem Mid(.Cells(7, i), j, j2 - j + 1)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, Me.ListBox1.ColumnCount - 1) = cellule.Row & "," & i
            j = j2 + 1
            If j >= Len(Sheets(£nomfeuille1).Cells(7, i)) Then Exit Do
            Loop
            
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, Me.ListBox1.ColumnCount - 1) = ""
            Me.ListBox1.AddItem " "

            Else
            Me.ListBox1.AddItem .Cells(7, i)
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, Me.ListBox1.ColumnCount - 1) = cellule.Row & "," & i
            Me.ListBox1.AddItem " "
            Me.ListBox1.List(Me.ListBox1.ListCount - 1, Me.ListBox1.ColumnCount - 1) = ""
            End If
        End If
    Next i
        Exit For
    End If
Next cellule
End With
End Sub

Code pour récupérer l'adresse de la cellule avec X : la ligne et la colonne
Code:
Private Sub ListBox1_Click()
With ListBox1
If .ListIndex = -1 Then Exit Sub
adresse1 = CLng(.List(.ListIndex, 1))
End With
End Sub

JP
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

E
Réponses
3
Affichages
837
Y
Réponses
2
Affichages
712
YanCad
Y
Retour