Chaine de caractère dans Excel

Résolu/Fermé
Absalom996 Messages postés 10 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 3 décembre 2010 - Modifié par Absalom996 le 3/12/2010 à 17:49
Absalom996 Messages postés 10 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 3 décembre 2010 - 3 déc. 2010 à 22:48
Bonjour,

Je cherche à faire une opération qui ne me semble pas si compliqué dans Excel... Cependant je bloque.

J'ai une feuille avec un tableau du type de celui-ci :

A.................. B
Ferrari...........Voiture
Acer..............Informatique
Renault.........Voiture
Yoplait..........Alimentaire
...

J'ai une deuième feuille dans laquelle j'importe des données du type de celles ci-dessous :

A'......................B'.........................................................C'
01/12/1983......achat d'un PC Acer Veriton 3200.........800 euros€
05/11/1984......tour en Ferrari sur Circuit....................600 euros€
...

Ce que j'aimerai faire c'est ajouter une colonne dans ce deuxième tableau (D') qui testerai si l'un des mots de la liste de la colonne A est présent dans B', si c'est le cas, il faudrait que le mot correspondant dans la colonne B apparaisse dans la colonne D'. Ca donnerai cela :

A'......................B'.........................................................C'...................D'
01/12/1983......achat d'un PC Acer Veriton 3200.........800 euros.......Informatique€
05/11/1984......tour en Ferrari sur Circuit....................600 euros.......Voiture
...

J'ai essayé avec une RECHERCHEV + condition Si mais si l'expression n'est pas exacte mot pour mot, ça ne fonctionne pas... :(

Merci de votre aide

Absalom

A voir également:

2 réponses

eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
3 déc. 2010 à 18:52
Bonsoir,

Ca peut être fait par une fonction personnalisée à mettre dans un module.
Function rubrique(chaine As String) As String
    Dim motclé As Range, ok As Boolean, n As Long
    Set motclé = Worksheets("Feuil1").[A1]
    Do
        If InStr(LCase(chaine), LCase(motclé.Offset(n, 0))) > 0 Then
            ok = True
        Else
            n = n + 1
        End If
    Loop Until ok Or motclé.Offset(n, 0) = ""
    If ok Then rubrique = motclé.Offset(n, 1) Else: rubrique = ""
End Function


Set motclé = Worksheets("Feuil1").[A1] défini le début des mot clés, à adapter à ta feuille.
Le dernier mot clé doit être suivi d'une cellule vide.
La colonne à sa droite contient les rubriques associées

Avec en B7 ton libellé à analyser la formule pour ramener la rubrique est :
=rubrique(B7)

eric
2
Absalom996 Messages postés 10 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 3 décembre 2010
3 déc. 2010 à 22:47
Super ça fonctionne ! Bravo Eric et Merci !
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
3 déc. 2010 à 19:02
Bonjour

combien avez vous de mot clés à traiter?
Peut être un tuyau pour vous aider:
le code "*texte*" cherche si le mot entre guillemet se trouve dans le texte
idem pour le code "*"& Cell&"*" qui cherchera la présence du texte inscrit dans cell
ainsi:
=NB.SI(A1:A100;"*"& Cell&"*") vous donnera le nombre de cellule dans le champ qui comprennent dans leur texte le texte inscrit dans Cell
=RECHERCHEV("*"& Cell&"*";A1:A100;1;0)
vous ressortira le premier texte incluant le texte de Cell

par contre, s'il est nécessaire de chercher tous les mots à chaque ligne, ça risque de faire une formule comique selon le nombre de mots que vous voulez traiter, car il faut un code NB.SI par mot cherché.

ou alors renvoyez un tableau avec pour l'exemple:
de A2 à A1000 la liste des textes
de C1 à Z1 la liste en ligne des mots cherchés
de C2 à Z1000 la formule, à partir de C2:
=SI(NB.SI($A$2:$A$1000;"*"&C$1&"*")>0;C$1;"")
à tirer sur tous le champ C2:Z1000
elle vous renverra dans chaque colonne le mot titre s'il est dans la colonne A

Il y a aussi la possibilité de traiter ce tableau sur une feuille masquée et de ne renvoyer sur la feuille initiale que le titre trouvé.

ou pour une finir une macro, mais je laisse ça aux spécialistes.

crdlmnt





0
Absalom996 Messages postés 10 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 3 décembre 2010
3 déc. 2010 à 22:48
Merci pour votre réponse, j'ai testé et effectivement cela fonctionne mais étant donné qu'il est nécessaire, pour ce que je veux faire, de chercher l'ensemble des mots pour chaque ligne, ça n'est pas le plus pratique. En tout cas encore merci du temps que vous m'avez accordé !
0