Microsoft 365 Ajouter texte si doublons

Elyes-sama

XLDnaute Nouveau
Bonjour,

Voilà ça fait 2 jours que je ne trouve pas la solution à mon problème. J'aimerai pouvoir afficher du texte dans une cellule s'il y'a correspondance entre 2 mots présents dans d'autre cellule.
J'ai un tableau dans l'onglet 1 avec des produits et chaque produit est associé à un groupe. Dans l'onglet 2 j'ai une très longue liste de produit et j'aimerai associé les produits à leurs groupes dans une nouvelle cellule dans l'onglet 2.
N'hésitez pas si vous avez des questions, j'espère avoir été clair.
Merci d'avance à ceux qui prendront le temps de m'aider
 

cp4

XLDnaute Barbatruc
Bonjour,

Voilà ça fait 2 jours que je ne trouve pas la solution à mon problème. J'aimerai pouvoir afficher du texte dans une cellule s'il y'a correspondance entre 2 mots présents dans d'autre cellule.
J'ai un tableau dans l'onglet 1 avec des produits et chaque produit est associé à un groupe. Dans l'onglet 2 j'ai une très longue liste de produit et j'aimerai associé les produits à leurs groupes dans une nouvelle cellule dans l'onglet 2.
N'hésitez pas si vous avez des questions, j'espère avoir été clair.
Merci d'avance à ceux qui prendront le temps de m'aider
Bonjour,

Bienvenue!!!!!!
Je te conseille de relire attentivement a charte du forum, ce qui t'évitera de long moment sans réponses.
Il faudrait joindre un fichier sans données confidentielles.

Bonne soirée.
 

Elyes-sama

XLDnaute Nouveau
Dans l'onglet "classement", j'aimerai afficher l'air therapeutic associée à la molécule en fonction du classement présent dans l'onglet "information".
Mais je n'y arrive pas du tout et j'ai beau chercher je ne trouve pas la solution à mon problème.
Merci patty58 pour ta réactivité
 

cp4

XLDnaute Barbatruc
Dans l'onglet "classement", j'aimerai afficher l'air therapeutic associée à la molécule en fonction du classement présent dans l'onglet "information".
Mais je n'y arrive pas du tout et j'ai beau chercher je ne trouve pas la solution à mon problème.
Merci patty58 pour ta réactivité
J'avoue que je n'ai pas compris. Les 2 colonnes concernant "Air Therapeutic" sont vides, est-ce que tu n'as pas omis quelque chose?
De plus, il faudrait que tu nous aides pour t'aider. En effet, sans compréhension des tenants et aboutissants de ton projet, il est difficile de te proposer un code.
Donne-nous un exemple concret sur ton fichier.

A+
 

Elyes-sama

XLDnaute Nouveau
Pas de soucis je vais réexpliquer, l'objectif est de donner un nom (Aires therapeutics) à chaque molécule présent dans l'onglet classement (en réalité il y'en a plus de 50 000). A cause du nombre je ne peux pas me permettre de reprendre molécule par molécule et leurs donner leurs aires therapeutics. C'est pourquoi dans l'onglet informations, il y'a certaines molécules qui sont classés par aires theerapeutics. L'idée est donc de faire apparaitre l'aires therapeutics de la molécule dans l'onglet classement en fonction du tableau présent dans l'onglet information. Pour cela je pensais à une formule où si il y'a un doublon entre 2 noms de molécules alors afficher le nom de l'air thérapeutic qui lui est associé.
Effectivement, il ne s'agit que d'un excel exemple, je ne peux pas prendre les vrais fichier qui sont confidentiels, je veux juste comprendre le principe et quel outil utiliser pour faire apparaitre une aires therapeutic en fonction de la molécule.
Merci infiniment pour votre temps
 

cp4

XLDnaute Barbatruc
Si j'ai bien compris, tu colles ce code dans un module standard et tu l’exécutes.
VB:
Option Explicit

Sub F_molecule()
    Dim plg As Range, DerLig As Long, DerCol As Long, plgMol As Range
    Dim Cel As Range, Air As Range, cl As Long
    With Sheets("information")
        'derniere ligne non vide
        DerLig = .Range("A1").CurrentRegion.Find("*", , , , xlByRows, xlPrevious).Row
        DerCol = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
        Set plg = .Range(.Cells(1, 2), .Cells(DerLig, DerCol))
    End With

    With Sheets("classement")
        Set plgMol = .Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row)
    End With

    For Each Cel In plgMol
        If Cel <> "" Then
            Set Air = plg.Find(Cel, LookAt:=xlWhole)
            If Not Air Is Nothing Then
                cl = Air.Column    'numero de colonne
                Cel.Offset(0, 1) = Sheets("information").Cells(1, cl).Value
            End If
        End If
    Next Cel

    'vidage des variables
    Set plgMol = Nothing
    Set Air = Nothing
    Set plg = Nothing

End Sub

A+

édit: le fichier doit être enregistrer en xlsm et activer les macros à l'ouverture du fichier.
 
Dernière édition:

cp4

XLDnaute Barbatruc
Je ne comprends pas vraiment où tu veux en venir, je cherche juste une formule simple qui me permettrai de répondre à ma demande.
Je ne suis pas un super pro sur excel 😅
Pour les formules, je passe la main. Tu aurai pu faire un essai pour avoir une idée sur ce qu'on peut faire en VBA.
En retour ton fichier, voir démo ci-dessous
molecule.gif


Ensuite, tu as le libre choix de passer au vba ou non.

Bonne continuation.
 

Pièces jointes

  • fichier exemple1.xlsm
    37.6 KB · Affichages: 5

cp4

XLDnaute Barbatruc
Lorsque tu auras copié le code (comme montré dans la démo ci-dessous), Tu fais Alt+F11 pour ouvrir l'éditeur de code, ensuite tu insères un module dans lequel tu colles le code précédemment copier à partir du forum.
Ensuite, tu exécutes le code
Copier_coller code.gif
 

Discussions similaires