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

Rechercher du texte dans une plage de données

16 réponses
Avatar
JP
Bonjour,

J'ai une ligne avec des adresses. Chaque adresse est compos=E9 d'un nom, d'=
une rue, d'un code postal et d'une ville. Une adresse compl=E8te par cellul=
e et sur trois lignes.
je recherche un code qui permettrait de rechercher tout ou partie d'adresse=
.

Exemple:
j'ai une adresse comme celle l=E0:

Jean MARTIN
12, rue des oliviers
75000 PARIS

Je lance la recherche sur "PARIS", je voudrai pouvoir rep=E9rer toutes les =
adresses contant le terme recherch=E9.

Je pense que c'est fastidieux.

Auriez-vous un code qui fasse ce travail?

Merciiii d'avance.

JP

6 réponses

1 2
Avatar
MichD
Essaie comme ceci :


'Déclaration des variables dans le haut du formualaire
Dim LastAdr As String
Dim X As Variant
Dim Debut As String

'-------------------------------------------
Sub Nouvelle_Recherche()

Dim Trouve As Range
Dim Adr As String

LastAdr = "": X = ""

Sheets("PFMP").Activate
X = Application.InputBox(Prompt:="Valeur recherchée.", Type:=3)
If X = False Then Exit Sub
Call Recherche(X)
End Sub

'-------------------------------------------
Sub Touver_La_Prochaine_Valeur()
Sheets("PFMP").Activate
Call Recherche(X)
End Sub

'-------------------------------------------
Sub Recherche(Expression As Variant)
Dim X As Variant, Trouve As Range

Sheets("PFMP").Range("C3:DC3")
If LastAdr = "" Then LastAdr = "A1"
Set Trouve = .Find(what:=Expression, After:=.Range(LastAdr),
LookIn:=xlValues, lookat:=xlPart, SearchDirection:=xlNext,
SearchOrder:=xlByColumns)
If Not Trouve Is Nothing Then
If LastAdr = "A1" Then
Debut = Trouve.Address
End If
Trouve.Select
If LastAdr <> "A1" And Debut = Trouve.Address Then
MsgBox "Nous sommes revenus au point de départ."
End If
LastAdr = Trouve.Address
End If
End With
End Sub
'-------------------------------------------


MichD
---------------------------------------------------------------
Avatar
JP
Le fait de supprimer des with ... End with génère des erreurs de compil ation.
En supprimant les "." rien ne change, l'erreur de compilation est toujours là.

J'ai donc remis le code précédent en place pour le moment.


JP
Avatar
MichD
Dim LastAdr As String
Dim X As Variant
Dim Debut As String

'-------------------------------------------
Sub Nouvelle_Recherche()

Dim Trouve As Range
Dim Adr As String

LastAdr = "": X = ""

'Sheets("PFMP").Activate

Sheets("Feuil1").Activate
X = Application.InputBox(Prompt:="Valeur recherchée.", Type:=3)
If X = False Then Exit Sub
Call Recherche(X)
End Sub

'-------------------------------------------
Sub Touver_La_Prochaine_Valeur()
Sheets("PFMP").Activate
Call Recherche(X)
End Sub

'-------------------------------------------
Sub Recherche(Expression As Variant)
Dim X As Variant, Trouve As Range

With Sheets("PFMP").Range("C3:DC3")
If LastAdr = "" Then LastAdr = "A1"
Set Trouve = .Find(what:=Expression, _
After:=.Range(LastAdr), _
LookIn:=xlValues, lookat:=xlPart, _
SearchDirection:=xlNext, SearchOrder:=xlByColumns)

If Not Trouve Is Nothing Then
If LastAdr = "A1" Then
Debut = Trouve.Address
End If
Trouve.Select
If LastAdr <> "A1" And Debut = Trouve.Address Then
MsgBox "Nous sommes revenus au point de départ."
End If
LastAdr = Trouve.Address
End If
End With
End Sub
'-------------------------------------------


MichD
---------------------------------------------------------------
Avatar
JP
Denis,

Erreur d'exécution '13'
Incompatibilité de type

Trouve a pour valeur "Nothing" dans:

Set Trouve = .Find(what:=Expression, After:=.Range(LastAdr), Look In:=xlValues, lookat:=xlPart, SearchDirection:=xlNext, SearchOrder: =xlByColumns)

Peut-être que cette information te guidera. Le plantage est toujours au m ême endroit. Il se produit quand je recherche l'occurrence suivante.

JP
Avatar
MichD
Fichier exemple : http://cjoint.com/?CJFsXNS1ccn


MichD
---------------------------------------------------------------
Avatar
JP
Bonsoir Denis,

Ca marche!
Deux remarques:
Initialement tu m'avais dit de mettre tout le code dans l'userform. C'est c e que j'avais fait.
La ligne set trouve =... etc était sur une seule ligne alors que là e lle est sur trois lignes.

Ce sont les seules différences que je vois.

En tout cas merci pour le temps que tu m'as consacré.

Cordialement

JP
1 2