Rechercher une partie de variable dans userfo

Résolu
jaushua Messages postés 18 Statut Membre -  
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
j'ai une feuille qui a plusieurs colonnes remplis ar des userforms divers,
dans la colonnes 1 des code tel que: P0123,P556,P852,L556,S852,L852,.... ,
je voudrai pouvoir faire une recherche depuis les code mais en tapant 852 par exemple il m'affiche toute les lignes
dont le code contient 852 dans la 1er colone ou si je tape P pareil il me donne toutes les lignes qui contiennent P dans la 1er colonne

je vous joint mon code au cas où

Private Sub Choixnum_Click()
Dim NumLigne As Integer
Dim Offert As String

Application.ScreenUpdating = False
NumLigne = Choixnum.ListIndex + 3
Set objdvd = Application.ThisWorkbook.Worksheets.Item("feuil4")
Let blnvalidRecherche = True

'si pas de numero entrer
If Me.Choixnum.Value = "" Then
Call MsgBox("Veuillez selectionner un num !", vbCritical + vbOKOnly, "Erreur")
Let blnvalidRecherche = False
MsgBox "ce numero n'éxiste pas"

End If
Let lngNBligne = 3
Dim Genre As String
Application.ScreenUpdating = False

'recherche du numero
If blnvalidRecherche = True Then
Do While objdvd.Cells(lngNBligne, 1) <> ""
If Me.Choixnum.Value = objdvd.Cells(lngNBligne, 2) Then
TextBox7 = objdvd.Cells(NumLigne, 2).Value
TextBox8 = objdvd.Cells(NumLigne, 1).Value
TextBox9 = objdvd.Cells(NumLigne, 3).Value
TextBox13 = objdvd.Cells(NumLigne, 4).Value
TextBox14 = objdvd.Cells(NumLigne, 5).Value
TextBox15 = objdvd.Cells(NumLigne, 6).Value
TextBox20 = objdvd.Cells(NumLigne, 7).Value
TextBox21 = objdvd.Cells(NumLigne, 8).Value
TextBox22 = objdvd.Cells(NumLigne, 9).Value
TextBox23 = objdvd.Cells(NumLigne, 10).Value
TextBox27 = objdvd.Cells(NumLigne, 11).Value
TextBox28 = objdvd.Cells(NumLigne, 12).Value
TextBox29 = objdvd.Cells(NumLigne, 13).Value
TextBox31 = objdvd.Cells(NumLigne, 14).Value
End If
Let lngNBligne = lngNBligne + 1
Loop
End If
Application.ScreenUpdating = True

End Sub

Private Sub CommandButton1_Click()
Unload UserForm1
Range("A3:A10000").EntireRow.Delete
MENU.Show

End Sub

Private Sub CommandButton2_Click()
Set objdvd = Application.ThisWorkbook.Worksheets.Item("feuil2")
Let blnvalidRecherche = True
'si pas de titre entrer
If Me.pile.Value = "" Then
Call MsgBox("Veuillez entrer un numero!", vbCritical + vbOKOnly, "Erreur")
Let blnvalidRecherche = False
End If
Let lngNBligne = 3
Dim Genre As String
Application.ScreenUpdating = False
If pile = "" Then Exit Sub
'Mise à blanc des zones de texte
Genre = Me.pile
Sheets("feuil4").Activate
'recherche du code
If blnvalidRecherche = True Then
Do While objdvd.Cells(lngNBligne, 1) <> ""
If Me.pile.Value = objdvd.Cells(lngNBligne, 2) Then
Sheets("feuil4").Cells(lngNBligne, "A").Value = objdvd.Cells(lngNBligne, 1).Value
Sheets("feuil4").Cells(lngNBligne, "B").Value = objdvd.Cells(lngNBligne, 2).Value
Sheets("feuil4").Cells(lngNBligne, "C").Value = objdvd.Cells(lngNBligne, 3).Value
Sheets("feuil4").Cells(lngNBligne, "D").Value = objdvd.Cells(lngNBligne, 4).Value
Sheets("feuil4").Cells(lngNBligne, "E").Value = objdvd.Cells(lngNBligne, 5).Value
Sheets("feuil4").Cells(lngNBligne, "F").Value = objdvd.Cells(lngNBligne, 6).Value
Sheets("feuil4").Cells(lngNBligne, "G").Value = objdvd.Cells(lngNBligne, 7).Value
Sheets("feuil4").Cells(lngNBligne, "H").Value = objdvd.Cells(lngNBligne, 8).Value
Sheets("feuil4").Cells(lngNBligne, "I").Value = objdvd.Cells(lngNBligne, 9).Value
Sheets("feuil4").Cells(lngNBligne, "J").Value = objdvd.Cells(lngNBligne, 10).Value
Sheets("feuil4").Cells(lngNBligne, "K").Value = objdvd.Cells(lngNBligne, 11).Value
Sheets("feuil4").Cells(lngNBligne, "L").Value = objdvd.Cells(lngNBligne, 12).Value
Sheets("feuil4").Cells(lngNBligne, "M").Value = objdvd.Cells(lngNBligne, 13).Value
Sheets("feuil4").Cells(lngNBligne, "N").Value = objdvd.Cells(lngNBligne, 14).Value
End If
Let lngNBligne = lngNBligne + 1
Loop
End If
Dim sel As Variant
Set sel = Sheets("feuil4").Cells.Find(what:=UserForm1.pile.Value)
If Not sel Is Nothing Then
Range("A3:A10000").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Else
MsgBox "vous n'avez pas de donnée de ce code"
Exit Sub

End If

Dim NumDerLigne As Integer
Dim Plagenum As Range
'Détermine le n° de la dernière ligne de la plage
NumDerLigne = Cells(3, 2).End(xlDown).Row
'Définit la plage correspondant à la liste des numero
Set Plagenum = Sheets("feuil4").Range(Cells(3, 2), Cells(NumDerLigne, 2))

'Mise à jour de la liste Choixnum
Choixnum.RowSource = Plagenum.Address

End Sub
Private Sub TextBox1_Change()
End Sub
Private Sub pile_Change()
End Sub
Private Sub TextBox10_Change()
End Sub
Private Sub TextBox11_Change()
End Sub
Private Sub TextBox12_Change()
End Sub
Private Sub TextBox13_Change()
End Sub
Private Sub TextBox14_Change()
End Sub
Private Sub TextBox15_Change()
End Sub
Private Sub TextBox18_Change()
End Sub
Private Sub TextBox19_Change()
End Sub
Private Sub TextBox22_Change()
End Sub
Private Sub TextBox23_Change()
End Sub
Private Sub TextBox24_Change()
End Sub
Private Sub TextBox25_Change()
End Sub
Private Sub TextBox26_Change()
End Sub
Private Sub TextBox27_Change()
End Sub
Private Sub TextBox28_Change()
End Sub

Private Sub TextBox29_Change()

End Sub

Private Sub TextBox30_Change()

End Sub

Private Sub TextBox31_Change()

End Sub

Private Sub TextBox32_Change()

End Sub

Private Sub TextBox33_Change()

End Sub

Private Sub TextBox34_Change()

End Sub

Private Sub TextBox35_Change()

End Sub

Private Sub TextBox38_Change()

End Sub

Private Sub TextBox4_Change()

End Sub

Private Sub TextBox5_Change()

End Sub

Private Sub TextBox6_Change()

End Sub

Private Sub TextBox7_Change()

End Sub

Private Sub TextBox8_Change()

End Sub

Private Sub TextBox9_Change()

End Sub
A voir également:

13 réponses

lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Bonjour,
je voudrai pouvoir faire une recherche depuis les code mais en tapant 852 par exemple il m'affiche toute les lignes
Déjà là je comprend pas, tu n'a qu'une série de textbox et tu affiche toute les lignes ???

Set objdvd = Application.ThisWorkbook.Worksheets.Item("feuil4")
A remplacer par...
Dim objdvd As WorkSheet
Set objdvd = Sheets("Feuil4")

Application.ScreenUpdating = True
Ne sert que si tu doit modifier l'affichage des feuilles de calcul, dans le cas présent... sert à rien, si ce n'est à mettre des lignes de code inutiles.

'si pas de numero entrer
If Me.Choixnum.Value = "" Then

Comme c'est dans l'événement clic du combo, ne sert à rien il y aura toujours une valeur...

If blnvalidRecherche = True Then de ce fait... ne sert à rien.

TextBox31 = objdvd.Cells(NumLigne, 14).Value
Comme il n'y a qu'une seule série de texte... après cette ligne (les textes sont rempli) il faut mettre...
Exit Do

Let n'est pas/plus nécessaire

Call MsgBox("... peu être simplifier par...
MsgBox "...
sans parenthèse

Sheets("feuil4").Cells(lngNBligne, "A").Value = objdvd.Cells(lngNBligne, 1).Value
Sheets("feuil4").Cells(lngNBligne, "B").Value = objdvd.Cells(lngNBligne, 2).Value
Sheets("feuil4").Cells(lngNBligne, "C").Value = objdvd.Cells(lngNBligne, 3).Value
Sheets("feuil4").Cells(lngNBligne, "D").Value = objdvd.Cells(lngNBligne, 4).Value
Sheets("feuil4").Cells(lngNBligne, "E").Value = objdvd.Cells(lngNBligne, 5).Value
Sheets("feuil4").Cells(lngNBligne, "F").Value = objdvd.Cells(lngNBligne, 6).Value
Sheets("feuil4").Cells(lngNBligne, "G").Value = objdvd.Cells(lngNBligne, 7).Value
Sheets("feuil4").Cells(lngNBligne, "H").Value = objdvd.Cells(lngNBligne, 8).Value
Sheets("feuil4").Cells(lngNBligne, "I").Value = objdvd.Cells(lngNBligne, 9).Value
Sheets("feuil4").Cells(lngNBligne, "J").Value = objdvd.Cells(lngNBligne, 10).Value
Sheets("feuil4").Cells(lngNBligne, "K").Value = objdvd.Cells(lngNBligne, 11).Value
Sheets("feuil4").Cells(lngNBligne, "L").Value = objdvd.Cells(lngNBligne, 12).Value
Sheets("feuil4").Cells(lngNBligne, "M").Value = objdvd.Cells(lngNBligne, 13).Value
Sheets("feuil4").Cells(lngNBligne, "N").Value = objdvd.Cells(lngNBligne, 14).Value

peut être remplacer par
For i=1 to 13
Sheets("feuil4").Cells(lngNBligne, i).Value = objdvd.Cells(lngNBligne, i).Value
Next i


Toutes ces remarques ne répondent pas à ta question que je n'ai pas compris.
Je ne vois pas ce que tu veux faire comme recherche, du moins avec les explications données.
Tu dis
A+
0
jaushua Messages postés 18 Statut Membre
 
merci pour c'est conseil que tu m'as donné
je vais tenter de t'expliquer un peu mieux ce que je vodrai faire

dans la textbox "pile " je dois entrer un une valeur cette valeur il cherche dans la colonne demander mais je voudrai pouvoir mettre quelque caractére et remplacer le reste par un asterisque soit au debut ou a la fin de ma valeur rechercher exemple pour chercher "toto" je voudrai pouvoir mettre *ot* ou to* ou encore *to

j'esere que es info sont suffisement clair et que tu pourras me venir en aide
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Encore une petite précision, les 3 exemples que tu donne doivent tous trouver toto ?
0
jaushua Messages postés 18 Statut Membre
 
oui c'est exact
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
essaye en remplacant le code sur ta recherche
'recherche du code
Dim Lg As Integer
Dim Txt As String
    If blnvalidRecherche = True Then
        Lg = Len(pile)
        Do While objdvd.Cells(lngNBligne, 1) <> ""
            Txt = objdvd.Cells(lngNBligne, 2)
            For i = 1 To Len(Txt) - Lg + 1
                If Mid(Txt, i, Lg) = pile Then
                    For e = 1 To 13
                        Sheets("feuil4").Cells(lngNBligne, e) = objdvd.Cells(lngNBligne, e)
                    Next e
                    Exit Do
                End If
            Next i
            lngNBligne = lngNBligne + 1
        Loop
    End If

J'ai pas tester, je n'ai pas de donnée pour.
Il ne faut pas d'atérix, tu tape seulement ot, to ou tot etc...
A+
0
jaushua Messages postés 18 Statut Membre
 
ok je test et je te tien au courant

merci pour ton boulot c'est super sympa
0
jaushua Messages postés 18 Statut Membre
 
j'ai mis en application ton code mais il ne me donne que la derniere ligne qu'il verifie les autres lignes ne sont pas afficher
0
jaushua Messages postés 18 Statut Membre
 
non ca ne fonctionne pas désolé
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
J'ai mis en application ton code mais il ne me donne que la derniere ligne qu'il verifie les autres lignes ne sont pas afficher
Bien sûr qu'il n'affiche qu'une seule fois !!!!
Depuis le début je te demande COMMENT AFFICHER PLUSIEURS LIGNES DANS UNE SEULE SERIE DE TEXTBOX ??????????
0
jaushua Messages postés 18 Statut Membre
 
non je n'affiche pas plusieurs lignes dans une textbox
je vais essayer de m'expliquer mieux

dans un textbox je tape un mot exemple :avion
je clic sur le bouton rechercher
il va dans la feuil2 colonne 2 et recherche le mot demander a chaque fois qu'il trouve le mot il copie la ligne dans la feuil4
une fois qu'il a parcouru toute la base il va dans la feuille4 supprime les lignes vide qui pourrait etre intercallé entre chaque ligne qu'il vient de copié
et il affiche dans un list box toute la colonne 2 de la feuil4 (exemple si dans la feuil2 j'ai la ligne 4,6,8 et 10 qui comportent chaqu'une d'elle le mot avion dans la colonne2 il copie les 4 ligne dans la feuil4 uis supprime le ligne vide et met dans le listbox 4x le mot avion"
quand je clique dans la listbox sur le 2em mot avion il m'affiche dans chaque textbox les info prise dans chaque cellule de la ligne 6 qui est la 2em fois qu'il a trouver le mot avion

je vais voir pour mettre monfichier en telechargement et donner le lien si tu veux voir
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
J'ai un peu mieux compris, j'ai rectifier le code pour que...
Travail sur une partie de mot, soit pour toto, trouvera la ligne avec ot, to, etc..
Copie toutes les lignes trouvées sur la feuille 4 l'une en dessous de l'autre (sans ligne vide)
'recherche du code
Dim Lg As Integer
Dim Txt As String
Dim LigCopie As Long
    Application.ScreenUpdating = False
    Sheet("Feuil4").Cells.ClearContents
    If blnvalidRecherche = True Then
        Lg = Len(pile)
        Do While objdvd.Cells(lngNBligne, 1) <> ""
            Txt = objdvd.Cells(lngNBligne, 2)
            For i = 1 To Len(Txt) - Lg + 1
                If Mid(Txt, i, Lg) = pile Then
                    LigCopie = LigCopie + 1
                    For e = 1 To 13
                        Sheets("feuil4").Cells(LigCopie, e) = objdvd.Cells(lngNBligne, e)
                    Next e
                End If
            Next i
            lngNBligne = lngNBligne + 1
        Loop
    End If
    Application.ScreenUpdating = True

Tu dis...
0
jaushua Messages postés 18 Statut Membre
 
super ca marche nickel je te remercie du fond du coeur
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Bonsoir jaushua,

Pense à mettre en résolu les fils qui le sont, ça nous évitera de lire 12 posts pour voir que c'est fini...
Merci
eric
0