Codes VBA en remplacement de formules

Bonjour,

J'aurais voulu remplacer des formules par un code VBA. Pouvez-vous m'aider à réaliser cela ?

Tout est expliqué dans le fichier ci-joint.

Bonnes salutations.

Bonsoir,

on tire les formules en A10:B10 à concurrence du nombre d'années entre D3 et D4

Sub Formules()
Dim Lg As Byte
    Range("a11:b200").ClearContents
    Lg = 9 + Year(Range("d4")) - Year(Range("d3"))
    Range("a10:b10").AutoFill Destination:=Range("a10:b" & Lg)
End Sub

Amicalement

Claude

Bonjour,

Sans formules, code à essayer :

Sub tes()
'MAcro Dan pour Yvouille
Range("a10:b200").ClearContents
If Cells(9, 2) > 0 Then
i = 10
Do While CDate(Cells(i - 1, 2)) < CDate(Cells(4, 4))
Cells(i, 1) = Cells(i - 1, 2)
If Year(Cells(i, 1)) <> Year(Cells(4, 4)) Then
Cells(i, 2) = DateSerial(Year(Cells(i, 1)) + 1, 1, 1)
Else: Cells(i, 2) = DateSerial(Year(Cells(i, 1)), Month(Cells(4, 4)) + 1, 1)
End If
i = i + 1
Loop
End If
End Sub

Amicalement

Salut Claude, Salut Dan,

Merci infiniment pour vos réponses.

Claude,

Ta solution fonctionne très bien, mais elle a le désavantage qu'il faut que des formules de base soient présentes au préalable en A10:B10.

Dan,

Avec ton code, la dernière date inscrite automatiquement est le premier du mois qui suit la date inscrite en D4 alors que je désirais que se soit le lendemain. J'ai donc modifié ton code dans ce sens.

Ainsi transformé, ton code remplacerait parfaitement mes anciennes formules. J'ai cependant constaté que ces anciennes formules - de même que ton code - ne fonctionnaient pas correctement si la date de fin est un premier janvier.

J'ai donc placé dans le nouveau fichier ci-joint ton code modifié et - en parallèle - le résultat désiré avec des formules corrigées.

Du point de vue de mes formules, voici ce que j'ai corrigé :

=SI(B9="";"";SI($D$4>B9;B9;""))

=SI(C10="";"";SI($D$4>DATE(ANNEE(C10)+1;1;1);DATE(ANNEE(C10)+1;1;1);$D$4+1))

Une dernière demande : ne serait-il pas possible que ton code se déclenche automatiquement si l'une des cellules D3 ou D4 est modifiée ?

A te relire

Bonsoir,

merci de tester le fichier joint.

A te relire

Re-salut Dan,

Ton code s'approche de la perfection ; tout semble fonctionner parfaitement à l'exception qu'il ne se déclenche pas si l'on modifie la cellule D3.

Serais-tu assez aimable de voir encore ce détail ?

A te relire.

Re,

Il te faut uniquement modifier cette ligne dans le code qui se trouve dans la feuille Tabelle 1 :

Remplace :

If Not Intersect(Target, Range("D4")) Is Nothing Then

Par :

If Not Intersect(Target, Range("D4", "D3")) Is Nothing Then

Amicalement

Salut Dan,

Absent quelques jours, je n'ai pas pu te répondre plus tôt. Désolé !

Merci infiniment pour ton aide. Ca fonctionne exactement comme désiré.

Bonnes salutations.

Rechercher des sujets similaires à "codes vba remplacement formules"