Recherche de plusieurs caractères dans une même cellule
Résolu/Fermé
superpiot04
Messages postés
13
Date d'inscription
vendredi 5 octobre 2012
Statut
Membre
Dernière intervention
15 février 2015
-
5 oct. 2012 à 15:23
superpiot04 Messages postés 13 Date d'inscription vendredi 5 octobre 2012 Statut Membre Dernière intervention 15 février 2015 - 23 oct. 2012 à 14:57
superpiot04 Messages postés 13 Date d'inscription vendredi 5 octobre 2012 Statut Membre Dernière intervention 15 février 2015 - 23 oct. 2012 à 14:57
A voir également:
- Recherche de plusieurs caractères dans une même cellule
- Caractères ascii - Guide
- Aller à la ligne dans une cellule excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Excel cellule couleur si condition texte - Guide
5 réponses
Raymond PENTIER
Messages postés
58836
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
25 janvier 2025
17 276
6 oct. 2012 à 05:08
6 oct. 2012 à 05:08
=SI(NB.SI(A1;"*pomme*")>0;70;"")+SI(NB.SI(A1;"*orange*")>0;50;"")+SI(NB.SI(A1;"*chocolat*")>0;500;"")
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
Modifié par eriiic le 6/10/2012 à 09:06
Modifié par eriiic le 6/10/2012 à 09:06
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.
superpiot04
Messages postés
13
Date d'inscription
vendredi 5 octobre 2012
Statut
Membre
Dernière intervention
15 février 2015
1
7 oct. 2012 à 10:43
7 oct. 2012 à 10:43
Bonjour eriic,
Je ne suis pas tres familier avec vba. Il s'agit des macro n'est pas?
Je ne comprends pas bien ce que je dois faire de cette fonction.
Comment faites vous pour inserer une piece jointe? J'aimerais vous envoyer l'exemple reel sur lequel je bloque
Je ne suis pas tres familier avec vba. Il s'agit des macro n'est pas?
Je ne comprends pas bien ce que je dois faire de cette fonction.
Comment faites vous pour inserer une piece jointe? J'aimerais vous envoyer l'exemple reel sur lequel je bloque
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
7 oct. 2012 à 11:08
7 oct. 2012 à 11:08
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
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 111
7 oct. 2012 à 07:09
7 oct. 2012 à 07:09
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
superpiot04
Messages postés
13
Date d'inscription
vendredi 5 octobre 2012
Statut
Membre
Dernière intervention
15 février 2015
1
7 oct. 2012 à 10:36
7 oct. 2012 à 10:36
Merci Mike!
Je regarde ca revenu a mon bureau
Je regarde ca revenu a mon bureau
superpiot04
Messages postés
13
Date d'inscription
vendredi 5 octobre 2012
Statut
Membre
Dernière intervention
15 février 2015
1
8 oct. 2012 à 14:40
8 oct. 2012 à 14:40
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
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
Modifié par eriiic le 8/10/2012 à 16:07
Modifié par eriiic le 8/10/2012 à 16:07
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.
superpiot04
Messages postés
13
Date d'inscription
vendredi 5 octobre 2012
Statut
Membre
Dernière intervention
15 février 2015
1
23 oct. 2012 à 09:50
23 oct. 2012 à 09:50
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
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
23 oct. 2012 à 10:22
23 oct. 2012 à 10:22
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
superpiot04
Messages postés
13
Date d'inscription
vendredi 5 octobre 2012
Statut
Membre
Dernière intervention
15 février 2015
1
23 oct. 2012 à 11:11
23 oct. 2012 à 11:11
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
superpiot04
Messages postés
13
Date d'inscription
vendredi 5 octobre 2012
Statut
Membre
Dernière intervention
15 février 2015
1
23 oct. 2012 à 11:34
23 oct. 2012 à 11:34
Un Alt+F11 m'a directement renvoyé dans ta fonction !
La variable libellésdéfaut fait vraisemblablement référence à la plage de recherche des défauts.
Mais comment associes-tu la valeur "Défauts" à la colonne de "défaut" de la Feuil2 ?
Merci,
Pierre
La variable libellésdéfaut fait vraisemblablement référence à la plage de recherche des défauts.
Mais comment associes-tu la valeur "Défauts" à la colonne de "défaut" de la Feuil2 ?
Merci,
Pierre
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
23 oct. 2012 à 11:56
23 oct. 2012 à 11:56
split() découpe ta phrase sur chaque retour à la ligne et recherche pour chaque morceau la gravité.
La gravité maxi rencontrée est retournée.
Pour chaque fonction vba dans le code tu peux faire F1 dessus pour avoir l'aide excel et voir son rôle.
eric
La gravité maxi rencontrée est retournée.
Pour chaque fonction vba dans le code tu peux faire F1 dessus pour avoir l'aide excel et voir son rôle.
eric
7 oct. 2012 à 02:36
Modifié par eriiic le 7/10/2012 à 07:11
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
7 oct. 2012 à 10:32
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
9 oct. 2012 à 01:33