OVH Cloud OVH Cloud

Qui pourrait m'aider a automatiser une recherche?

3 réponses
Avatar
O J
Bonjour,

Je souhaiterais pouvoir analyser de façon répétitive la présence de mots
clés contenus dans un fichier EXCEL A figé (sous forme d'une liste) dans un
fichier EXCEL B qui contient une liste d'expressions textuelles.

Je pense automatiser la recherche en prenant un à un les mots clés contenus
dans le fichier A et en utilisant la fonction rechercher dans le fichier B.
Si le mot clé est contenu dans la chaine de caractère, placer une valeur à 1
dans la colonne à coté de la chaine de caractères, sinon continuer...

Qui pourrait m'aider a construire cette automatisation???

Un grand merci d'avance!!!


Exemple:

Fichier A de mots clés
immeuble
maison
voiture



Fichier B d'expressions textuelles
l'immeuble est situé en ville
un accident de voiture
la caravane passe sous l'immeuble
la voiture rouge



Le résultat serait le fichier B modifié de la façon suivante:
l'immeuble est situé en ville 1
un accident de voiture 1
La caravane passe 0
la voiture passe sous l'immeuble 1
la voiture rouge 1
Les fraises sont bonnes 0

3 réponses

Avatar
FxM
Fichier A de mots clés
immeuble
maison
voiture

Fichier B d'expressions textuelles
l'immeuble est situé en ville
un accident de voiture
la caravane passe sous l'immeuble
la voiture rouge

Le résultat serait le fichier B modifié de la façon suivante:
l'immeuble est situé en ville 1
un accident de voiture 1
La caravane passe 0
la voiture passe sous l'immeuble 1
la voiture rouge 1
Les fraises sont bonnes 0


Bonjour,

Un exemple non testé dont tu peux t'inspirer :
- double boucle a et b
- recherche de concordance par instr à partir d'Excel 2000

Sub test()
for each a in workbooks("A").range("Liste")
for each b in workbooks("B").range("phrases")
if instr(1,b,a)>0 then
Workbboks("B").range(b.address).offset(0,1)="1"
end if
next b
next a
end sub

@+
FxM

Avatar
AV
Sous réserve que les 2 fichiers "A" et "B" soient ouverts et avec plages nommées
:

Sub zz_Vérif2()
For Each c1 In Range("B.xls!Phrases")
For Each c2 In Range("A.xls!Mots"): x = Chr(34)
z = Evaluate("isnumber(search(" & x & c2 & x & ", " & x & [c1] & x &
"))")
c1.Range("B1") = Abs(z): If Abs(z) = 1 Then Exit For
Next c2
Next c1
End Sub

AV

"O J" a écrit dans le message news:
3f228447$0$1807$
Bonjour,

Je souhaiterais pouvoir analyser de façon répétitive la présence de mots
clés contenus dans un fichier EXCEL A figé (sous forme d'une liste) dans un
fichier EXCEL B qui contient une liste d'expressions textuelles.

Je pense automatiser la recherche en prenant un à un les mots clés contenus
dans le fichier A et en utilisant la fonction rechercher dans le fichier B.
Si le mot clé est contenu dans la chaine de caractère, placer une valeur à 1
dans la colonne à coté de la chaine de caractères, sinon continuer...

Qui pourrait m'aider a construire cette automatisation???

Un grand merci d'avance!!!


Exemple:

Fichier A de mots clés
immeuble
maison
voiture



Fichier B d'expressions textuelles
l'immeuble est situé en ville
un accident de voiture
la caravane passe sous l'immeuble
la voiture rouge



Le résultat serait le fichier B modifié de la façon suivante:
l'immeuble est situé en ville 1
un accident de voiture 1
La caravane passe 0
la voiture passe sous l'immeuble 1
la voiture rouge 1
Les fraises sont bonnes 0





Avatar
Daniel.M
Bonjour,

Une autre manière qui enlève une boucle explicite.

Sub Macro1()
Dim s$
s = "A.xls!Mots"
With Range("Phrases").Offset(0, 1)
.Item(1, 1).FormulaArray = "=N(OR(ISNUMBER(SEARCH(" & s & ",RC[-1]))))"
.Item(1, 1).AutoFill Destination:=.Offset(0, 0)
.Value = .Value
End With
End Sub

Salutations,

Daniel M.

"O J" wrote in message
news:3f230559$0$22126$
"FxM" a écrit dans le message de
news:
Fichier A de mots clés
immeuble
maison
voiture

Fichier B d'expressions textuelles
l'immeuble est situé en ville
un accident de voiture
la caravane passe sous l'immeuble
la voiture rouge

Le résultat serait le fichier B modifié de la façon suivante:
l'immeuble est situé en ville 1
un accident de voiture 1
La caravane passe 0
la voiture passe sous l'immeuble 1
la voiture rouge 1
Les fraises sont bonnes 0


Bonjour,

Un exemple non testé dont tu peux t'inspirer :
- double boucle a et b
- recherche de concordance par instr à partir d'Excel 2000

Sub test()
for each a in workbooks("A").range("Liste")
for each b in workbooks("B").range("phrases")
if instr(1,b,a)>0 then
Workbboks("B").range(b.address).offset(0,1)="1"
end if
next b
next a
end sub

@+
FxM



Merci pour votre réponse,

J'arrive en effet à mon objectif!
Juste un point pour optimiser les boucles, car les calculs sont très
longs...
Pourrait-on utiliser la fonction rechercher qui s'applique sur toute la
feuille, plutot que la fonction instr qui doit s'appliquer ligne par
ligne... Dans ce cas quelle modification apporter au code? Peut être
avez-vous une meilleur proposition que la fonction rechercher?

Encore une fois, merci pour votre aide ;-))