Nombre d'occurrences de différents libellés selon 1 critère
#1
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 10-04-2013 15h26
Bonjour à tous,

Besoin d'un (gros) coup de main pour classer des libellés en fonction de leur fréquence d'apparition et d'un critère.

Un questionnaire auprès d'une vingtaine d'interlocuteurs recueille des informations de "critère" sur une liste de produits.
Ainsi sur le produit 1, les interlocuteurs indiquent le critère le plus important à leurs yeux: "trop petit" "trop grand" "trop cher" etc., idem pour tous les produits.
J'ai donc un fichier simple avec un champ indiquant l'interlocuteur, un champ indiquant le produit, un champ indiquant le critère.

Face à chaque produit dans un tableau de synthèse je cherche à afficher le critère cité le plus souvent par les interlocuteurs, puis celui apparaissant en deuxième puis troisième position.

Je joins la structure du fichier et un exemple de résultat attendu, l'un d'entre vous aurait-il une idée ?

Un grand merci pour votre aide,

mth
Pièce jointe:
xlsx test.xlsx   [ Taille: 23.51 Ko - Téléchargements: 472 ]
Hors Ligne
Rapport   Haut 

Re: Nombre d'occurrences de différents libellés selon 1 critère
#2
Accro XLPages

Inscription: 09/05/2007
De Courcelles-les-Montbéliard

Messages: 286

Système d'exploitation:
PC & Mac
Version Excel utilisée:
Mac 2004 - 2011, et PC 2003 - 2010
Posté le : 10-04-2013 21h00
Bonsoir Mireille

Heureux de te venir en aide.

Pour connaître la valeur la plus présente dans une liste, il y a la fonction MODE(). Dans la dernière version d'office 2010, Microsoft a rajouté la fonction MODE.MULTIPLE().

Mais cette fonction s'applique sur des valeurs numériques, dans ton cas il faudra faire une conversion. Et la fonction MODE retourne un message d'erreur, si aucune des valeurs de la liste n'est présente plus d'une fois.


La première opération est de convertir ton critère (donnée de type texte) en une valeur numérique. Pour faire cette conversion, j'ai indiqué dans la colonne G la liste de tous les critères visibles dans ton exemple (l'ordre n'a pas d'importance), ensuite par la fonction de la colonne E, je transforme le critère en valeur numériques uniques. La formule de la colonne F permet de doubler les valeurs et de s'affranchir du message d'erreur de MODE, quand aucune valeur n'est présente plus d'une fois.

Après cette conversion, tu peux passer au calcul de ton tableau. Trois formules différentes sont nécessaires. Formule à base de matricielle (validation par Ctrl+Shift+Entrer)

@+Jean-Marie

Pièce jointe:
xlsx MODE MIREILLE.xlsx   [ Taille: 10.47 Ko - Téléchargements: 505 ]
Hors Ligne
Rapport   Haut 

Re: Nombre d'occurrences de différents libellés selon 1 critère
#3
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 10-04-2013 22h31
Bonsoir Jean-Marie

Un énorme merci à toi d'être passé par là et d'avoir planché sur ma question. Sourire... je me doutais bien qu'elle ne te résisterait pas.

J'avais tenté une matricielle de ce type:

=INDEX($C$2:$C$17;MODE(SI(($C$2:$C$17<>"")*($B$2:$B$17=$G4);EQUIV($C$2:$C$17;$C$2:$C$17;0))))

mais effectivement je calais complètement sur le #N/A en deuxième ou 3eme position s'il ne me restait qu'un critère, et impossible de me dépatouiller avec ce #N/A!

Comme tu l'indiques je vais donc constituer la liste des critères puis tes formules intermédiaires.

Encore un très très grand merci Jean-Marie pour ton aide, grosses bises et à bientôt

Mireille
Hors Ligne
Rapport   Haut 

Re: Nombre d'occurrences de différents libellés selon 1 critère
#4
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 10-04-2013 22h31
Bonsoir Mth, JeanMarie, le Forum,

Compte tenu de tout le travail que notre amie Mth fourni sur le présent site, il n'était bien évidemment pas question de passer sans m'arrêter sur ce sujet
Bien évidemment aussi, la solution proposée par mes soins (en pièce jointe) est basée sur VBA et, est beaucoup, beaucoup moins élégante que celle fournie par l'ami JeanMarie ! Bravo JM.

Pour info, le code VBA utilisé est le suivant :
Option Explicit

'myDearFriend!  -  www.mdf-xlpages.com
Sub Traitement()
Dim CoupleProdCrit As New Collection
Dim TabTemp As Variant, TabResult() As Variant
Dim CProd As Integer
Dim T$
Dim Lmax As Long, L As Long, N As Long, C As Integer
    'Les produits sont listés en colonne n° 2 (les critères dans la colonne suivante)
    'et il y a une ligne d'entête
    CProd = 2
    'Charge les données dans un tableau variant temporaire
    With Sheets("Feuil1")
        Lmax = .Cells(.Rows.Count, CProd).End(xlUp).Row
        TabTemp = .Range(.Cells(2, CProd), .Cells(Lmax, CProd + 1)).Value
    End With
    'Détermine la liste des couples Produits/Critères (sans doublons)
    'et compte le nombre d'occurences
    For L = 1 To Lmax - 1
        On Error Resume Next
            N = CoupleProdCrit.Count
            T = TabTemp(L, 1) & "|" & TabTemp(L, 2)
            CoupleProdCrit.Add T, T
        On Error GoTo 0
        If CoupleProdCrit.Count > N Then
            ReDim Preserve TabResult(1 To 2, 1 To N + 1)
            TabResult(1, N + 1) = CoupleProdCrit(T)
            TabResult(2, N + 1) = 1
        Else
            For C = 1 To UBound(TabResult, 2)
                If TabResult(1, C) = T Then
                    TabResult(2, C) = TabResult(2, C) + 1
                    Exit For
                End If
            Next C
        End If
    Next L
    TabResult = Application.Transpose(TabResult)
    'Afficher les résultats mis en forme et classés
    With Sheets("Résultats")
        .Cells.Delete
        .Range(.Cells(1, 1), .Cells(UBound(TabResult, 1), UBound(TabResult, 2))).Value = TabResult()
        .Columns(2).Insert Shift:=xlToRight
        .Columns(1).TextToColumns Destination:=.Range("A1"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar:="|"
        .UsedRange.Sort Key1:=.Range("A1"), Order1:=xlAscending, Key2:=.Range("C1"), _
            Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
            Orientation:=xlTopToBottom
        TabResult = .UsedRange.Cells.Value
    End With
    MsgBox "Traitement réalisé. Voir onglet 'Résultats'"
End Sub
Nb : oui, oui... c'est vrai, je n'ai pas vraiment fait dans la dentelle sur ce coup là ! C'est même limite de l'artillerie lourde (à mon grand regret)...

Cordialement,
Pièce jointe:
zip PourMth.zip   [ Taille: 22.95 Ko - Téléchargements: 398 ]

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Nombre d'occurrences de différents libellés selon 1 critère
#5
Accro XLPages

Inscription: 23/05/2008
De La Varenne Saint-Hilaire

Messages: 356

Système d'exploitation:
PC
Version Excel utilisée:
2010
Posté le : 10-04-2013 22h51
Bonsoir Didier

Merci infiniment Didier pour ton aide. Je suis vraiment gâtée !! Maître ès Formules et Maître ès VBA à mon secours, vraiment merci

Tu parles d'artillerie lourde Didier mais rudement efficace, et je comprends bien le raisonnement. Outre son efficacité cela me permet de mettre en pratique un Tableau, je n'utilise généralement pas les tableaux et j'ai bien tort, tu m'offres là un beau cas pratique Didier!

Me voilà donc avec l'embarras du choix, vraiment un grand merci car je tournais en rond sans aucune solution satisfaisante, et j'ai maintenant de beaux exemples que je pourrai appliquer à d'autres situations grâce à toi Didier et à Jean-Marie.

Mille merci pour le temps que tu m'as consacré Didier ainsi que JM, bises et à très bientôt,

Mireille


Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes