Travaux sur plusieurs mots contenus dans des cellules différentes

Bonjour à tous,

Merci d'avance pour votre aide. Voici mon exposé: Un individu passe un premier test de dénomination sur 40 images dont les résultats sont répartis en 2 catégories: 20 images correctement dénomées "Réussies" et 20 images incorrectement dénomées "Echouées". De ces 2 listes nous en conservons à chaque fois la moitié (10 mots "Réussis conservés" et 10 mots "Echoués conservés"). Je récupère des listes de mots dans un fichier excel, dans des cellules distinctes, séparés par des virgules. Je dois automatiser des process de tri sélectif:

Etape 1: je vois 2 cellules contenant chacunes les mots du premier test séparés par des virgules.

Cellule A2 ("Réussis") par exemple: chien, chat, abricot, poule, citron, voiture, avion, etc...(2O mots au total)

Cellule B2 ("Réussis conservés"): chien, abricot, maison, citron, jardin, ballon, toupie, etc...(10 mots au total)

Besoin: Remplir ma cellule C2 ("Réussis non conservés") en affichant les mots, séparés par une virgule qui sont en A2, mais qui ne figurent pas en B2, donc en suivant mon exemple ci dessus: chat, poule, voiture, avion, .....(10 au total)

formule : "[Liste de lots en C2 = Liste détaillée des mots en A2 - liste détaillée de mots en B2]"

Etape 2: identique à la première même traitement des mots "Echoués"

D2 ("Echoués"): wagon, lunette, carabine, cuisine, carré, etc...(2O mots au total)

E2 ("Echoués conservés"): carabine, lunette, citrouille, chenille, bateau, etc...(10 au total)

Besoin: dans ma cellule F2 ("Echoués non conservés") il me faut afficher les mots, séparés par une virgule qui sont en D2, mais qui ne figurent pas en E2, donc dans en suivant mon exemple ci dessus: wagon, cuisine, carré, etc...(10 au total)

[Liste de lots en F2 = Liste détaillée de mots en D2 - liste détaillée de mots en E2 ]

Connaissez vous une formule qui me permette de faire cette opération sachant que je dois la "décliner" sur une cohorte de plusieurs dizaines de personnes différentes.

besoin1

J'ai aussi une seconde demande concernant le second test que je mettrai dans un nouveau post. Mille merci par avance, j'ai passé un temps fou à essayer en solo et je n'y suis pas arrivé.

FLourdin

Bonjour,

trop dur pour moi mais...il y a bien plus costaud

une copie anonymisée de ton fichier serait bienvenue pour que d'autres t'aident

P.

Bonsoir,

une solution via une fonction personnalisée

Function notin(r, liste)
    t = Split(liste, ",")
    For i = LBound(t) To UBound(t)
        If InStr(r, Trim(t(i))) = 0 Then
            ni = ni & t(i) & ","
        End If
    Next i
    If ni <> "" Then notin = Left(ni, Len(ni) - 1) Else notin = ni
End Function

utilisation de la fonction

=notin(liste de mots sélectionnés,liste de mots)

renvoie les mots de la liste de mots qui ne sont pas dans la liste de mots sélectionnés.

exemple A1 contient bleu,vert,jaune et b1 bleu,vert

=notin(b1,A1)

renverra jaune

Bonjour,

j'en avais faite une aussi, mais trop tard...

Attention que "chien" est différent de "chien ". Ce qui risque de te poser de problème, surtout pour le dernier mot qu'on fait rarement suivre d'une espace.

Une adaptation du code de h2so4 pour s'en affranchir :

Function notin(r, liste)
    t = Split(Replace(Application.Trim(liste), ", ", ","), ",")
    r = Replace(Application.Trim(r), ", ", ",")
    For i = LBound(t) To UBound(t)
        If InStr(r, Trim(t(i))) = 0 Then
            ni = ni & t(i) & ","
        End If
    Next i
    If ni <> "" Then notin = Left(ni, Len(ni) - 1) Else notin = ni
End Function

eric

Merci à tous, je teste cette première partie et je reviens vers vous une nouvelle demande et un fichier anonymisé si je suis encore trop limité.

Voici un fichier anonymisé parce que selon l'individu qui passe le test les mots qui composent la liste du test 1 peuvent être completement différents et la fonction considère que les mots du test 1 sont toujours identiques. Merci en tous cas pour votre rapidité de réponse.

FLourdin

Bonjour,

ton classeur est en mode calcul manuel. tu ne vois donc pas le résultat des formules que tu as copiées. fais F9 pour avoir le résultat.

Merci pour cette réponse, je réalise à regrets que je suis très au delà de mon seuil de compétences...Du coup je repars au niveau 0 pour trouver des tutos sur les fonctions personnalisées. Je reviens vers vous une fois que je suis sorti du pédiluve et que je m'approche du bassin. Bonne soirée

Bon vous êtes des dieux! j'y suis arrivé...Je vais boire un coup à votre santé et je reviens (sans doute demain) avec la suite du besoin...

Merci Merci Merci!

Bonsoir, c'est vendredi et pas encore le weekend...J'en suis à l'étape de vérification des mots qualifiés pour déceler les erreurs commises par les examinateurs. J'ai besoin d'une évolution de la fonction "notin" pour pouvoir comparer une liste de mots existante (la source) avec non plus une mais 2 cellules différentes et pouvoir repérer les mots qui n'ont pas été traités.

notin

Exemple (ce que j'ai aujourd'hui)

Liste 1 (source 10 ou 20 mots) : avion, balai, salade, chien, montre, chauffeur, pupitre, ordinateur, bureau, tasse

Liste 2 ( Mots réussis): avion, chien, montre, pupitre, tasse

Liste 3 (mots échoués): chauffeur, bureau

Ce qu'il me faut

Si les examinateurs avaient bien fait leur taf, je ne devrais pas avoir de mots de la liste 1 qui ne soient ni dans la 2 ou dans la 3. Pourtant c'est le cas pour certains sujets. Je dois "flagger" cette "erreur" en désignant les mots "oubliés"

Liste 4 (mots non traités) : ceux qui sont dans liste 1 mais qui ne sont pas dans liste 2 ni liste 3. Dans mon exemple balai et salade.

Attention les liste 2 et 3 ne sont pas adjacentes, la plage n'est pas continue, les cellules sont séparées par d'autres cellules. comme sur l'exemple ci dessous.

besoin3

Bonne nuit et merci pour ceux qui bossent le samedi (je me sentirai moins seul) mais surtout bon weekend à tous

FL

BOnjour,

cela change un peu l'esprit initial de la fonction

voici une version adaptée, la fonction renvoie la liste des mots de r absent de liste1 et de liste 2

Function notin(r, liste1, Optional liste2 = "")
If liste2 <> "" Then liste = liste1 & "," & liste2
    t = Split(r, ",")
    For i = LBound(t) To UBound(t)
        If InStr(liste, Trim(t(i))) = 0 Then
            ni = ni & t(i) & ","
        End If
    Next i
    If ni <> "" Then notin = Left(ni, Len(ni) - 1) Else notin = ni
End Function

r=liste des mots à rechercher

liste1 et liste2, listes de mots parmi lesquels rechercher les mots de R

Bonjour,

Merci pour cette fonction, malheureusement lorsque je la teste j'obtient un message d'erreur et VBA "grince des dents"

debug1 debug

Depuis le debut de la journée, j'ai été confronté à 2 problèmes et c'est peut être ma solution qui fait tout foirer.

- J'ai commencé par concatener les données textes de 2 cellules pour former une nouvelle liste. Ce faisant j'ai du rajouter une virgule à la fin du dernier mot de chaque céllule pour éviter que la concaténation ne me cree un seul mot avec le dernier de la cellule 1 et le premier de la cellule 2. J'ai fait un vieux "=AI & "," qui a fonctionné MAIS qui maintenant fait foirer la fonction ci dessous

Function NbMots(cellule)

'permet de compter les mots d'une seule cellule et de convertir en nombre

t = Split(cellule, ",")

i = UBound(t) + 1

NbMots = i

End Function

car il trouve 21 mots au lieu de 20 (normal pcq il compte la virgule comme un nouveau mot (je pense)

Voici ma démarche:

Source: La cellule I5 est obtenue automatiquement d'un extract de la base que je reçois (ici): tigre, armoire, ballon, horloge, pantalon, menton, couverture, aubergine, culotte, farine

Etape 1 : Je rajoute une virgule à la fin de "farine" et je copie en K5

Etape 2 : Je lance la nouvelle fonction en AI5 pour comparer les mots de la cellule Y5 (autre extract reçu de la base): couverture, menton, armoire, ballon" et de la cellule AC5 (autre extract reçu de la base): horloge, aubergine avec I5 (extract "source" - ps : avec K5 ça ne marche pas non plus) en espérant obtenir une nouvelle liste avec: pantalon, culotte, tigre, farine mais j'ai un message d'erreur à la place.

debug3 a

Bonjour,

notin est <> de notinverse....

P.

Merci d'avoir spotté mon noobisme. J'ai corrigé les occurences mais le résultat n'est toujours pas le bon...

result 0 result 1

Il me retourne 0 au lieu des 4 termes attendus. Et le match de rugby qui commence bientôt :s

Merci

Rechercher des sujets similaires à "travaux mots contenus differentes"