Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Recherche sur plusieurs critères

4 réponses
Avatar
-- RG --
bonjour ,
J'ai une colonne dans une feuille excel, a partir de cette colonne je repli
un listbox
selon le critere que j'ai saisie dans un textBox
avec le code ci dessous , cela fonctionne
Le problème est que le résultat ne contient que l'expression du critere
je voudrais dans le listbox les cellules accentuées ou non

Exemple avec le critère :"etuve"
dans mon lisbox , je veux toutes les cellules qui contiennent
etuve ,étuve ,ètuve ou ëtuve

Mon code

txtCritere > textbox pour la saisie du critere
lst Resultat listbox contient le résultat de la recheche


Private Sub btnRechercher_Click()
Dim c
Dim premier
If txtCritere.Value = "" Then
MsgBox "Vous devez saisir un critère !."
Else

lstResultat.Clear
Set c = Range("O:O").Find(Me.txtCritere.Value, LookIn:=xlValues)
If Not c Is Nothing Then
premier = c.Address
intI = 0
Do
With lstResultat
.AddItem
.List(intI, 1) = c.Value
.List(intI, 0) = c.Offset(0, -1).Value
Set c = Range("O:O").FindNext(c)
intI = intI + 1
End With
Loop While Not c Is Nothing And c.Address <> premier
End If
End If
lblNbElement = intI & " élements trouvés."
End Sub

Si vous avez une idee
Merci René

4 réponses

Avatar
JB
Bonsoir,

Une solution simple si la liste n'est pas trop longue:

i = 0
Me.ListBox1.Clear
For Each c In Range([O2], [O65000].End(xlUp))
If SansAccent(c.Offset(0, 2)) = SansAccent(Me.txtCritere) Then
Me.ListBox1.AddItem
Me.ListBox1.List(i, 0) = c.Value
Me.ListBox1.List(i, 1) = c.Offset(0, 1).Value
i = i + 1
End If
Next c

Function sansAccent(chaine)
codeA = "ÉÈÊËÔéèêëàçùôûïî"
codeB = "eeeeoeeeeacuouii"
temp = chaine
For i = 1 To Len(temp)
p = InStr(codeA, Mid(temp, i, 1))
If p > 0 Then Mid(temp, i, 1) = Mid(codeB, p, 1)
Next
sansAccent = temp
End Function

Cordialement JB


On 10 fév, 17:50, -- RG -- wrote:
bonjour ,
J'ai une colonne dans une feuille excel, a partir de cette colonne je rep li
un listbox
selon le critere que j'ai saisie dans un textBox
avec le code ci dessous , cela fonctionne
Le problème est que le résultat ne contient que l'expression du crite re
je voudrais dans le listbox les cellules accentuées ou non

Exemple avec le critère :"etuve"
dans mon lisbox , je veux toutes les cellules qui contiennent
etuve ,étuve ,ètuve ou ëtuve

Mon code

txtCritere > textbox pour la saisie du critere
lst Resultat listbox contient le résultat de la recheche

Private Sub btnRechercher_Click()
Dim c
Dim premier
If txtCritere.Value = "" Then
MsgBox "Vous devez saisir un critère !."
Else

lstResultat.Clear
Set c = Range("O:O").Find(Me.txtCritere.Value, LookIn:=xlValu es)
If Not c Is Nothing Then
premier = c.Address
intI = 0
Do
With lstResultat
.AddItem
.List(intI, 1) = c.Value
.List(intI, 0) = c.Offset(0, -1).Value
Set c = Range("O:O").FindNext(c)
intI = intI + 1
End With
Loop While Not c Is Nothing And c.Address <> premier
End If
End If
lblNbElement = intI & " élements trouvés."
End Sub

Si vous avez une idee
Merci René


Avatar
-- RG --
bonjour,
Pour l'instant je n'ai pas le temps de faire un essai
avec ton code
par contre je ne comprends pas pourquoi tu supprimes les
accents avec ta fonction 'SansAccent' ?

Merci d'avoir répondu

René



Bonsoir,

Une solution simple si la liste n'est pas trop longue:

i = 0
Me.ListBox1.Clear
For Each c In Range([O2], [O65000].End(xlUp))
If SansAccent(c.Offset(0, 2)) = SansAccent(Me.txtCritere) Then
Me.ListBox1.AddItem
Me.ListBox1.List(i, 0) = c.Value
Me.ListBox1.List(i, 1) = c.Offset(0, 1).Value
i = i + 1
End If
Next c

Function sansAccent(chaine)
codeA = "ÉÈÊËÔéèêëàçùôûïî"
codeB = "eeeeoeeeeacuouii"
temp = chaine
For i = 1 To Len(temp)
p = InStr(codeA, Mid(temp, i, 1))
If p > 0 Then Mid(temp, i, 1) = Mid(codeB, p, 1)
Next
sansAccent = temp
End Function

Cordialement JB


On 10 fév, 17:50, -- RG -- wrote:
bonjour ,
J'ai une colonne dans une feuille excel, a partir de cette colonne je repli
un listbox
selon le critere que j'ai saisie dans un textBox
avec le code ci dessous , cela fonctionne
Le problème est que le résultat ne contient que l'expression du critere
je voudrais dans le listbox les cellules accentuées ou non

Exemple avec le critère :"etuve"
dans mon lisbox , je veux toutes les cellules qui contiennent
etuve ,étuve ,ètuve ou ëtuve

Mon code

txtCritere > textbox pour la saisie du critere
lst Resultat listbox contient le résultat de la recheche

Private Sub btnRechercher_Click()
Dim c
Dim premier
If txtCritere.Value = "" Then
MsgBox "Vous devez saisir un critère !."
Else

lstResultat.Clear
Set c = Range("O:O").Find(Me.txtCritere.Value, LookIn:=xlValues)
If Not c Is Nothing Then
premier = c.Address
intI = 0
Do
With lstResultat
.AddItem
.List(intI, 1) = c.Value
.List(intI, 0) = c.Offset(0, -1).Value
Set c = Range("O:O").FindNext(c)
intI = intI + 1
End With
Loop While Not c Is Nothing And c.Address <> premier
End If
End If
lblNbElement = intI & " élements trouvés."
End Sub

Si vous avez une idee
Merci René







Avatar
JB
Bonjour,

Solution rapide:

http://cjoint.com/?cln2hFm6GI

Private Sub CommandButton1_Click()
If txtCritere.Value = "" Then
MsgBox "Vous devez saisir un critère !."
Else
lstResultat.Clear
Set c = Range("O:O").Find(Rmp(Me.txtCritere),
LookIn:=xlValues)
If Not c Is Nothing Then
premier = c.Address
Inti = 0
Do
If sansAccent(Me.txtCritere) = sansAccent(c) Then
Me.lstResultat.AddItem
Me.lstResultat.List(Inti, 0) = c.Value
Inti = Inti + 1
End If
Set c = Range("O:O").FindNext(c)
Loop While Not c Is Nothing And c.Address <> premier
End If
End If
End Sub

Function Rmp(chaine)
codeA = "ÉÈÊËÔéèêëàçùôûïîeouci"
codeB = "*********************"
temp = chaine
For i = 1 To Len(temp)
p = InStr(codeA, Mid(temp, i, 1))
If p > 0 Then Mid(temp, i, 1) = Mid(codeB, p, 1)
Next
Rmp = temp
End Function

Function sansAccent(chaine)
codeA = "ÉÈÊËÔéèêëàçùôûïî"
codeB = "EEEEOeeeeacuouii"
temp = chaine
For i = 1 To Len(temp)
p = InStr(codeA, Mid(temp, i, 1))
If p > 0 Then Mid(temp, i, 1) = Mid(codeB, p, 1)
Next
sansAccent = temp
End Function

JB



On 11 fév, 10:00, -- RG -- wrote:
bonjour,
Pour l'instant je n'ai pas le temps de faire un essai
avec ton code
par contre je ne comprends pas pourquoi tu supprimes les
accents avec ta fonction 'SansAccent' ?

Merci d'avoir répondu

René




Bonsoir,

Une solution simple si la liste n'est pas trop longue:

i = 0
Me.ListBox1.Clear
For Each c In Range([O2], [O65000].End(xlUp))
If SansAccent(c.Offset(0, 2)) = SansAccent(Me.txtCritere) Then
Me.ListBox1.AddItem
Me.ListBox1.List(i, 0) = c.Value
Me.ListBox1.List(i, 1) = c.Offset(0, 1).Value
i = i + 1
End If
Next c

Function sansAccent(chaine)
codeA = "ÉÈÊËÔéèêëàçùôûïî"
codeB = "eeeeoeeeeacuouii"
temp = chaine
For i = 1 To Len(temp)
p = InStr(codeA, Mid(temp, i, 1))
If p > 0 Then Mid(temp, i, 1) = Mid(codeB, p, 1)
Next
sansAccent = temp
End Function

Cordialement JB

On 10 fév, 17:50, -- RG -- wrote:
bonjour ,
J'ai une colonne dans une feuille excel, a partir de cette colonne je repli
un listbox
selon le critere que j'ai saisie dans un textBox
avec le code ci dessous , cela fonctionne
Le problème est que le résultat ne contient que l'expression du c ritere
je voudrais dans le listbox les cellules accentuées ou non

Exemple avec le critère :"etuve"
dans mon lisbox , je veux toutes les cellules qui contiennent
etuve ,étuve ,ètuve ou ëtuve

Mon code

txtCritere > textbox pour la saisie du critere
lst Resultat listbox contient le résultat de la recheche

Private Sub btnRechercher_Click()
Dim c
Dim premier
If txtCritere.Value = "" Then
MsgBox "Vous devez saisir un critère !."
Else

lstResultat.Clear
Set c = Range("O:O").Find(Me.txtCritere.Value, LookIn:=xl Values)
If Not c Is Nothing Then
premier = c.Address
intI = 0
Do
With lstResultat
.AddItem
.List(intI, 1) = c.Value
.List(intI, 0) = c.Offset(0, -1).Value
Set c = Range("O:O").FindNext(c)
intI = intI + 1
End With
Loop While Not c Is Nothing And c.Address <> premier
End If
End If
lblNbElement = intI & " élements trouvés."
End Sub

Si vous avez une idee
Merci René- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -




Avatar
JB
On 11 fév, 10:00, -- RG -- wrote:
bonjour,
Pour l'instant je n'ai pas le temps de faire un essai
avec ton code
par contre je ne comprends pas pourquoi tu supprimes les
accents avec ta fonction 'SansAccent' ?

Merci d'avoir répondu

René




Bonsoir,

Une solution simple si la liste n'est pas trop longue:

i = 0
Me.ListBox1.Clear
For Each c In Range([O2], [O65000].End(xlUp))
If SansAccent(c.Offset(0, 2)) = SansAccent(Me.txtCritere) Then
Me.ListBox1.AddItem
Me.ListBox1.List(i, 0) = c.Value
Me.ListBox1.List(i, 1) = c.Offset(0, 1).Value
i = i + 1
End If
Next c

Function sansAccent(chaine)
codeA = "ÉÈÊËÔéèêëàçùôûïî"
codeB = "eeeeoeeeeacuouii"
temp = chaine
For i = 1 To Len(temp)
p = InStr(codeA, Mid(temp, i, 1))
If p > 0 Then Mid(temp, i, 1) = Mid(codeB, p, 1)
Next
sansAccent = temp
End Function

CordialementJB

On 10 fév, 17:50, -- RG -- wrote:
bonjour ,
J'ai une colonne dans une feuille excel, a partir de cette colonne je repli
un listbox
selon le critere que j'ai saisie dans un textBox
avec le code ci dessous , cela fonctionne
Le problème est que le résultat ne contient que l'expression du c ritere
je voudrais dans le listbox les cellules accentuées ou non

Exemple avec le critère :"etuve"
dans mon lisbox , je veux toutes les cellules qui contiennent
etuve ,étuve ,ètuve ou ëtuve

Mon code

txtCritere > textbox pour la saisie du critere
lst Resultat listbox contient le résultat de la recheche

Private Sub btnRechercher_Click()
Dim c
Dim premier
If txtCritere.Value = "" Then
MsgBox "Vous devez saisir un critère !."
Else

lstResultat.Clear
Set c = Range("O:O").Find(Me.txtCritere.Value, LookIn:=xl Values)
If Not c Is Nothing Then
premier = c.Address
intI = 0
Do
With lstResultat
.AddItem
.List(intI, 1) = c.Value
.List(intI, 0) = c.Offset(0, -1).Value
Set c = Range("O:O").FindNext(c)
intI = intI + 1
End With
Loop While Not c Is Nothing And c.Address <> premier
End If
End If
lblNbElement = intI & " élements trouvés."
End Sub

Si vous avez une idee
Merci René- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -


http://boisgontierj.free.fr/pages_site/RechercheAccent.htm

JB