Formule complexe pour moi

Bonjour à tous,

Suite à votre aide ces derniers jours je me suis lancée dans une simulation de recette d'un service à l'hopital mais je bloque sur une formule. Je vous poste mon fichier:

En fait je cherche à simuler les recettes avec des exemples de patients c'est à dire :

  • Pour chaque patient il y a 3 types d'actes ATM, ADE, ADI
  • Pour chaque type on peut facturer une fois 100% pour le plus cher + 50% du deuxième plus cher.
  • Ensuite on additionne les résultats.

J'ai utilisé une formule =MAX(série)+GRANDE.VALEUR(série)/2 mais elle devient fausse quand je mets des conditions supplémentaire ATM/ADE/ADI, bref je suis bloquée car je recommence tout juste à me servir d'excel. De plus c'est très fastidieux de l'appliquer pour chaque exemple

Merci d'avance pour votre aide

Emma

Bonjour,

je ne sais pas le faire par formule mais voici une solution en VBA, si j'ai bien compris ton énoncé.

A vérifier.

Bonjour,

Oui les résultats semblent bons merci beaucoup, pouvez-vous m'expliquer la marche à suivre si je dois le faire sur un autre fichier, j'imagine que je dois me plonger dans les macro.

Et comment le faire par formule, du moins sur un patient, si c'est possible ?

Merci

Emma

Sur les autres fichiers, le plus simple serait de conserver exactement le même format et de recopier la macro.

ou bien de conserver ce fichier comme modèle, lancer la macro pour chaque tableau à traiter (toujours au même format) et sauvegarder le fichier avec ses résultats sous un autre nom de fichier.

Je serais personnellement incapable de reproduire le même résultat par formule, même pour un seul client...

Les experts en formules sauront te dire comment faire (au moins pour un client; je ne sais pas s'il existe une solution par formule pour l'ensemble du tableau).

Oui pour l'ensemble ca me parait compliqué, si jamais quelqu'un de doué en formule passe par là ca m'interesse vraiment d'avoir la solution par formule !

Merci de ton aide Game Over

Emma

Bonsoir à tous,

oui, par formule ça risque d'être chaud.

Je te propose une fonction personnalisée peut-être plus facile à mettre en oeuvre sur des feuilles différentes.

Dans un module standard :

Function cout(indice As Range, ATM As Range) As Variant
    Const code As String = "ATM,ADI,ADE"
    Dim ind() As Long, pos As Long, lig As Long
    ReDim ind(0 To (Len(code) + 1) / 4, 0 To 1)
    ' contrôle
    If indice.Columns.Count > 1 Or ATM.Columns.Count > 1 Or indice.Rows.Count <> ATM.Rows.Count Then
        cout = CVErr(xlErrValue)
        Exit Function
    End If
    ' calcul cout
    For lig = 1 To ATM.Count
        pos = InStr(code, UCase(ATM(lig, 1)))
        If pos > 0 And ATM(lig, 1) <> "" Then
            pos = pos \ 4
            If indice(lig, 1) > ind(pos, 0) Then
                ind(pos, 1) = ind(pos, 0)
                ind(pos, 0) = indice(lig, 1)
            ElseIf indice(lig, 1) > ind(pos, 1) Then
                ind(pos, 1) = indice(lig, 1)
            End If
        End If
    Next lig
    For lig = 0 To UBound(ind)
        cout = cout + ind(lig, 0) + ind(lig, 1) / 2
    Next lig
End Function

Syntaxe :

=cout(plage_des_indice, plage_des_ATM)

Ex :

=cout(Q5:Q11;T5:T11)

Les plages doivent avoir 1 colonne de large et même longueur sinon #VALEUR!

Tu peux modifier la constante de la 1ère ligne : Const code As String = "ATM,ADI,ADE".

La macro s'adapte au nombre de codes définis, ils doivent être en majuscule ici (indifférent sur la feuille)

eric

eric

Merci Eric

Emma

Tiens, j'avais le fichier exemple n'était pas passé, trop gros.

Le voici, voir formules en U11 et U17.

eric

15projet2.zip (162.87 Ko)
Rechercher des sujets similaires à "formule complexe moi"