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
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
@Staple1600 ;), Bonjour et bon dimanche

@Elyes-sama :En espérant que ça puisse t'aider
VB:
Option Explicit

Sub F_molecule()
'On doit déclarer les variables utilisées dans la procédure
'Range ==> cellule ou plage de cellules
'Long ==> numérique Nombre entier de - 2'147'483'648 à 2'147'483'647
'Integer ==>numérique Nombre entier de -32'768 à 32'767 (si tu es sûr que tu n'auras pas plus de 32 767 lignes)
    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")    'signifie qu'on travaille avec la feuille "information"
        'étant donné que la derniere ligne non vide des colonnes n'est pas la même
        'on recherche la derniere ligne non vide de la plage courante à la cellule A1
        'avec la igne de code ci-dessous
        DerLig = .Range("A1").CurrentRegion.Find("*", , , , xlByRows, xlPrevious).Row

        'on récupère la dernière colonne non vide de la ligne 1 (ligne de code ci-dessous)
        DerCol = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column

        'on définit la plage "plg" où l'on va rechercher les molécules
        Set plg = .Range(.Cells(1, 2), .Cells(DerLig, DerCol))
    End With    'fin de travail avec la feuille "information
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    With Sheets("classement")
        'on définit la plage "plgMol"
        Set plgMol = .Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row)
    End With
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'boucle for each sur toutes les cellules de la plage plgMol
    For Each Cel In plgMol
        If Cel <> "" Then    'si la cellule concernée n'est pas vide (juste par précaution qu'il y ait ces cellues vides)
            'on définit la variable Air (cellule) que l'on veut trouver dans plage plg
            Set Air = plg.Find(Cel, LookAt:=xlWhole)
            If Not Air Is Nothing Then    'si on la trouve
                cl = Air.Column    'on récupère le numero de colonne
                'on repporte dans la cellule décaler d'une colonne soit colonne B
                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
 

cp4

XLDnaute Barbatruc
Re,
Le code que vous m'avez proposé plante tu as bien raison, j'ai mis en rouge les choses que j'ai adapté à mon nouveau Excel :
DerLig = .Range ("H1)
DerCol = .Cells (8, .Cells...
Set plg = .Range(.Cells(8,2)

Set plgMol = .Range("I2:I" & Range("I" & ...

Mon classeur va de A à BK et descend jusqu'à 40 000 cellules

J'aimerai vraiment comprendre ce qui ne fonctionne pas. D'autant plus que rien ne change vraiment sinon...

Sinon je ne comprends pas également cette partie du code :

J'imagine que ça doit bug ici.
Je me suis permis de renommer la feuille 'information' par 'Aires therapeutics' et supprimer la colonne du même nom. Je te joins un fichier qui inscrira 'pas de correspondance' si la molécule n'a pas d'aire therapeutique.

edit ton code au complet ça sera plus clair voir demo pour éditer correctement le code
Balise de code.gif

A+
 

Pièces jointes

  • fichier exemple2.xlsm
    38 KB · Affichages: 1

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
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

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 286
Membres
103 170
dernier inscrit
HASSEN@45