XL 2019 Ajouter une date de fin pour un débit/crédit récurrent via VBA

Praveena

XLDnaute Nouveau
Bonjour,

Travaillant sur un fichier de suivi bancaire, j'ai mis un place un UserForm pour planifier automatiquement des débit/crédit récurrents. (Pour qu'ils soient automatiquement injecté dans le mois concernés une fois le jour J.) Voici à quoi ressemble le userForm:

94571_61d412909f0eb444472866.png


Voici le code que j'ai injecté:

VB:
Private Sub CommandButton1_Click()
Dim dl%, ws As Worksheet
Set ws = Sheets("Recurrent")
dl = ws.Range("A" & Rows.Count).End(xlUp).Row + 1

With ws
    .Range("A" & dl).Value = Format(TextBox1, "mm-dd-yyyy")
    .Range("B" & dl).Value = ComboBox1
    .Range("C" & dl).Value = ComboBox2
    .Range("D" & dl).Value = TextBox2
    If OptionButton3.Value = True Then
      .Range("E" & dl).Value = OptionButton3.Caption
    ElseIf OptionButton4.Value = True Then
      .Range("E" & dl).Value = OptionButton4.Caption
    End If
    If TextBox5 <> "" Then .Range("F" & dl).Value = CDbl(TextBox5.Value)
    If OptionButton1.Value = True Then
    .Range("G" & dl).Value = OptionButton1.Caption
    ElseIf OptionButton2.Value = True Then
    Range("G" & dl).Value = OptionButton2.Caption
    End If
End With

Unload Me
DebitRecurrent.Show
End Sub

Private Sub TextBox5_AfterUpdate()
On Error Resume Next
Me.TextBox5 = Replace(TextBox5, ".", ",")
Me.TextBox5 = Format(TextBox5.Value, "# ##0.00 €")
End Sub

et pour le transfert:

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
 Dim dl%, ws As Worksheet
 On Error Resume Next
 If ActiveSheet.Name <> "Reccurent" Or ActiveSheet.Name <> "Récapitulatif Mensuel" Or ActiveSheet.Name <> "Récapitulatif Mensuel" Or ActiveSheet.Name <> "Explication" Or ActiveSheet.Name <> "Accueil" Then
  dl = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row
     ActiveSheet.Range(Cells(13, 2), Cells(dl, 10)).Select
     ActiveWorkbook.ActiveSheet.Sort.SortFields.Clear
     ActiveWorkbook.ActiveSheet.Sort.SortFields.Add Key:=Range("B13"), _
         SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
         xlSortTextAsNumbers
     With ActiveWorkbook.ActiveSheet.Sort
         .SetRange Range(Cells(13, 2), Cells(dl, 10))
         .Header = xlNo
         .Orientation = xlTopToBottom
         .Apply
     End With
End If
    Range("B13").Select
End Sub

J'ai écrit qu'avec la première date de prélèvement, or on me demande de mettre aussi une date de fin, je ne vois pas comment intégrer cette condition...

Est - ce que vous pouvez m'aider s'il vous plaît?

Cordialement

Praveena
 

Praveena

XLDnaute Nouveau
Bonjour
Bien mais moi je ne sais pas travailler sur une image !!! d'autres aussi je pense
Donc un fichier et quelques explications sup. ( généralement un usf renvoie dans des cellules) seraient déjà mieux pour étudier le sujet
Bonjour,

Voici le fichier !

Concernant le fichier, c'est pour suivre un compte bancaire :

- Il y a un premier userform pour rentrer tous les débits et crédit du compte, il injecte automatiquement dans la feuille du mois concernés à partir de la date d'opération.

- Le deuxième correspond à créer un débit récurrents ( comme un forfait mobile par exemple, prêt...) sur chaque mois. Il faut que la ligne s'ajoute automatiquement une fois la date arrivé. Dans le fichier à l'état présent, il marche à l'ouverture du fichier (après enregistrement). Or du coup, il y avait juste la date du premier prélèvements et du coup je veux intégrer une date de fin pour le débit et/ou crédit récurrent. ( Dans le cas où on rembourse un prêt par exemple.) Du coup, est - ce qu'il y a un code permettant de définir une date de fin?

Cordialement
Praveena
 

Pièces jointes

  • 3 - suivie-de-compte-bancaire.xlsm
    244.8 KB · Affichages: 27

herve62

XLDnaute Barbatruc
Supporter XLD
La 1ére partie me parait correcte sauf le format date de la textbox à revoir ou il serait préférable d'obliger une date du genre :
VB:
If Not IsDate(nouv_date) Then
        MsgBox "Format incorrect > jj/mm/aaaa" & (Chr(10) & Chr(13)) & "Ou Date non valide.."
        nouv_date = ""
        nouv_date.SetFocus
End If
Pour l'usf "Recurent" il faut reprendre la BOX6 et mettre dans l'onglet après avoir ajouter une colonne de FIN
Mon idée est de mettre en A et B décaler le reste
A l'ouverture du fichier ( auto open) lancer une Sub qui analyse la date du jour , puis va lire toutes les dates (mois) de l'onglet comme : 'Début' > SI = mois , là pas de soucis , on prend tout ce qu'on veut recopier , SI < alors on passe à FIN > là si > idem on recopie , Sinon on passe
Le code n'est pas compliqué c'est juste de bien penser le logigramme

Je jetterais un oeil demain ; Revoit donc ton onglet RECURENT pour + 1 Col

PS : les "Du coup" à répétition 3 sur 3 lignes , apparemment c'est la nouvelle maladie Nationale ??
J'avais remarqué TV , radio ...etc mais pas encore écrit !!!! pire que la Covid:) 😉
 
Dernière édition:

Praveena

XLDnaute Nouveau
J'ai modifié la feuille "récurrent" en ajoutant la colonne et en modifiant le code.

Le code contraignant la date il faut que je l'ajoute en dessous du textBox contenant la date?

Merci beaucoup de votre aide!

Le "du coup" est un tic que j'ai depuis longtemps ;_;
 

Pièces jointes

  • 3 - suivie-de-compte-bancaire.xlsm
    245.3 KB · Affichages: 19

herve62

XLDnaute Barbatruc
Supporter XLD
Il y a un Hic !!
Le 1er passage est ok mais si re ouvre plus tard ?? > ça va refaire !!!!
Comment sont répartis les prélèvements pour être distinctifs 1 à 1 ?
J'explique :
A la 1ére ouverture ok on ajoute tout ce qui est valable
Mais comment repérer que la fois d'après le prélèvement a été effectué et donc ne pas le retransférer ??
Pour bien , un code unique pour chacun aiderait beaucoup à la verif. : Si code présent dans le "Mois" alors on ne retranscrit plus
Mais peut être as tu une autre idée ?
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bon voilà un essai en fichier à part
A l'ouverture du fichier , la sub "recurrent" s'exécute et va transférer les lignes dont la date du jour est comprise entre Début et Fin
- on Sauvegarde > fermeture
- Si l'on ouvre à nouveau , une vérif. s'exécute si dejà prélevé , il ne se passe rien . Si une ligne valide ( date) a été ajouté elle seule sera transférée
L'astuce ( il y en a peut-être d'autres) : j'ai ajouté un code par opération (Recurrent) et le transfère dans le mois écrit en J en blanc avec les autres infos , ET à l'ouverture suivante la vérif. va regarder si chaque code est déjà inscrit pour empêcher des transferts intempestifs
 

Pièces jointes

  • Essai_suivi.xlsm
    20.7 KB · Affichages: 25

JM27

XLDnaute Barbatruc
bonjour
Pourquoi n'as tu pas répondu et poursuivi sur ce fil de discussion ?
(qui concerne en fait la même problématique).
https://www.excel-downloads.com/threads/creation-dun-echeancier-dynamique.20063250/
en apportant des compléments d'info si besoin.(car sur le fil en question, te ne demandes pas une date de fin)
Pour info pour définir une date de fin : il faut
- un nom de mouvement( famille)
- éventuellement une sous famille
- éventuellement un tiers
- un type de mouvement(crédit, débit)
- Une date de début.
- une périodicité ( semaine, mois, bimestrielle, trimestrielle, semestrielle , année)
- un nombre de mouvement .
de la il va découler une date de fin.
et non pas l'inverse!

Pour info : ton fichier du post #3 plante excel (la macro évènementielle n'y est pas pour rien) dans certains cas : changement d'onglets.
 
Dernière édition:

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
Ah bon il y avait un autre sujet idem ??
Moi maintenant je fais en dilettante , je ne fouine plus dans tout le forum pour voir si tel ou tel ....!!
Bon sûr , toujours pas de réponse !! j'ai mis un fichier à ma sauce, maintenant ...?
@JM27 : t'as pas mis trop de critères ?? , pour mon compte perso , Excel aussi mais plus simple ; généralement les prélèvements sont mensuels , sans date de fin pour : edf , assurances ... sinon pour un prêt j'ai le Nbre de mensu. que je répercute à une date !! et c'est tout
 

JM27

XLDnaute Barbatruc
Bonsoir Hervé
Pour info
Ton fichier :
La dernière mensualité ne sera jamais effectuée.
Si tu fais un récurrents pour la fin de mois (31/01/2021)par exemple : la première mensualité en janvier ne fonctionnera pas.
Si tu crée un récurrents le 30 du mois : tu auras un jour pour ouvrir le fichier , sinon le mois ne sera pas traité.
Enfin et c'est plus grave : tu as un récurrent le 15 du mois, si tu ouvres le fichier le 2 du mois suivant , le récurrent s'inscris.( la date de valeur n'est donc pas correcte)
Enfin je pense cela : a vérifier mes dire , je n'en suis pas sur !
C'est pas si facile à faire que ce que l'on pense.
Pour la périodicité , on pourrait s'en passer , mais qui peut le plus , peut le moins.
Pour Edf je paye sur 10 mensualités et le solde sur le 11 ème mois ( donc un nombre de mensualité (10)
Ah bon il y avait un autre sujet idem ??
Eh oui , de plus elle ne suis pas forcément nos conseils( mais après tout , elle a le droit), c'est pour cela que je postes pas mon fichier adapté.
 
Dernière édition:

herve62

XLDnaute Barbatruc
Supporter XLD
Chez moi un relevé de comptes n'est pas une horloge , dès le 2 du mois tous les prélèvements mensuels sont effectués qu'importe que ce soit le 2 le 5 le 10 ..etc au moins je peux établir un budget concret
Apparemment son fichier n'est pas pour une entreprise ?
Donc mon fichier fonctionne car il est sur le principe de cher moi ! et un bilan se fait toujours au dernier jour du mois , donc le solde sera toujours bon
Toi tu parles de "grave" ?? :
Faudra m'expliquer ,par exemple (au pif) , la criticité d'un prélèvement officiel du 15 et écrit ( en compta on appelle ça une écriture) au 2 ou 3 ... du mois ?
Après on verra s'il est très pointilleux ou pas ??? mais à la vue de ses données , je ne le suppute pas trop !
 

JM27

XLDnaute Barbatruc
As tu regardé les autre cas ?
Avec ta méthode on peux être à découvert en milieu sans le savoir
Si tu fais un récurrents pour la fin de mois (31/01/2021)par exemple : la première mensualité en janvier ne fonctionnera pas.
Si tu crée un récurrents le 30 du mois : tu auras un jour pour ouvrir le fichier , sinon le mois ne sera pas traité.
Voila ce qu'elle a écrit sur son premier post
Travaillant sur un fichier de suivi bancaire, j'ai mis un place un UserForm pour planifier automatiquement des débit/crédit récurrents. (Pour qu'ils soient automatiquement injecté dans le mois concernés une fois le jour J.)

Ci joint ton fichier avec simulation au 31/01/2022 et 02/02/2022
 

Pièces jointes

  • test.xlsm
    26.5 KB · Affichages: 18
Dernière édition:

herve62

XLDnaute Barbatruc
Supporter XLD
J'ai fait un peu de finances et compta et là on parle plus Excel !! on ne fait pas une échéance débutant un 30 ou 31 ( c'était mon cas l'an passé pour un prêt ) après une certaine date on bascule sur le mois suivant !! informatique oblige maintenant : Là cela s'appelle "enculer des mouches"
Donc fait comme tu veux ...
 

Discussions similaires

Réponses
2
Affichages
475

Statistiques des forums

Discussions
311 720
Messages
2 081 909
Membres
101 836
dernier inscrit
karmon