Chaine de caractère dans Excel

Résolu
Absalom996 Messages postés 10 Statut Membre -  
Absalom996 Messages postés 10 Statut Membre -
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

2 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    1. Absalom996 Messages postés 10 Statut Membre
       
      Super ça fonctionne ! Bravo Eric et Merci !
      0
  2. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    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
    1. Absalom996 Messages postés 10 Statut Membre
       
      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