Fonction pour insérer des données entre 2 dates

Bonjour,

Je voudrais automatiser un tableau de calcul de majorations et de revalorisations.

En fonction de la date d’effet, les majorations sont automatiques (à peu près tous les ans ou 6 mois) ; ça j’ai su faire.

En parallèle des majorations, il faut appliquer des revalorisations (Feuil2!A1:B15) jusqu’à la date de forclusion (4 ans après la date d’effet). Il faut donc aller récupérer toutes les dates de Reval entre les 2 dates, les coller en fin de tableau (Feuil1!C6), faire un tri (Feuil1!C6:fin du tablo), et calculer les intervalles entre toutes ces dates.

J’ai à peu près fait, mais je butte pour aller chercher les valeurs entre 2 dates et sur la boucle

PS : je suis très débutante en VBA ; Afin que j’apprenne correctement, merci de bien vouloir commenter votre code et si vous utiliser des fonctions matricielles, de bien vouloir les « éplucher »

Ne pas hésiter à "critiquer" mon code

J'ai un peu avancé sur la boucle, mais j'ai une erreur 1004 la méthode 'Range' de l'objet _'Global' a échoué

sur la ligne

    Range("D & lig").Value = "=DATEDIF(R[-1]C[-1],RC[-1],""m"")"
    Lig = Lig + 1

NB : j'ai mis des dates en dur pour la reval en attendand que quelqu'un m'aide à récupérer ces données, afin de travailler sur la boucle.

je renvoie un fichier.

Merci

Bonjour,

Pas trop compris ce que tu veux faire mais pour l'instruction bloquante mets ceci

Range("D" & Lig).Value = "=DATEDIF(R[-1]C[-1],RC[-1],""m"")"

Je ne vois pas non plus à quoi sert la variable TABLO

Amicalement

Bonjour Dan,

Toujours fidèle au poste Merci

Ce que je feux faire : (il s'agit de sommes, qui ont été bloquée et qu'il faut recouvrer, en recalculant des majorations et des revalorisations)

On part une date d'effet = DE (l'origine des faits - on peut remonter à 2006)

et on calcule 4 dates de majoration M1 = DE + 6 mois ; M2 = M1 + 12Mois, M3 = M2 + 12Mois et M4 = M3 + 12Mois et une date de Forclusion = DE + 4 ans.

à cela, l'Etat me donne chaque année (1 ou 2 fois par an) des revalorisations à appliquer ; c'est ça que je ne sais pas faire :

Aller chercher dans le tableau Feuil2!A1 toutes les dates comprises entre DE et Forclusion et venir les coller en Feuil1, à partir de C6.

Je sais calculer le nb d'occurences (ici de dates) avec la matrice

{=Nb(si(Feuil2!A2:A15>=Feuil1!$C$1;si(Feuil2!A2:A15<=Feuil1!$F$1;Feuil2!A2:A15)))}

mais ce n'est pas les occurences que je veux, ce sont les dates elles mêmes.

je ne sais pas s'il existe une fonction ou s'il faut faire une boucle : pour toute date de reval supérieure à DE reporte la valeur en Feuil1 C6 et suivante jusqu'à ce que la date de reval atteingne la date de Forclusion.

J'espère avoir été plus claire

Merci

Re,

Aller chercher dans le tableau Feuil2!A1 toutes les dates comprises entre DE et Forclusion et venir les coller en Feuil1, à partir de C6.

Ok mais sur base de quoi ? Les dates en colonne C sont parfois avec formule et parfois sans formule.

La colonne B contient une info "Majoration" ou "reval". Cela vient de quoi cette info ?

Au vu du fichier je comprends que si on trouve une date en colonne C qui se trouve entre les dates DE en C1 et FORCLU en F1, il faut faire quelque chose mais quoi ? aller chercher la valeur Tx en feuille 2 et revaloriser quel montant ?

Par ailleurs à quoi servent les chiffres en colonne A ?

Amicalement

Bonjour Dan,

Décidément je ne suis pas claire, toutes mes excuses.

Un dessin sera plus clair, je pense...

Pour l'instand, on ne s'occupe pas des taux, ils serviront après quand on aura calculer les intervalles de date. Une fois que j'ai mes dates, je les trie (ce qui mélange les majorations et les revalorisations et j'applique les taux

Merci de ton aide et encore désolée.

calcul95

Bonjour,

Ci-joint fichier à tester.

Je reste à votre disposition pour toute aide complémentaire.

Cdlt.

Re,

J'avais commencé sur ton fichier mais comme tu as une solution, je te laisse continuer avec Jean Eric sur ce sujet.

Amicalement

Bonjour Dan

As-tu testé mon code

Cdlt.

Re,

Oui Jean Eric. Cela fonctionne de mon coté

Je m'y serais pris autrement mais puisque cela fonctionne, à quoi bon chercher autre chose.

Voyons ce que Mouftie va dire...

Cordialement

Bonjour Jean-Eric,

Merci pour ton aide, c'est encore mieux que je l'espérai

quand je saurai utiliser ce type de boucle, j'aurai vraiment fait un progrès...

'Récupération des données de revalorisation
        j = 1
        For i = 1 To derLigne Step 1
            If sH_2.Cells(i, 1) >= DE And sH_2.Cells(i, 1) < FORCLU Then
                .Cells(8 + j, 2) = "REV" & j        'F1!B9=Rev1
                .Cells(8 + j, 3) = sH_2.Cells(i, 1) 'F1!C9=DateReval1
                .Cells(8 + j, 5) = sH_2.Cells(i, 2) 'F1!D9 = Tx1
                j = j + 1   'compteur +1
            End If
        Next i

Merci encore à toi et à DAN et à bientôt j'espère

Rechercher des sujets similaires à "fonction inserer donnees entre dates"