Trouver la position d'une cellule contenant la chaine de caractère recherchée

Trashboy666

XLDnaute Nouveau
Bonjour à tous!

J'ai trouvé beaucoup de sujet sur le moyen de trouver une chaine de caractère dans une cellule, mais pas de trouver une cellule contenant la chaine de caractère recherchée.

Voici mon besoin :

L'utilisateur choisi dans un menu déroulant un mot.
Dans un autre onglet (le 3eme), il y a la liste des mots qu'il peut choisir (colonne A), avec leur identifiant correspondant dans la colonne B.

Exemple:

COL-A COL-B

Jean 1J87
Albert 58R9
Bob 78ET
etc...

Je voudrai pouvoir, en VBA, récupérer la position du mot qu'il a choisi dans la première feuille afin de récupérer son identifiant correspondant dans la colonne B de la 3eme feuille.

En algo ça donnerait :

(Position x;y de la chaine de caractère dans feuille3) = recherche de la position dans colonne A de la feuille 3 de (chaine de caractère sélectionnée dans feuille 1)
(identifiant de la chaine de caractère) = (position x;y de la chaine de caractère dans feuille3) + (0;1)

Mais à part rechercher_champs, dont je ne comprend pas la manipulation, je n'ai rien trouvé qui puisse faire cela.
Il y a une contrainte :
- la liste sera appelée à évoluer (mais restera toujours dans la colonne A de la feuille3 et chaque mot aura son identifiant associé)
Et une facilité :
- les chaines de caractère étant sélectionnée dans un menu déroulant défini par la colonne A de la feuille3, il n'y a pas d'édition manuelle du menu déroulant possible. donc c'est une recherche de chaine de caractère pleine, et pas partielle. Il ne peut y avoir qu'un seul résultat.

PS : est-il possible de prendre en compte les espaces et les accents? ou on reste sur un seul mot pour plus de facilité?

Avez-vous une idée à me soumettre?

Merci à tous d'avance!!
 

pierrejean

XLDnaute Barbatruc
Re : Trouver la position d'une cellule contenant la chaine de caractère recherchée

bonjour trashboy666

une idée:

tu crées un petit fichier exemple (quelques lignes sans données confidentielles ) et tu nous le soumets
 

mikeo

XLDnaute Occasionnel
Re : Trouver la position d'une cellule contenant la chaine de caractère recherchée

Bonjour,

Un petit fichier en exemple nous épargnerait l'analyse de chaque phrase, la construction un fichier qui ne correspondra jamais à ce que vous avez dans votre tête, et l'ébauche une solution, qui forcément sera fausse, et qu'il faut réaménager après des multiples corrections.

A+

edit : Bonjour Pierrejean, qui dit la même chose en plus rapide.
 

Dranreb

XLDnaute Barbatruc
Re : Trouver la position d'une cellule contenant la chaine de caractère recherchée

Bonjour à tous.
À défaut de fichier, essayez de vous débrouiller avec la fonction EQUIV
À +
 

Trashboy666

XLDnaute Nouveau
Re : Trouver la position d'une cellule contenant la chaine de caractère recherchée

Bonjour à tous,

Ok pour le petit fichier, je vous fait ça et je transmet!
 

Trashboy666

XLDnaute Nouveau
Re : Trouver la position d'une cellule contenant la chaine de caractère recherchée

Re-bonjour!

Voici un petit fichier permettant de mieux illustrer mon besoin.

Dans la première feuille, une liste déroulante en A1.
Dans la 3eme feuille, les éléments de cette liste dans la colonne A, et leur ID correspondant dans la colonne B.

Le bouton situé dois commander la génération d'un fichier txt contenant l'id correspondant à l'élément sélectionné dans la liste.

contrainte : la liste s'agrandira dans le futur (ajout de nouveaux noms avec ID corrsepondant)

Encore mille mercis pour votre aide!
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Re : Trouver la position d'une cellule contenant la chaine de caractère recherchée

Un début:
VB:
Private Sub CommandButton1_Click()
Dim L As Long
On Error Resume Next
L = WorksheetFunction.Match(Me.[A1].Value, [Liste], 0)
If Err Then L = 0
On Error GoTo 0
If L > 0 Then
   MsgBox [Liste].Item(L, 2).Value
Else
   MsgBox "inexistant"
   End If
End Sub
À +
 

Trashboy666

XLDnaute Nouveau
Re : Trouver la position d'une cellule contenant la chaine de caractère recherchée

Merci Dranreb!! En effet la fonction Match devrait remplir ce rôle parfaitement!

une question : à quoi correspond "Me"?

Code:
L = WorksheetFunction.Match(Me.[A1].Value,[Liste], 0)
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Trouver la position d'une cellule contenant la chaine de caractère recherchée

Le mot clé Me désigne l'objet auquel le module de classe est attaché, comme un userform par exemple, ou, comme ici, l'objet Worksheet, c'est à dire la feuille Excel.
 

Trashboy666

XLDnaute Nouveau
Re : Trouver la position d'une cellule contenant la chaine de caractère recherchée

D’accord, merci beaucoup pour cette précision!
 

Trashboy666

XLDnaute Nouveau
Re : Trouver la position d'une cellule contenant la chaine de caractère recherchée

Re bonjour,

Je reviens sur ce sujet car je rencontre un nouveau soucis avec la cellule qui contient le texte à chercher qui a une position variable. Je m'explique :

La cellule contenant le texte à recherché a des coordonnées définies ainsi :

ComingNext = Cells(i, 20).Value


Et lorsque je cherche à récupérer la position, je fais naturellement :

PositionListeCn = WorksheetFunction.Match(ComingNext, [REF_COMING_NEXT], 0)

Mais excel bloque en disant ne pas arriver à lire la propriété de la fonction Match. Je me doute qu'il s'agit bien de la première variable de la fonction, ComingNext, mais je ne sais pas comment l'exprimer. Help!
 

Trashboy666

XLDnaute Nouveau
Re : Trouver la position d'une cellule contenant la chaine de caractère recherchée

Hello,

oubliez ce que je viens de demander, mon code fonctionne, juste que j'avais mis ma liste sur un cas particulier, à savoir une position qui ne retournais pas de correspondance dans ma liste d'ID (la deuxième colonne de la page contenant la liste...)

Autant pour moi!

Bonne journée à tous :)
EDIT : Bon en fait si, mon code ne fonctionne pas. Je ne comprend pas car en mode débogage, il affiche les bonnes valeurs, mais il continue de dire que les propriéts de match sont mal renseignées. Comment faire? ça rend dingue parce que c'est mon dernier bugg à régler avant livraison!!

Mercis à tous!!

RE-EDIT : c'est super étrange, car le message d'erreur "impossible de lire la propriété match..." ne bloque pas la suite du process, et le reste se déroule sans problème. J'y comprend plus rien...
 
Dernière édition:

Trashboy666

XLDnaute Nouveau
Re : Trouver la position d'une cellule contenant la chaine de caractère recherchée

Up!

J'ai toujours ce problème avec Match qui n'arrive soit-disant pas à trouver les valeurs, alors que toute ma syntaxe est bonne (après moultes et moultes vérification sur plusieurs sites), et qu'il semble réussir à faire ce que je lui demande.
 

Pierrot93

XLDnaute Barbatruc
Re : Trouver la position d'une cellule contenant la chaine de caractère recherchée

Bonjour,

peut être qu'un tout petit fichier avec totalité du code utilisé et représentant uniquement le problème posé nous aiderait à t'aider...

bon après midi
@+
 

Trashboy666

XLDnaute Nouveau
Re : Trouver la position d'une cellule contenant la chaine de caractère recherchée

Hello Pierrot! Merci de ton retour!

OK, voici la partie concernée par la fonction match (bien sur chacune de mes variables sont définies) :

Code:
If (ComingNext <> "NON") Then
            NbEvs = NbEvs + 1
            'fonction de récupération de l'id coming next
                '1) recherche la position de l'intitulé du coming next dans la page "id cn"
                PositionListeCn = WorksheetFunction.Match(ComingNext, [REF_COMING_NEXT], 0)
                If Err Then
                PositionListeCn = 0
                On Error GoTo 0
                End If
                If PositionListeCn > 0 Then
                '2) récupère l'id du cn trouvé, situé dans la colonne de droite de l'intitulé du cn
                IdComingNext = [REF_COMING_NEXT].Item(PositionListeCn, 2).Value
                EvsComingNext = "01" & vbTab & vbTab & vbTab & IdComingNext & vbTab & OffsetComingNext & vbTab & DureeComingNext & vbTab & vbTab
                End If
        Else
            NbEvs = NbEvs + 0
        End If
Chose intéressante découverte aujourd'hui, en mettant le paramètre à -1 ou 1, la fonction fonctionne parfaitement, mais sors toujours son erreur de propriété dûe au fait que la dernière cellule qu'il traite est vide, et j'arrive pas à l'en empêcher avec un frein de type if cells <> "NON" ou if cells <> ""

Edit : je viens de lire que la fonction worksheetfunction.match et application.match était buggé nativement dans Excel 2003, mais sans plus de détail. Qu'en pense la communauté des experts d'Excel Downloads?
 

Dull

XLDnaute Barbatruc
Re : Trouver la position d'une cellule contenant la chaine de caractère recherchée

Salut le Fil

Pas trop compris non plus mais juste pour mettre une autre proposition à celle de Dranreb :) qui fait normalement la même chose

Code:
Option Explicit

Private Sub CommandButton1_Click()
Dim C As Range
Set C = Sheets("ID").Range("liste").Find(What:=[A1])
If Not C Is Nothing Then MsgBox C.Offset(, 1)
End Sub
A voir si c'est plus facile à intégrer
Bonne Journée
 

Trashboy666

XLDnaute Nouveau
Re : Trouver la position d'une cellule contenant la chaine de caractère recherchée

Merci Dull,

mais si j'ai une variable au lieu de A1 dans le "What", je fais comment?
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas