Affectation mensualisée des dépenses et recettes

Bonjour à tous,

J'ai créé un fichier (en pièce jointe) permettant de suivre les recettes et les dépenses d'un compte.

Dans l'onglet "Base" j'ai le tableau "Paramétrage" qui définit les différentes sources de recettes et de dépenses. Il y a aussi les 12 mois de l'année. Ces données me servent à alimenter les listes déroulantes de l'onglet "2014".

Dans l'onglet "2014" il y a un Bouton "Saisie". Celui-ci ouvre un Userform dans lequel je documente le date du jour, le mois, l'intitulé de l'opération et le montant.

En appuyant sur "Valider" les différentes valeurs sont transférées dans le tableau de synthèse.

C'est là que les choses se compliquent pour moi !

Je voudrais que l'affectation se fasse dans les colonnes du mois sélectionné (dans le Userform) et qu'en fonction de l'intitulé, l'affectation du montant soit en Recettes ou en Dépenses (suivant les listes des colonnes I et J de l'onglet "Base").

J'espère avoir été clair dans mes explications.

Un grand merci à toute personne qui pourra m'aider en consacrant un peu de son temps à résoudre mon problème.

Bonne journée à tous.

Salutations.

Thierry

112suivi-comptes.xlsm (51.31 Ko)

Bonjour Biquet08 et

Voici le code du bouton valider de ton USF à remplacer

Private Sub BC_Valide_Click()
  Dim sAnnée As String
  Dim ColFind As Long, ColType As Long, ChoixMois As Integer, ColMois As Long
  Dim NLig As Long
  'Le champ "Date" ne doit pas être vide
  If Me.TB_jour = "" Then
    'Retour à la saisie du montant
    Me.TB_jour.SetFocus
    Exit Sub
  End If

  'Le champ "Mois" ne doit pas être vide
  If Me.CB_Mois = "" Then
    'Retour à la saisie du montant
    Me.CB_Mois.SetFocus
    Exit Sub
  End If

  'Le champ "Intitulé" ne doit pas être vide
  If Me.CB_intitule = "" Then
    'Retour à la saisie du montant
    Me.CB_intitule.SetFocus
    Exit Sub
  End If

  'Le champ "Montant" ne doit pas être vide
  If Me.TB_montant = "" Then
    'Retour à la saisie du montant
    Me.TB_montant.SetFocus
    Exit Sub
  End If
  ' Avec la feuille Base
  With Sheets("Base")
    ' Récupérer la dernière année en cours
    sAnnée = .Range("B" & Rows.Count).End(xlUp).Value
    On Error Resume Next  ' En cas d'echec on continue
    ' Récupérer la colonne contenant le choix
    ColFind = .Range("H:I").Find(What:=Me.CB_intitule, LookIn:=xlValues, LookAt:=xlWhole, _
                                 SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Column
    ColType = ColFind - 8  ' Pour déterminer si 1ère colonne = Recettes / 2ème colonne = Dépenses
    On Error GoTo 0
  End With
  ' Avec la feuille de l'année en question
  With Sheets(sAnnée)
    ' Numéro du mois choisi
    ChoixMois = 1 + Me.CB_Mois.ListIndex
    ' Calculer la colonne
    ColMois = 2 + (5 * (ChoixMois - 1) * (1 + (ChoixMois = 1)))
    ' Trouver la 1ère ligne vide dans la colonne concernée
    NLig = .Cells(Rows.Count, ColMois).End(xlUp).Offset(1, 0).Row
    With .Cells(NLig, ColMois)
      'Envoyer l'intitulé dans la feuille
      .Value = Me.CB_intitule.Value
      'Envoyer la date dans la feuille
      .Offset(0, 1).Value = Me.TB_jour.Value
      'Envoyer le montant dans la bonne colonne
      ' en s'assurant de la valeur en monnaie (ccur)
      .Offset(0, 2 + ColType).Value = CCur(Me.TB_montant)
      .Offset(0, 2 + ColType).NumberFormat = "#,##0.00\ €"
    End With
  End With
  'Vider les cases saisies pour une nouvelle fiche
  Me.CB_intitule.Value = ""
  Me.TB_jour.Value = ""
  Me.TB_montant.Value = ""
End Sub

A+

Bonsoir BrunoM45,

Je te remercie grandement pour ton aide

J'ai testé ta solution cela marche nickel, c'est génial.

Me reste plus qu'à essayer de comprendre ton code.

Encore merci et bonne soirée.

Thierry

Rechercher des sujets similaires à "affectation mensualisee depenses recettes"