Microsoft 365 Ajouter texte si doublons

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
Pour ajouter un raccourci à la macro voir démo
raccourci.gif
 
Merci beaucoup ! ça marche ! je viens d'apprendre plein de chose sur Excel grâce à toi ! C'est bon à savoir. Je vais utiliser ça en attendant mais si un jours il est possible de trouver une formule je la prendrai également.

Merci encore et bon week-end
 
Merci beaucoup ! ça marche ! je viens d'apprendre plein de chose sur Excel grâce à toi ! C'est bon à savoir. Je vais utiliser ça en attendant mais si un jours il est possible de trouver une formule je la prendrai également.

Merci encore et bon week-end
Content que tu aies appris des choses sur Excel. Je ne suis pas très calé en formule, mais vu la répartition de tes données, je pense qu'il serait difficile de trouver une formule qui renvoie l’entête de la colonne correspondant à la valeur recherchée.

De plus, tu as parlé de 50000 lignes qui à mon avis prendra beaucoup de temps de recalcul.
Je te conseille de te mettre au VBA, ce n'est pas la mer à boire. Tu trouveras des tutos pour faire tes premières "armes" et tu pourras te faire aider ici.

Personnellement, je suis parti de rien, j'étais un utilisateur très moyen en formule. Et grâce, au forum j'ai beaucoup appris. En espérant avoir semé en toi la petite "graine VBA", à toi de la faire fructifier.

Bonne continuation et bon week-end.
 
De mon côté je vais me lancer dessus aujourd'hui car il faudrait que j'utilise ce code sur un autre Excel ion la disposition des tableaux n'est pas la même.
Merci pour les conseils, mais j'ai une dernière question, peut-on réutiliser ce code sous forme raccourcie dans n'importe quel autre fichier Excel (du moment où explique au code où chercher) ?
Merci
 
De mon côté je vais me lancer dessus aujourd'hui car il faudrait que j'utilise ce code sur un autre Excel ion la disposition des tableaux n'est pas la même.
Merci pour les conseils, mais j'ai une dernière question, peut-on réutiliser ce code sous forme raccourcie dans n'importe quel autre fichier Excel (du moment où explique au code où chercher) ?
Merci
Bonjour @Elyes-sama ,

Je te rappelle que l'une des règles de ce forum est de commencer son message par un bonjour/bonsoir.
Sans adaptation au fichier, le code est susceptible de planter.
Étant donné que tu débutes, je vais commenter le code pour que tu puisses l'adapter à ton fichier.

A+
 
Bonjour le fil, Elyse-sama, cp4

Une autre piste (sans formules, sans VBA)
et qui fonctionne sur un grand nombre de lignes (sans latence)
exmTCD.png

On peut filtrer avec la flèche du haut
et on peut également trier les molécules
(de A-Z ou Z-A)

NB: Comme cela tu auras appris 3 trucs avec Excel 😉
 
Re

Il ne s'agit d'une formule mais de la fonctionnalité Tableau Croisé Dynamique
Un petit tut en guise d'apéro ? 😉
NB: Tuto concocté par David (le créateur du site Excel-Downloads)

Si tu as des questions sur comment faire un TCD, n'hésite pas
(Mais dans un premier temps, il faudrait mettre tes données comme sur ma copie d'écran)
 
Bonjour,
Je me demande, si on peut coupler le code VBA afin d'avoir la liste des aires thérapeutique associé à chaque molécule, puis faire un tableau croisé dynamique ? Dans le sens où les molécules, à partir du code vba, seront rangé comme sur ta copie d'écran ?
A la base, l'objectif était ensuite d'utiliser un tableau croisé dynamique afin de faire des rangements ect...
Merci 🙏
 
Re

Je te mets un petit mode opératoire
1) donc remettre les données comme sur mon image
2) Une fois que cela est fait, sélectionner ce tableau de 2 colonnes puis sur le ruban, cliquez sur Insertion/Tableau Croisé Dynamique puis sur OK
3) Sur la nouvelle feuille qui apparait, regarder le volet à droite
Déplacer avec la souris Aires therapeutics dans la zone Filtres
et Molécules dans Lignes
Voila , tu viens de faire ton premier TCD 😉
 
Re,
Le problème est qu'il faut avoir toutes les molécules associées à chaque Aire thérapeutique. En vue de leurs nombre il est impossible que je fasse un tableau car il manquerait des données.
Mais ça sera ma prochaine étape, une fois que j'aurais associé les molécules à leurs aires thérapeutique (j'ai plus de 50000 molécules et certaines n'entrent dans aucune aires thérapeutique)...
 
@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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
166
Réponses
1
Affichages
605
Retour