recherche de chaînes de caractères

jcddgl

XLDnaute Nouveau
Bonjour,

J'utilise une macro pour rechercher dans une feuille certaines chaînes de caractères, et lorsqu'elles sont trouvées, je peux attribuer un nom à une cellule proche.

Ca marche très bien excepté que la chaîne doit se trouver dans la feuille sinon ERREUR.
Comment faire pour résoudre ce problème.

J'ai également une seconde question: si je double ma condition, c'est à dire si je recherche chaine1 lorsqu'elle est située dans la cellule au-dessus de chaine2 (et non pas lorsqu'elle est suivie de chaine3) comment "by-passer" chaine1 suivi de chaine3 de manière à continuer la recherche dans le fichier jusqu'à tomber sur chaine1 et chaine 2 en-dessous.

Exemple.
Dim c As Range
'
Set c = Cells.Find(What:="chaine_1", After:=ActiveCell, LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
ActiveWorkbook.Names.Add Name:="chaine_1", RefersToR1C1:=c.Offset(0, 1)
ActiveWorkbook.Names.Add Name:="param_1", RefersToR1C1:=c.Offset(0, 2)
ActiveWorkbook.Names.Add Name:="param_2", RefersToR1C1:=c.Offset(1, 3)
'
Set c = Cells.Find(What:="chaine_2", After:=ActiveCell, LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
ActiveWorkbook.Names.Add Name:="chaine_2", RefersToR1C1:=c.Offset(0, 1)
ActiveWorkbook.Names.Add Name:="param_21", RefersToR1C1:=c.Offset(2, 4)

'
' de cette façon, je peux lire une feuille excel que je reçois par ailleurs
' mais dont je ne connais pas ce qu'il y a dedans. Lorsque les chaines de caractères
' que je recherche s'y trouvent (par exemple "chaine_1"), j'attribue à la cellule ou sa voisine ou la suivante
' un nom
' ce nom me permet alors de comparer la valeur des cellules avec celles d'autres cellules
' d'un autre classeur
'
' PROBLEME.
'
' lorsque la chaine recherchée (exemple: chaine_2) ne se trouve pas dansla feuille reçue,
' la macro affiche une erreur
'
' Comment résoudre ce problème ?

Merci à tous les experts qui auraient la patience d'essayer de m'aider.

Jean-Claude
 

Bigfish

XLDnaute Occasionnel
Re : recherche de chaînes de caractères

Salut,

tu peux faire comme suit pour gerer ton erreur :

On Error Resume Next
Set c = Cells.Find(What:="chaine_1", After:=ActiveCell, LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not Err = 0 then
Err.Clear
MsgBox "Pas de Chaine " & "chaine_1" & " !", VbExclamation
'ici tu ajouter ce qui te permettra de continuer
Else
ActiveWorkbook.Names.Add Name:="chaine_1", RefersToR1C1:=c.Offset(0, 1)
ActiveWorkbook.Names.Add Name:="param_1", RefersToR1C1:=c.Offset(0, 2)
ActiveWorkbook.Names.Add Name:="param_2", RefersToR1C1:=c.Offset(1, 3)
Endif


A+ :)
 

Bigfish

XLDnaute Occasionnel
Re : recherche de chaînes de caractères

Salut,

Grand soleil :)

concernant ta 2ieme question je n'ai pas bien compris mais du peu que je pense avoir compris, il est probable que la solution que je t'ai donner resolve le probleme. Je pense que ce n'est qu'un probleme d'imbrication de ton code.

Dans tout les cas une nouvelle explication serait la bienvenue.

:)
 

jcddgl

XLDnaute Nouveau
Re : recherche de chaînes de caractères

Ok
J'avoue ne pas avoir été très clair.

Je vais essayer de mieux expliquer.

Dans le fichier que je recois, il peut exister des combinaisons différentes sur deux lignes des chaines que je recherche.

Exemple: en B2: "chaine_1"
en B3: "chaine_3"

en B48: "chaine_1"
en B49: "chaine_2"


Je ne recherche que le doublon, "chaine_1" et "chaine_3"

Pour l'instant dans mon code je ne fait une recherche que sur "chaine_1" et tombe une première fois sur B2 et une seconde fois sur B48 et c'est cette seule dernière valeur qui est conservée alors que je voulais au contraire conserver la valeur lorsque la chaine recherchée est suivie dans la cellule en dessous de "chaine_3" (en fait je devrais faire mon tri sur la recherche de deux valeurs)

Je sais que cela à l'air "tordu" mais cela conditionne un peu mon travail pour l'instant pour pouvoir analyser et comparer plusieurs dizaines de fichiers différents et contenant ou non certaines chaines de caracteres que je recherche.

J'espère avoir été plus clair.

A +