J'ai une base de données avec des dates remboursements portant sur une période encadrée par une date de début et de fin : exemple du 14/08/2018 au 11/11/2018 = 90j
Je voudrais décomposer les 90j par périodes afin de pouvoir exploiter la donnée et la rapprocher d'autres mesures :
201808 =10j
201809 = 30j
201810= 31j
201811 = 11j
Pourriez-vous m'aider svp ?
Je vous joints un extrait du fichier pour être plus claire.
Le seul point important est de pouvoir automatiser l'exercice car j'ai des milliers de lignes et l'exercice sera à reproduire plusieurs fois dans l'année.
Si cela était faisable, je pense que cela ne peut l'être qu'avec du VBA ?
Un essai en PJ à tester.
Je ne suis pas d'accord avec vous sur le dispatch des jours.
Avec une date début au 2018-08-14 vous trouvez 18 jours restant pour le mois en cours.
Pour moi du 14 au 31 ça fait 17 jours.
NB: Le problème de cette macro est qu'on peut appuyer plusieurs fois sur le bouton et ainsi avoir des erreurs. Serait il possible d'avoir une colonne supplémentaire pour marquer que cette ligne est déjà traitée, on plus simple une cellule où écrire Non fait/Fait ?
Tout dépend si on prend en compte le jour du 14 ou non.
Exemple : Si tu travailles du 14 au 31, tu auras travaillé 18 jours car le 14 tu as aussi travaillé.
@+ Lolote83
Pièces jointes
Copie de CHRYSTEL01 - Décomposition d'une ligne.xlsm
Un essai en PJ à tester.
Je ne suis pas d'accord avec vous sur le dispatch des jours.
Avec une date début au 2018-08-14 vous trouvez 18 jours restant pour le mois en cours.
Pour moi du 14 au 31 ça fait 17 jours.
NB: Le problème de cette macro est qu'on peut appuyer plusieurs fois sur le bouton et ainsi avoir des erreurs. Serait il possible d'avoir une colonne supplémentaire pour marquer que cette ligne est déjà traitée, on plus simple une cellule où écrire Non fait/Fait
Un grand MERCI Sylvanu !
Je n'étais pas du tout sûre qu'il soit possible de faire cette décomposition. Cela me sauve et nous évite un travail très long et fastidieux, risque d'erreur...
L'ajout d'une colonne avec un statut fait / non fait ne pose aucun problème...au contraire si cela fiabilise la base...
Concernant le calcul du nb de jours, je dois m'aligner sur le calcul fait par la mutuelle qui nous fournit les données et inclut les jours du 14 et du 31 => cela fait donc bien 18 jours (31-14+1)
Merci beaucoup !!!
Je vais tester sur une base plus importante et essayer de comprendre le VBA pour savoir refaire ce type de code.
Re,
Prenez la version de Lolote, la mienne est boguée, je fais le calcul toujours sur 90 jours et non sur la valeur donnée en colonne P.
Je regarde de mon coté comment réajuster ça. Vous aurez ainsi 2 versions pour le prix d'une.
Tout dépend si on prend en compte le jour du 14 ou non.
Exemple : Si tu travailles du 14 au 31, tu auras travaillé 18 jours car le 14 tu as aussi travaillé.
Effectivement, je crois que je me suis mélangée, j'ai lu le message de Sylvanu et ouvert fichier de Lolotte
J'allais répondre quand j'ai vu vos retours. Vous êtes beaucoup plus rapides que moi !
Lolotte a parfaitement raison sur le nombre de jours : le 14 est aussi inclus dans le calcul.
La macro est Extra Lolotte ! Le seul point qui me manquait est corrigé dans cette nouvelle version.
La ligne à décomposer a été supprimée et il ne me reste plus que sa décomposition
Je vais maintenant essayer de la comprendre en détail pour progresser en VBA et arriver un jour à faire ces codes plus difficiles, de manière autonome j'espère.
Un grand merci à tous les 2 pour votre aide très importante et réactive qui m'enlève une grosse épine du pied !
Re,
Prenez la version de Lolote, la mienne est boguée, je fais le calcul toujours sur 90 jours et non sur la valeur donnée en colonne P.
Je regarde de mon coté comment réajuster ça. Vous aurez ainsi 2 versions pour le prix d'une.
Re bonjour,
J'ai fait cela a "l'arrache" et le code n'est certainement pas optimisé.
Il y a mieux a faire je pense, mais manque de temps @sylvanu , je regarde ta proposition.
@+ Lolote83
Bonjour Lolotte83,
Bonjour Sylvanu,
Bonjour le Forum,
Merci à tous les 2 pour cette superbe programmation très très utile.
J'ai fait le test avec une base de 10 000 lignes et cela fonctionne parfaitement.
J'ai également vérifié que le nombre de jours initials correspond à celui qui est décomposé.
J'ai un petit écart avec celle de Sylvanu mais c'est normal car le code considère un nb maximum de 90j (c'était mon exemple) mais je peux avoir des intervalles de dates plus larges. Les potentiels utilisateurs devront faire attention à cette variable.
Par contre, étant de niveau VBA plutôt débutant j'ai un peu moins de difficultés à comprendre le code VBA de Sylvanu =>je pourrai donc essayer d'ajouter des périodes et proratiser le montant de remboursement en fonction de ces nouvelles périodes.
Lolotte,
Merci, elle fonctionne parfaitement et est immédiatement opérationnelle. Quand je le pourrai, je vais essayer de la décortiquer pour bien la comprendre, je pourrai revenir vers vous si besoin ?
Bonjour. Si j'ai le temps, je reposerai le code commenté. Si cela peut vous aider à progresser dans votre apprentissage du VBA. Cordialement. @+ Lolote83
Bonjour,
Comme convenu le fichier avec le code commenté.
Mais ce n'est pas facile d'expliquer au mieux ce que l'on a voulu coder.
En espérant que cela permettra de mieux comprendre le code.
Cordialement
@+ Lolote83
Pièces jointes
Copie de CHRYSTEL01 - Décomposition d'une ligne.xlsm