OVH Cloud OVH Cloud

recherche

2 réponses
Avatar
Pierre52
salut à toutes et tous,

j'ai cette macro qui effectue une recherche de chaine de caractères à
l'aide d'un userform.

mais dans mon tableau j'ai de temps en temps la même valeur sur la même
ligne et là ma macro me compte 2(normal):je voudrai qu'elle ne compte que 1.

les occurences recherchées sont en colonnesfusionnées D/E et I/J

merci de vos réponses

Sub Recherche()
Dim Fe As Worksheet
Dim Plg As Range
Dim Cel As Range
Dim Adr As String
Dim I As Integer
Dim Chaine As String
Chaine = UserForm3.TextBox1.Value
For Each Fe In Worksheets
With Fe
Set Plg = .UsedRange
End With
Set Cel = Plg.Find(Chaine, , xlValues)
If Not Cel Is Nothing Then
Adr = Cel.Address
Do
I = I + 1
Set Cel = Plg.FindNext(Cel)
Loop While Cel.Address <> Adr
End If
Next Fe
UserForm3.TextBox2.Value = I
Set Cel = Nothing
Set Plg = Nothing
Set Fe = Nothing
End Sub

2 réponses

Avatar
Daniel
Bonjour.
Si j'ai bien compris, remplace :
I = I + 1
par :

Dim Resligne As Integer

If Resligne <> Cel.Row Then
I = I + 1
Resligne = Cel.Row
End If

Cordialement.
Daniel
"Pierre52" a écrit dans le message de news:
%
salut à toutes et tous,

j'ai cette macro qui effectue une recherche de chaine de caractères à
l'aide d'un userform.

mais dans mon tableau j'ai de temps en temps la même valeur sur la même
ligne et là ma macro me compte 2(normal):je voudrai qu'elle ne compte que
1.

les occurences recherchées sont en colonnesfusionnées D/E et I/J

merci de vos réponses

Sub Recherche()
Dim Fe As Worksheet
Dim Plg As Range
Dim Cel As Range
Dim Adr As String
Dim I As Integer
Dim Chaine As String
Chaine = UserForm3.TextBox1.Value
For Each Fe In Worksheets
With Fe
Set Plg = .UsedRange
End With
Set Cel = Plg.Find(Chaine, , xlValues)
If Not Cel Is Nothing Then
Adr = Cel.Address
Do
I = I + 1
Set Cel = Plg.FindNext(Cel)
Loop While Cel.Address <> Adr
End If
Next Fe
UserForm3.TextBox2.Value = I
Set Cel = Nothing
Set Plg = Nothing
Set Fe = Nothing
End Sub


Avatar
Pierre52
merci beaucoup cela fonctionne
mais je voudrais savoir pourquoi mon post se retrouve là car j'ai voulu
ouvrir un nouveau fil

Bonjour.
Si j'ai bien compris, remplace :
I = I + 1
par :

Dim Resligne As Integer

If Resligne <> Cel.Row Then
I = I + 1
Resligne = Cel.Row
End If

Cordialement.
Daniel
"Pierre52" a écrit dans le message de news:
%

salut à toutes et tous,

j'ai cette macro qui effectue une recherche de chaine de caractères à
l'aide d'un userform.

mais dans mon tableau j'ai de temps en temps la même valeur sur la même
ligne et là ma macro me compte 2(normal):je voudrai qu'elle ne compte que
1.

les occurences recherchées sont en colonnesfusionnées D/E et I/J

merci de vos réponses

Sub Recherche()
Dim Fe As Worksheet
Dim Plg As Range
Dim Cel As Range
Dim Adr As String
Dim I As Integer
Dim Chaine As String
Chaine = UserForm3.TextBox1.Value
For Each Fe In Worksheets
With Fe
Set Plg = .UsedRange
End With
Set Cel = Plg.Find(Chaine, , xlValues)
If Not Cel Is Nothing Then
Adr = Cel.Address
Do
I = I + 1
Set Cel = Plg.FindNext(Cel)
Loop While Cel.Address <> Adr
End If
Next Fe
UserForm3.TextBox2.Value = I
Set Cel = Nothing
Set Plg = Nothing
Set Fe = Nothing
End Sub