Gestion Compte bancaire et budget personnel

Gestion Compte bancaire et budget personnel 2.24

Gégé-45550

XLDnaute Accro
Comme je m'en doutais, chez moi (comme chez tous les autres utilisateurs), votre fichier marche à la perfection.
Je ne comprends pas d'où vient votre problème.
Je vous propose de me dire quelles sont les catégories dont vous avez besoin et, pour chacune d'elles, les postes nécessaires (quel que soit leur nombre), je vais créer le fichier et vous l'envoyer par ce même canal.
Vous me direz ensuite si c'est le seul problème de vous rencontrez.
 

Gégé-45550

XLDnaute Accro
Bonsoir,
Non, c'est un grand mystère pour moi.
Cette ligne de code ne fait rien d'exceptionnel, elle copie / colle des formules de cellules vers d'autres.
Si vous n'avez rien de confidentiel, pouvez-vous me joindre votre fichier tel qu'il est actuellement ? Sinon, pouvez-vous m'en envoyer une copie sans les données confidentielles ?
Il me vient une autre idée : disposez-vous d'une version Excel en français ? ou dans une autre langue ?
 

Gégé-45550

XLDnaute Accro
Bonsoir,
Merci pour le commentaire.
Pour ajouter une nouvelle catégorie, est-ce que vous vous positionnez bien sur une ligne vierge en dessous de 'REVENUS' et au dessus de 'TOTAL MENSUEL' ?
Votre réponse est nécessaire pour me permettre d'identifier quelle pourrait être la cause de la difficulté que vous rencontrez.
Pour l'import de relevés de compte, essayez d'avoir d'obtenir une structure identique à celle de l'onglet 'Relevé Excel' avec des mouvements précédés d'un signe moins (-) pour les débits et plus (+) pour les crédits.
Si vous rencontrez des difficultés à ce niveau, envoyez moi un fichier avec la structure de vos relevés mais contenant bien entendu des données "bidon".
Cordialement,
Pour finir et après quelques recherches, il semblerait que FormulaVersion:=xlReplaceFormula2 ne fonctionne que pour les version d'Excel à partir de 2019.
Essayez de modifier la ligne comme ceci :
VB:
.Range("C" & ligne + 1 & ":O" & ligne + 1).Replace What:="Revenus", Replacement:=fnSupprAccents(Initiale(Nom)), LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False', FormulaVersion:=xlReplaceFormula2
Merci de me tenir au courant du résultat
Bonne nuit
 

cristobal61

XLDnaute Nouveau
Pour finir et après quelques recherches, il semblerait que FormulaVersion:=xlReplaceFormula2 ne fonctionne que pour les version d'Excel à partir de 2019.
Essayez de modifier la ligne comme ceci :
VB:
.Range("C" & ligne + 1 & ":O" & ligne + 1).Replace What:="Revenus", Replacement:=fnSupprAccents(Initiale(Nom)), LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False', FormulaVersion:=xlReplaceFormula2
Merci de me tenir au courant du résultat
Bonne nuit
Bonsoir Gégé-45550,

Visiblement vous avez mis le doigt sur l'origine du problème... :D👍
Bravo !!

Avec votre ligne modifiée, la création de catégorie ne génère plus d'erreur systématique comme avant.
Après quelques essais dans tous les sens, les créations et suppressions de catégorie / sous-catégories semblent entièrement fonctionnelles également.

Le pb venait apparemment bien de FormulaVersion:=xlReplaceFormula2, qu'il convenait donc d'occulter pour ma version d'excel (Office Professionnel Plus 2019).

Merci beaucoup pour le temps passé pour débusquer l'origine du problème (et vu l'horaire du dernier message hier soir, jusqu'à une heure avancée... ;) ).

A présent je vais aller un peu plus loin, et me pencher sur la fonctionnalité d'import de relevé excel.

Une petite suggestion, en cas de prochaine mise à jour...
les lignes 95 et 103 de l'onglet 'Flux réels' sont masquées sur la version téléchargeable (ce qui m'a dérouté 2 minutes...), et non affichables du fait que la feuille est protégée.
(mais vu que j'ai parcouru le code de long en large depuis quelques jours, j'ai pu y trouver le sésame pour les rendre visibles... merci de l'avoir laissé accessible).

Merci encore,
Bonne soirée.
 

cristobal61

XLDnaute Nouveau
Bonsoir,

Le retour de l'erreur 1004 : "Erreur définie par l'application ou par l'objet"... 😬:confused:

Lorsque je tente d'ajouter des lignes dans l'onglet journal :
- la 1ère ligne s'intègre sans problème,
- c'est lors du remplissage des éléments de la 2ème ligne que ça se gâte...: l'erreur survient au moment où je renseigne la catégorie (que je sélectionne dans la liste déroulante)

Selon le débogueur, le problème est dans le déroulement de la procédure Worksheet_Change de la feuille fJournal, au niveau de la ligne ".Add Type: ..." ci-dessous :
VB:
'On met dynamiquement à jour la liste de validation des éléments figurant dans la catégorie choisie
    '
    If Not Intersect(Target, Range("Journal[Catégorie]")) Is Nothing Then
        If Target.Count = 1 Then
'
            With Range("E" & Target.Row).Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="=INDIRECT($V$" & Target.Row & ")"

Cette erreur est systématique, que je renseigne ces lignes dans le journal dès l'ouverture du fichier natif téléchargé, ou que fasse un RAZ préalable du contenu du journal pour partir sur un nouveau millésime.

Y a t-il une chance pour qu'il y ait là encore incompatibilité entre cette portion de code et la version d'excel que j'utilise ? 🤔
 

Gégé-45550

XLDnaute Accro
Bonsoir,

Le retour de l'erreur 1004 : "Erreur définie par l'application ou par l'objet"... 😬:confused:

Lorsque je tente d'ajouter des lignes dans l'onglet journal :
- la 1ère ligne s'intègre sans problème,
- c'est lors du remplissage des éléments de la 2ème ligne que ça se gâte...: l'erreur survient au moment où je renseigne la catégorie (que je sélectionne dans la liste déroulante)

Selon le débogueur, le problème est dans le déroulement de la procédure Worksheet_Change de la feuille fJournal, au niveau de la ligne ".Add Type: ..." ci-dessous :
VB:
'On met dynamiquement à jour la liste de validation des éléments figurant dans la catégorie choisie
    '
    If Not Intersect(Target, Range("Journal[Catégorie]")) Is Nothing Then
        If Target.Count = 1 Then
'
            With Range("E" & Target.Row).Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="=INDIRECT($V$" & Target.Row & ")"

Cette erreur est systématique, que je renseigne ces lignes dans le journal dès l'ouverture du fichier natif téléchargé, ou que fasse un RAZ préalable du contenu du journal pour partir sur un nouveau millésime.

Y a t-il une chance pour qu'il y ait là encore incompatibilité entre cette portion de code et la version d'excel que j'utilise ? 🤔
Bonsoir,
Cette erreur est due à vos différents tests précédents qui ont un peu "détraqué" le programme.
Le remède est simple :
Dans la feuille "Journal", positionnez vous sur la cellule V5 et double-cliquez sur le petit carré en bas à droite (cela propagera la formule écrite en blanc, donc invisible, vers le bas) puis reprenez votre saisie en resélectionnant une catégorie.
Normalement, le problème devrait être résolu.
Bien cordialement,
 

Gégé-45550

XLDnaute Accro
Bonsoir,

Le retour de l'erreur 1004 : "Erreur définie par l'application ou par l'objet"... 😬:confused:

Lorsque je tente d'ajouter des lignes dans l'onglet journal :
- la 1ère ligne s'intègre sans problème,
- c'est lors du remplissage des éléments de la 2ème ligne que ça se gâte...: l'erreur survient au moment où je renseigne la catégorie (que je sélectionne dans la liste déroulante)

Selon le débogueur, le problème est dans le déroulement de la procédure Worksheet_Change de la feuille fJournal, au niveau de la ligne ".Add Type: ..." ci-dessous :
VB:
'On met dynamiquement à jour la liste de validation des éléments figurant dans la catégorie choisie
    '
    If Not Intersect(Target, Range("Journal[Catégorie]")) Is Nothing Then
        If Target.Count = 1 Then
'
            With Range("E" & Target.Row).Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="=INDIRECT($V$" & Target.Row & ")"

Cette erreur est systématique, que je renseigne ces lignes dans le journal dès l'ouverture du fichier natif téléchargé, ou que fasse un RAZ préalable du contenu du journal pour partir sur un nouveau millésime.

Y a t-il une chance pour qu'il y ait là encore incompatibilité entre cette portion de code et la version d'excel que j'utilise ? 🤔
re-bonjour,
En fait, vous venez de mettre le doigt sur une faiblesse du programme dans le cas où on supprime toutes les lignes du Journal.
En fonctionnement "normal", cette action devrait uniquement survenir lorsqu'on clique sur le bouton 'RAZ-Nouveau millésime' de l'onglet 'Flux prévus'. Dans ce dernier cas, elle est gérée.
Je vais publier une mise à jour mais, pour vous éviter d'avoir à la retélécharger, le vous invite à remplacer les procédures 'Verification' et 'RepareV' du module ActionsTS par celles-ci :
VB:
Public Sub Verification(ByVal Targete As Range)
Dim CompteLignes As Long
Dim PrecedentCompteLignes As Long
'Combien y avait-il de lignes dans le journal avant l'évènement _Change
    PrecedentCompteLignes = ActiveWorkbook.CustomDocumentProperties("RowCnt").Value
'
    'D'abord, on surveille si des lignes ont été supprimées. Si c'est le cas, il faudra rafraîchir la colonne V
    '
    CompteLignes = Sheets("Journal").ListObjects("Journal").ListRows.Count
'    If CompteLignes = 0 Then Exit Sub      'Le tableau est vide
    If CompteLignes < PrecedentCompteLignes Then      'si le nombre de lignes est inférieur a celui qui a été stocké précédemment lors de l'évènement _SelectionChange, au moins une ligne a été supprimée
        Application.ScreenUpdating = False
        'Réparation de la colonne V
        RepareV PrecedentCompteLignes
        '
        NombreLignesJournal = CompteLignes
        Application.ScreenUpdating = True
    End If
    '
    ' et on retire le surlignage si la valeur enregistrée est correcte
    '
    If Not Intersect(Targete, Sheets("Journal").Range("D5:E1205")) Is Nothing Then
        If Targete.Count = 1 Then
            ControleCoherence Targete
        End If
    End If
    StockInCDP "RowCnt", Sheets("Journal").ListObjects("Journal").ListRows.Count        'Stocke dans les propriétés particulières du classeur une variable baptisée "RowCnt" dont la valeur est le nombre de lignes du journal
End Sub

Sub RepareV(Optional nbLignes&)
Dim fin As Long
    If nbLignes <> 0 Then
        fin = nbLignes
    Else
        fin = Sheets("Journal").Range("Journal").ListObject.ListRows.Count
    End If
    With Sheets("Journal").Range("V4")
        .AutoFill Destination:=Sheets("Journal").Range("V4:V" & fin + 4)
    End With
End Sub
Cordialement
 
Dernière édition:

cristobal61

XLDnaute Nouveau
Bonjour Gégé-45550,

Merci de votre réponse.
Je n'ai pas encore eu l'occasion de tester votre code, mais vous fait part d'une autre observation faite entre temps.

Lorsque je remplis la ligne 19 du journal, la formule en cellule V19 fait référence à la cellule D19 (dans laquelle on sélectionne la catégorie).
La formule en V20 fait alors bien référence à D20.
Jusque là tout est normal...

Une fois la ligne 19 complétée, dès que la cellule active passe en A20 : la formule en V20 ne fait plus référence à D20 mais à D21, qui par définition est donc une cellule vide.
Il semble donc bien y avoir une incohérence de ce côté là...

Est-ce que cela coïncide avec les 2 modifications que vous avez proposé dans les codes des procédures ?

En attendant de tester votre proposition de code...

Autre retour d'expérience, qui n'a rien à voir :
La navigation dans les onglets, via le ruban, ne fonctionne pas pour accéder aux onglets " Relevés bancaires", "Relevé Excel" et "Relevé PDF" : exécution de la macro "xxxxxxxx" impossible.
Je n'ai pas trouvé les 3 macros concernées dans le code.
Pour tous les autres onglets proposés, la navigation fonctionne .

Merci.
 

Gégé-45550

XLDnaute Accro
Nouvelle version de 'RepareV' dans le module 'Actions TS'
VB:
Sub RepareV(Optional nbLignes&)
Dim fin As Long
    If nbLignes <> 0 Then
        fin = 1496
    Else
        fin = Sheets("Journal").Range("Journal").ListObject.ListRows.Count
    End If
    With Sheets("Journal").Range("V4")
        .AutoFill Destination:=Sheets("Journal").Range("V4:V" & fin + 4)
    End With
End Sub
à ajouter dans le module Callbacks
Code:
'Callback for rBancaire onAction
Public Sub GotorBancaire(ByVal control As IRibbonControl)
    Sheets("Relevés bancaires").Activate
End Sub

'Callback for relExcel onAction
Public Sub GotorelExcel(ByVal control As IRibbonControl)
    Sheets("Relevé Excel").Activate
End Sub

'Callback for relPDF onAction
Public Sub GotorelPDF(ByVal control As IRibbonControl)
    Sheets("Relevé PDF").Activate
End Sub
Bravo !
Vous êtes mon meilleur testeur (il est difficile, derrière son ordi, d'imaginer toutes les manips que pourra faire l'utilisateur, d'où l'intérêt de vos messages).
J'espère tout de même qu'on arrive au bout des réglages.
Cordialement,
NB : la version corrigée a été publiée, elle sera en ligne dès que le modérateur aura validé.
 

Gégé-45550

XLDnaute Accro
Bonjour Gégé-45550,

Merci de votre réponse.
Je n'ai pas encore eu l'occasion de tester votre code, mais vous fait part d'une autre observation faite entre temps.

Lorsque je remplis la ligne 19 du journal, la formule en cellule V19 fait référence à la cellule D19 (dans laquelle on sélectionne la catégorie).
La formule en V20 fait alors bien référence à D20.
Jusque là tout est normal...

Une fois la ligne 19 complétée, dès que la cellule active passe en A20 : la formule en V20 ne fait plus référence à D20 mais à D21, qui par définition est donc une cellule vide.
Il semble donc bien y avoir une incohérence de ce côté là...

Est-ce que cela coïncide avec les 2 modifications que vous avez proposé dans les codes des procédures ?

En attendant de tester votre proposition de code...

Autre retour d'expérience, qui n'a rien à voir :
La navigation dans les onglets, via le ruban, ne fonctionne pas pour accéder aux onglets " Relevés bancaires", "Relevé Excel" et "Relevé PDF" : exécution de la macro "xxxxxxxx" impossible.
Je n'ai pas trouvé les 3 macros concernées dans le code.
Pour tous les autres onglets proposés, la navigation fonctionne .

Merci.
@cristobal61
Bonjour,
Annulez mes messages précédents et utilisez plutôt la version 2.23b (adaptée à Excel 2019).


Cordialement,
 
Dernière édition:

cristobal61

XLDnaute Nouveau
Merci Gégé-45550 pour votre réactivité !!
On avance...

Malheureusement, je viens à nouveau signaler un petit dysfonctionnement...
Avec cette version 23b, téléchargée à partir du lien présent dans votre dernier post, la réinitialisation du journal ne fonctionne pas (Erreur de compilation, Sub ou Function non définie).
1678317500656.png


En cherchant un peu dans le code, et en comparant avec celui de versions précédentes je me suis aperçu que la procédure ValidationDate s'était perdue en route... et qu'elle n'était plus présente dans le module ActionTS.
Idem pour la procédure RepareV.

En les ayant copié/collé pour les rajouter dans le code de la v23b, la réinitialisation fonctionne bien.
(Je ne suis pas allé plus loin dans le test pour l'instant, donc ne sais pas si la RepareV récupérée est bien fonctionnelle pour ce qu'elle a à faire au niveau du renseignement progressif de l'onglet journal.)

C'est tout pour aujourd'hui... ;)
 

Statistiques des forums

Discussions
312 206
Messages
2 086 220
Membres
103 158
dernier inscrit
laufin