Calcul des parts fiscales selon 2 critères changeants

Bonjour à tous,

Je veux que Excel m’effectue un calcul de parts selon 2 critères changeants. Ci-joint le fichier :Nombre de parts.xlsx (14,3 Ko)

L’onglet Part, indique le nombre (NB) de part (1,2…) en fonction de la situation familiale (Célibataire, Divorcé(e)…) et le nombre d’enfant (1,2…).

Lorsque le nombre d’enfants est supérieur ou égale à 6 (donc 6, 7… enfants), le nombre de part ne change plus en fonction de la situation familiale. C’est-à-dire par exemple que le nombre de part pour un célibataire avec 7 enfants doit toujours être 4,5 ; celui d’un marié(e) avec 8 enfants est 5… Le nombre d’enfant est plafonné à 6 !

Dans l’onglet Calcul, j’ai mis une liste déroulante en A2 Célibataire, Divorcé(e)…) pour la Situation Familiale et en B2 (1,2,… jusqu’à 10) pour le Nb d’enfant.

Avec une procédure VBA, je veux par exemple que lorsque je déroule dans l’onglet Calcul en A2 Célibataire et 1 en B2, qu’il soit écrit 2 en C2 tel qu’en ligne 7 de l’onglet Part. Ainsi de suite de façon dynamique.

Compte tenu du nombre de cas possibles, il est laborieux de le faire avec les formules SI imbriqués… Je pense que c’est faisable à partir du code : CreateObject(« Scripting.Dictionary »). Hélas, je ne sais pas le manipuler. Merci d’avance,

Bonjour Rod
Ma proposition ci-jointe

Pour la mettre à l’épreuve j’ai rajouté des cas onglet « Calcul »

Cliques dans cet onglet sur le bouton « Traitement »

La procédure s’appuie sur les informations de l’onglet « Part »

Fais des essais et dis moi

Fichier de type xlsm à maintenir dans ce format

Nombre de parts.xlsm (23,9 Ko)

Merci. Les tests sont bons. Je vais l’intégrer à mon principal fichier Excel. Je reviendrai en cas de difficultés par la suite.
Encore merci.

Bonjour,

au lieu de cliquer sur un bouton pour afficher les résultats, ce dernier peut s’afficher à chaque ligne suivant les données fournies
Macro à placer dans la feuille "Calcul"

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo fin
  If Not Application.Intersect(Target, Range("B" & Target.Row)) Is Nothing Then
  Dim i%, Dl%, configuration$, Ws As Worksheet
  Set Ws = Sheets("Part")
  Dl = Ws.Range("A" & Rows.Count).End(xlUp).Row
    If Target.Value < 7 Then
    configuration = Range("A" & Target.Row) & Target.Value
    Else
    configuration = Range("A" & Target.Row) & 6
    End If
  End If
  For i = 2 To Dl
    If Ws.Range("A" & i) & Ws.Range("B" & i) = configuration Then
      Range("C" & Target.Row) = Ws.Range("C" & i)
    End If
  Next i
fin:
End Sub

Bonjour à tous,

Merci Mimimathy pour cette autre approche,
J’apprends beaucoup de toi et FFO. Je pense que je serai bientôt capable d’écrire du code en VBA Excel.

Bonne journée,

Re,

J’ai continuer les tests avec le fichier ci-joint Nombre de parts M.xlsm (18,3 Ko) (attention, pour me faciliter l’insertion de ce code dans le fichier principal, j’ai déplacé la Situation familial en B10, le Nb d’Enfant en C10 et le Nb de Part en D10 toujours dans l’onglet Calcul et rajouter des infos de part et d’autres de ces cellules pour se rapprocher de la configuration réelle).

J’ai constaté que la macro fonctionne mais ne donne pas le résultat attendu dans le cas de la Situation familiale Divorcé(e) (une erreur assez subtile).

  • Le détail des résultats attendus et inattendus de calcul du Nb de Part avec le cas Divorcé(e):

Nb d’Enfant = 0 Nb de Part = 1 Oui
Nb d’Enfant = 1 Nb de Part = 1 Non, plutôt 2
Nb d’Enfant = 2 Nb de Part = 1 Non, plutôt 2,5
Nb d’Enfant = 3 Nb de Part = 3 Oui

Le reste est juste. Possible de corriger ?

  • Lorsque je déroule la Situation familiale à par exemple Célibataire et le Nb d’Enfant à 2, le Nb de Part affiche 2,5 tel qu’attendu. Cependant, lorsque je change seulement Célibataire en Marié(e) par exemple et conserve le Nb d’enfant à 2, le Nb de Part affiche toujours 2,5 au lieu de 3. Je dois donc toujours dérouler 2 informations. Est-il possible de profiter de la présence d’une information et que l’autre s’ajuste pour obtenir le résultat attendu ?

  • Pour apprendre, après tes corrections, la ligne On Error GoTo fin sera t-elle encore nécessaire ?

Merci,

Re,
Il fallait déjà modifier dans la macro le lettre des colonnes de la feuille calcul dans la macro
Ensuite, le bug vient de tes données inscrite dans la feuille « Part »
Divorcé n’est pas égale à Divorcé(e)

L’expression On Error GoTo fin sert si tu veut effacer un bloc de cellule afin d’éviter un plantage macro.
A voir avec correction
Nombre de parts M.xlsm (24,0 Ko)

Merci. J’apprécie aussi la rapidité.
Je fais les tests et t’en dis.

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.