Recherche de plusieurs caractères dans une même cellule
Résolu
superpiot04
Messages postés
13
Date d'inscription
Statut
Membre
Dernière intervention
-
superpiot04 Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
superpiot04 Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Sous Excel 2007,
Je cherche à faire une recherche multiple au sein d'une même cellule.
J'éclaircie l'ensemble de mon problème:
Une UNIQUE cellule contient plusieurs informations du type:
"Pierre mange une pomme
Pierre mange une orange"
Chaque information est associée des calories dans un autre tableau:
"Pierre mange une pomme : 70"
"Pierre mange une orange : 50"
"Pierre mange du chocolat : 500"
J'aimerais être capable d'analyser chaque ligne de la cellule pour ressortir le nombre maximum de calories mangées par Pierre.
Mon problème est un peu complexe, mais si vous avez une idée à proposer, je vous en remercie d'avance!!
Pierre
Sous Excel 2007,
Je cherche à faire une recherche multiple au sein d'une même cellule.
J'éclaircie l'ensemble de mon problème:
Une UNIQUE cellule contient plusieurs informations du type:
"Pierre mange une pomme
Pierre mange une orange"
Chaque information est associée des calories dans un autre tableau:
"Pierre mange une pomme : 70"
"Pierre mange une orange : 50"
"Pierre mange du chocolat : 500"
J'aimerais être capable d'analyser chaque ligne de la cellule pour ressortir le nombre maximum de calories mangées par Pierre.
Mon problème est un peu complexe, mais si vous avez une idée à proposer, je vous en remercie d'avance!!
Pierre
A voir également:
- Recherche de plusieurs caractères dans une même cellule
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Caractères ascii - Guide
- Aller à la ligne dans une cellule excel - Guide
- Caractères spéciaux - Guide
- Comment faire une recherche à partir d'une photo - Guide
5 réponses
=SI(NB.SI(A1;"*pomme*")>0;70;"")+SI(NB.SI(A1;"*orange*")>0;50;"")+SI(NB.SI(A1;"*chocolat*")>0;500;"")
Bonjour,
une proposition avec une fonction personnalisée en vba:
Syntaxe :
=add(cellule;plage)
=add(A2;D2:D4)
exemple : https://www.cjoint.com/?BJgjc3HMr5g
Si les cellules de la plage ne respectent pas 1 seul espace de part et d'autre du ":" le résultat sera erroné. Contrôle si tu n'as pas des cas particuliers à traiter.
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
une proposition avec une fonction personnalisée en vba:
Function add(cellule As Range, plage As Range) As Double Dim phr, lig As Long, pos As Long, i As Long phr = Split(Replace(cellule, vbCrLf, vbLf), vbLf) For i = 0 To UBound(phr) For lig = 1 To plage.Rows.Count pos = InStr(1, plage.Cells(lig, 1), ":") If Left(plage.Cells(lig, 1), pos - 2) = phr(i) Then add = add + CDbl(Mid(plage.Cells(lig, 1), pos + 2)) Next lig Next i End Function
Syntaxe :
=add(cellule;plage)
=add(A2;D2:D4)
exemple : https://www.cjoint.com/?BJgjc3HMr5g
Si les cellules de la plage ne respectent pas 1 seul espace de part et d'autre du ":" le résultat sera erroné. Contrôle si tu n'as pas des cas particuliers à traiter.
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
Bonjour,
Une fonction personnalisée s'utilise sur une feuille comme une fonction native d'excel.
Elle doit être copiée dans un module 'standard' de vba (pas un module de feuille).
Faire alt+F11 pour ouvrir l'éditeur VBE et voir le code.
As-tu cliqué sur le lien bleu pour tester ?
Déposer un fichier sur cjoint.com et coller ici le lien fourni.
eric
Une fonction personnalisée s'utilise sur une feuille comme une fonction native d'excel.
Elle doit être copiée dans un module 'standard' de vba (pas un module de feuille).
Faire alt+F11 pour ouvrir l'éditeur VBE et voir le code.
As-tu cliqué sur le lien bleu pour tester ?
Déposer un fichier sur cjoint.com et coller ici le lien fourni.
eric
Salut le fil,
Et oui dure réalité de vouloir aider bénévolement. J'ai l'impression que depuis quelques temps se développe un climat de règlement de compte surtout que surpepiot ne se manisfaite nullement
Pour la solidarité un fichier exemple qui traite le problème par formule
https://www.cjoint.com/?BJhhigvym5C
Et oui dure réalité de vouloir aider bénévolement. J'ai l'impression que depuis quelques temps se développe un climat de règlement de compte surtout que surpepiot ne se manisfaite nullement
Pour la solidarité un fichier exemple qui traite le problème par formule
https://www.cjoint.com/?BJhhigvym5C
Bonjour à tous,
Déjà, merci à vous 3 pour vos réponses,
Raymond, en effet, la base de comparaison est trop grosse pour ce type de formule,
Eriic, je ne parviens pas à utiliser ta macro...
Mike, ta proposition ne prend pas en compte les cellules avec plusieurs lignes
Je vous envoie une partie du fichier que je dois traiter, ce sera plus clair.
https://www.cjoint.com/?BJioh33Ax7N
J'ai dans la feuil2 un tableau invariable dans lequel une valeur de gravité est associée à un défaut.
Dans la feuill1, sur laquelle je travaille, je n'ai pour l'instant que la colonne C vert fluo. Le but est de remplir la colonne D en allant chercher dans la feuil2 les correspondances de défauts et y associer la gravité correspondante. (pour info, la feuil2 est un extrait d'un tableau de 900 lignes, donc je ne peut me permettre de chercher par rapport à une base de donnée fixe, comme propose Raymond)
La difficulté réside dans le fait, que dans certaines cellules de la colonne C de la feuil1, il y a plusieurs défauts. Je n'arrive pas à analyser une cellule lorsqu'il y a plusieurs défauts. Je voudrais pour voir faire une recherche sur chaque ligne de la cellule, extraire la gravité associée dans la feuil2, puis écrire dans la colonne D de la Feuil1 la gravité max uniquement.
J'ai écris dans la colonne D Feuil1 la résultat théorique.
J'espère avoir été assez clair et avoir fourni assez de détails.
Pierre
Déjà, merci à vous 3 pour vos réponses,
Raymond, en effet, la base de comparaison est trop grosse pour ce type de formule,
Eriic, je ne parviens pas à utiliser ta macro...
Mike, ta proposition ne prend pas en compte les cellules avec plusieurs lignes
Je vous envoie une partie du fichier que je dois traiter, ce sera plus clair.
https://www.cjoint.com/?BJioh33Ax7N
J'ai dans la feuil2 un tableau invariable dans lequel une valeur de gravité est associée à un défaut.
Dans la feuill1, sur laquelle je travaille, je n'ai pour l'instant que la colonne C vert fluo. Le but est de remplir la colonne D en allant chercher dans la feuil2 les correspondances de défauts et y associer la gravité correspondante. (pour info, la feuil2 est un extrait d'un tableau de 900 lignes, donc je ne peut me permettre de chercher par rapport à une base de donnée fixe, comme propose Raymond)
La difficulté réside dans le fait, que dans certaines cellules de la colonne C de la feuil1, il y a plusieurs défauts. Je n'arrive pas à analyser une cellule lorsqu'il y a plusieurs défauts. Je voudrais pour voir faire une recherche sur chaque ligne de la cellule, extraire la gravité associée dans la feuil2, puis écrire dans la colonne D de la Feuil1 la gravité max uniquement.
J'ai écris dans la colonne D Feuil1 la résultat théorique.
J'espère avoir été assez clair et avoir fourni assez de détails.
Pierre
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Eriic, je ne parviens pas à utiliser ta macro...
C'est sûr, ton tableau est complètement différent de ce que tu demandes.
Tu mets entre guillemets "Pierre mange une pomme : 70" comme si c'était une seule cellule. Hors c'est réparti sur 2 cellules ce qui n'a plus rien à voir.
Et changer son problème plutôt que de l'exposer directement (sauf si secret d'état) n'amène rien de plus que des incompréhensions :
ressortir le nombre maximum de calories mangées par Pierre
On ne peut comprendre que addition, et non max...
eric
edit : nouvelle fonction
https://www.cjoint.com/?BJiqfcF5b7X
revalide D9 pour voir le message si libellé inconnu.
La plage dess libellés doit être nommées Défauts et utiliser ce nom pour l'écriture de la formule (excel réagit bizarrement si sélection de la plage à la souris)
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
Eriic, je ne parviens pas à utiliser ta macro...
C'est sûr, ton tableau est complètement différent de ce que tu demandes.
Tu mets entre guillemets "Pierre mange une pomme : 70" comme si c'était une seule cellule. Hors c'est réparti sur 2 cellules ce qui n'a plus rien à voir.
Et changer son problème plutôt que de l'exposer directement (sauf si secret d'état) n'amène rien de plus que des incompréhensions :
ressortir le nombre maximum de calories mangées par Pierre
On ne peut comprendre que addition, et non max...
eric
edit : nouvelle fonction
https://www.cjoint.com/?BJiqfcF5b7X
revalide D9 pour voir le message si libellé inconnu.
La plage dess libellés doit être nommées Défauts et utiliser ce nom pour l'écriture de la formule (excel réagit bizarrement si sélection de la plage à la souris)
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
Bonjour Eriic,
J'ai mis du temps à répondre ça j'étais parti en déplacement et n'ai malheureusement pas eu le temps de regarder ta macro.
Cela fonctionne parfaitement! Merci beaucoup !
(Pour la cellule D9, le défaut possible en C9 Feuil1 était mal référencé en Feuil2.)
Dernière chose, pour adapter ta macro à mon document entier, je suis allé dans :
Affichage
Macro
Afficher les macros
et aucune ne s'affiche.
Peux tu me dire ou je dois aller la chercher, s'il te plait?
Merci d'avance,
Pierre
J'ai mis du temps à répondre ça j'étais parti en déplacement et n'ai malheureusement pas eu le temps de regarder ta macro.
Cela fonctionne parfaitement! Merci beaucoup !
(Pour la cellule D9, le défaut possible en C9 Feuil1 était mal référencé en Feuil2.)
Dernière chose, pour adapter ta macro à mon document entier, je suis allé dans :
Affichage
Macro
Afficher les macros
et aucune ne s'affiche.
Peux tu me dire ou je dois aller la chercher, s'il te plait?
Merci d'avance,
Pierre
Bonjour,
Cest une fonction personnalisée, elle n'apparait donc pas dans le menu 'Afficher les macros '.
Par contre elle apparait dans 'insérer / fonctions / fonctions personnalisées'.
Le code est dans Module1.
(Pour la cellule D9, le défaut possible en C9 Feuil1 était mal référencé en Feuil2.)
C'était fait exprès que tu vois le code d'erreur retourné (j'aurais peut-être dû mettre #N/A!).
eric
Cest une fonction personnalisée, elle n'apparait donc pas dans le menu 'Afficher les macros '.
Par contre elle apparait dans 'insérer / fonctions / fonctions personnalisées'.
Le code est dans Module1.
(Pour la cellule D9, le défaut possible en C9 Feuil1 était mal référencé en Feuil2.)
C'était fait exprès que tu vois le code d'erreur retourné (j'aurais peut-être dû mettre #N/A!).
eric
Bonjour,
Dans l'onglet "Formule", j'ai bien
"insérer une Fonction" puis dans le menu déroulant "personnalisé"
je trouve alors votre fonction gravitéMax, ainsi que les variables de la fonction : gravitéMax(cellule;libellésDéfauts)
Je ne vois alors aucun "Module1".
Je suppose que je ne suis pas au bon endroit, mais ne trouve pas 'insérer'...
Merci,
Pierre
Dans l'onglet "Formule", j'ai bien
"insérer une Fonction" puis dans le menu déroulant "personnalisé"
je trouve alors votre fonction gravitéMax, ainsi que les variables de la fonction : gravitéMax(cellule;libellésDéfauts)
Je ne vois alors aucun "Module1".
Je suppose que je ne suis pas au bon endroit, mais ne trouve pas 'insérer'...
Merci,
Pierre
Peut-être parce que si tu as une liste de 300 aliments ça va devenir un peu longuet à saisir non ?
Je précise que je n'ai pas mis -1..
eric
Deja merci de vos réponses et désolé pour le delai!
En effet il s'agit d'une liste assez lourde et qui peut etre amenée à évoluer..
J'ai essayé de simplifier par un exemple simple un probleme au travail