OVH Cloud OVH Cloud

madro avec find

3 réponses
Avatar
nicolas S
Bonjour,
J'ai un problème avec l'utilisation de find dans le code suivant:

Private Sub origiTB_Change()

Dim re
re = origiTB
On Error GoTo fin

With Worksheets(1).Range("c3:c6000")
Set c = .Find(re, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
nomlaboTB = c.Value
Set c = .FindNext(c)
End If
End With

fin:
End Sub


Les cellules ont pour valeur:

sanofi
BMS
Omega
optipharm
aspta
sanofi
pierre fabre klorane
eurodep
merck gé
dépots généraux
expancience
optipharm
ducray
abbott
dactyl buro
thuasne
cooper
arkopharma
schering
cat cosne
cognon
......etc

Je souhaite que à chaque frappe dans origiTB s'affiche dans nomlaboTB le
premier nom de la liste commençant par les lettres de origiTB.

Le problème est que par exemple quand origiTB a pour valeur "me" nomlaboTB
prend la valeur Omega qui contient "me" au milieu mais pas au début.

Comment y remédier, ou existe-il une autre méthode.



Merci de vos conseils

3 réponses

Avatar
Daniel
Bonjour.
Essaie :
Set c = .Find(re & "*", LookIn:=xlValues, lookat:=xlwhole)
(j'ai pas bien compris le reste de ton code; pourquoi FindNext ?)
Cordialement.
Daniel
"nicolas S" a écrit dans le message de news:
dt4ia1$13$
Bonjour,
J'ai un problème avec l'utilisation de find dans le code suivant:

Private Sub origiTB_Change()

Dim re
re = origiTB
On Error GoTo fin

With Worksheets(1).Range("c3:c6000")
Set c = .Find(re, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
nomlaboTB = c.Value
Set c = .FindNext(c)
End If
End With

fin:
End Sub


Les cellules ont pour valeur:

sanofi
BMS
Omega
optipharm
aspta
sanofi
pierre fabre klorane
eurodep
merck gé
dépots généraux
expancience
optipharm
ducray
abbott
dactyl buro
thuasne
cooper
arkopharma
schering
cat cosne
cognon
......etc

Je souhaite que à chaque frappe dans origiTB s'affiche dans nomlaboTB le
premier nom de la liste commençant par les lettres de origiTB.

Le problème est que par exemple quand origiTB a pour valeur "me" nomlaboTB
prend la valeur Omega qui contient "me" au milieu mais pas au début.

Comment y remédier, ou existe-il une autre méthode.



Merci de vos conseils








Avatar
JB
Bonjour,

Sub Macro1()
re = "me"
trouvé = False
With Worksheets(1).Range("c31:c500")
Set c = .Find(re, LookIn:=xlValues, LookAt:=xlPart)
If Not c Is Nothing Then
firstAddress = c.Address
Do
If Left(c.Value, Len(re)) = re Then temp = c.Value:
trouvé = True
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
And Not trouvé
End If
If trouvé Then MsgBox temp
End With
End Sub

JB
Avatar
nicolas S
Merci de votre aide, j'ai appliqué la solution de Daniel.

J'aurais du supprimer FindNext qui fait parti du code copier dans l'aide
EXCEL



nicolas



"nicolas S" a écrit dans le message de news:
dt4ia1$13$
Bonjour,
J'ai un problème avec l'utilisation de find dans le code suivant:

Private Sub origiTB_Change()

Dim re
re = origiTB
On Error GoTo fin

With Worksheets(1).Range("c3:c6000")
Set c = .Find(re, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
nomlaboTB = c.Value
Set c = .FindNext(c)
End If
End With

fin:
End Sub


Les cellules ont pour valeur:

sanofi
BMS
Omega
optipharm
aspta
sanofi
pierre fabre klorane
eurodep
merck gé
dépots généraux
expancience
optipharm
ducray
abbott
dactyl buro
thuasne
cooper
arkopharma
schering
cat cosne
cognon
......etc

Je souhaite que à chaque frappe dans origiTB s'affiche dans nomlaboTB le
premier nom de la liste commençant par les lettres de origiTB.

Le problème est que par exemple quand origiTB a pour valeur "me" nomlaboTB
prend la valeur Omega qui contient "me" au milieu mais pas au début.

Comment y remédier, ou existe-il une autre méthode.



Merci de vos conseils