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
 

herve62

XLDnaute Barbatruc
Supporter XLD
Moi mon chomage pré retraite c'est le 5 pour le mois d'avant ( là 5/01/22 pour décembre /21) et mon épouse son salaire c'est le 25, 26, 27 du mois en cours , mais là pour décembre c'était le 23 une partie et le solde le 04 janvier 2022 , février ce sera le 24 !!! ( agent d'Etat)
et moi si je décale ma déclaration cela peut aller jusqu'au 15
Donc pour revenir sur Terre Excel , tu pourrais me faire une appli avec tous mes critères aléatoires .. je suppose ? ??
STOP ! sujet clos
 
Dernière édition:

Praveena

XLDnaute Nouveau
Bonsoir,

Comme c'était une autre question, j'ai créée une autre discussion, désolé je ne ferrais plus ça.

@herve62 :

Désolé, si je n'ai pas donné de réponse, mais je ne me suis pas connecté ayant subit les effets secondaires de la vaccination.

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
Donc, si je comprend bien, quand j'indiquerais la date de fin, il se mettra dans la feuille "récurrent". Ensuite, on sauvegarde et à la réouverture il va vérifier la date et il va l'injecter si c'est le cas. Si c'est déjà fait, il va rien faire. Et ça s'injectera donc automatiquement le mois suivant à la même date jusqu'à la date de fin?

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 ?

Cela veut dire que je dois faire un code pour chaque prélèvement récurrent que j'intégrerais à l'avenir?

On ne peut pas utiliser la fonction Match() ou index combiné? (bon, j'ai essayé mais ça ne faisait rien?)

@JM27 :
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.

Comme c'était une autre question par rapport au échéancier déjà réalisé je me suis dit que c'était un autre sujet, à l'avenir, je ferais tous dans le même fil discussion désolé.

Donc, il faut que j'intègre une case de périodicité qui indiquera le nombre de fois que le mouvement sera répété et de faire en sorte que le code sera répété jusqu'à la date de fin qui sera défini par rapport au date de début? En combinant avec une vérification de la date pour éviter les doublons?



Cordialement
Praveena
 

herve62

XLDnaute Barbatruc
Supporter XLD
J'ai juste fait le traitement dans ce fichier
Sinon tu ajoutes une box dans ton USF , c'est tout simple non ??
De ce fait, les dates change quand on rouvre le fichier...
?? je ne te suis pas !!
Si ton onglet du mois n'a pas encore inscrit les récurrents ( 1 ére ouverture pour le mois concerné) les montants vont s'inscrire à la date en cours !
SI tu re ouvres 2 jours plus tard , tu auras toujours les mêmes données avec l'ancienne date , j'ai Testé en changeant la date du PC !!
J'ai ajouté un code , mais tu peux mettre ce que tu veux dans cette colonne
Quand tu fais VALIDER dans ton USF tu peux inscrire un X dans ta col J de Recurrent, peut importe c'est juste un signe distinctif , la sub fonctionnera idem car je teste juste si dans le mois la col K est vide ou pas !!!
Donc ??