Rapprocher des grilles de remises multiples à des modèles

Bonjour,

Voici mon problème :

J'ai d'un coté 40 grilles de remises types comportant 38 conditions et de l'autre plusieurs milliers de clients avec des grilles qui correspondent ou ne correspondent pas à 1 de mes 40 modèles.

Je souhaite donc pour chaque client attribuer 1 des 40 modèles en lui trouvant le modèle le plus proche quand l'égalité parfaite n'existe pas et là je n'arrive pas à traduire les 2 conditions en formule :le plus grand nombre de conditions équivalentes et si 2 grilles sont équivalentes au point de vue du nombre prendre celle dont les valeurs sont les plus proches de la grille client existante.

Quelqu'un aurait il une idée ?

Merci

bonjour,

une proposition via une fonction personnalisée.

Function findmatch(remisesclient, tableauremises)
    'remisesclient : plage des remises d'un client
    'tableauremises : plage des remises possibles, en première colonne le numéro de la remise

    optimum = 999999 ' à minimiser
    indexoptimum = 0 'meilleur match trouvé

    For Each r In tableauremises.Rows
        ctridentique = 0
        ecart = 0
        For Each c In r.Columns
            If c.Column > 1 Then
                If c = remisesclient(c.Column - 1) Then
                    ctridentique = ctridentique + 1
                Else
                    ecart = ecart + Abs(c.Value - remisesclient(c.Column - 1).Value)
                End If
            End If
        Next c
        If ctridentique = r.Columns.Count - 1 Then 'modèle trouvé
            findmatch = r(1).Value
            Exit Function
        End If
        ecart = ecart + (r.Columns.Count - ctridentique) * 100
        If ecart < optimum Then optimum = ecart: indexoptimum = r(1).Value
    Next r
    findmatch = indexoptimum
End Function

intégrée dans le fichier ci-joint, avec exemple d'utilisation (voir formules en C22:C24)

bonjour H2SO4,KPILRI,

0.2 sec pour 100 lignes (au lieu de la différence, ici c'est la différence^2, qui se calcule dans la plage AO3:AO42

Merci pour vos retours, j'ai testé les 2 propositions sur plusieurs exemples et je tombe sur les mêmes grilles, pour moi même si la méthode n'est pas la même le résultat est conforme dans les 2 cas.

PS : formule personnalisée = formule lambda ?

re-,

formule personnalisée = formule lambda ?

non, il s'agit d'une formule programmée en VBA et nécessite donc l'activation des macros et la sauvegarde du fichier avec ses macros.

ok merci, je n'ai pas eu à lancer la macro sur le fichier pour rafraichir avec mes données, juste à changer les plages dans la formule du résultat , du coup je me posais la question...

re, si je compare les résultats de l'USF de H2SO4 et ma macro, dans 64 des 100 cas, on a le même résultat, donc, ce n'est pas toujours comme ça !!!

bonsoir BsAlv,

effectivement comme on n'utilise pas la même façon de calculer, (somme de valeur absolue des différences vs somme des carrés des différences) on peut avoir des résultats différents.

re, oui, c'est évident, mais la réaction de hier 17:05 disait quelque chose différent, mais mon premier sera ton deuxieme, ...

Rechercher des sujets similaires à "rapprocher grilles remises multiples modeles"