Dates d'échéances formule ok sur xlsx mais pb sur vba

anthooooony

XLDnaute Occasionnel
Bonjour,

On me demande d'analyse les échéances de ma société, sur les factures sont payées en avance, en retard, par rapport au contrats.

J'ai récupéré toutes les échéances par fournisseurs, j'ai une formule pour chaque

J'ai essayé de faire des si imbriqué, mais il m'a dit au bout de la 14ème condition qu'il avait trop de formule !!! grrr

Alors j'essaye de le faire sur vba en faite c'est seule solution trouvée

Les trois échéances si dessous sont les plus complexes que j'ai apres elle se décline 30frsfin de moi le 10 15 20 etc

30 jours de mois = fin.mois(c1+30;0)
30 jours fin de mois le 5 = fin.mois(c1+30;0)+5
90 jours fin de mois fin.mois(c1+90;0)


J'ai trouvé une formule sur Internet sur vba DateSerial(Year(DateFact), Month(DateFact) + 3, 1) - 1

mais je n'arrive pas à l’expliquer, je suis allé dans l'aide vba sur "dateserial" ca n'a pas été plus claire..

J'ai un code que nous avions commencé en cours de macro en fin de cour ce n'était pas le sujet du jour du coup on a arreté, mais j'ai le squelette :D


Code:
Function echeance(DateFact As Date, TypeReglement As String) As Date

Select Case TypeReglement

    Case "F000"
    echeance = DateSerial(Year(DateFact), Month(DateFact) + 3, 1) - 1

    Case "F001"
    echeance = DateFact + 30

    Case "F010"
    echeance = DateFact + 30

    Case "F015"
    echeance = DateFact + 30

    Case "F020"
    echeance = DateFact + 30

    Case "F030"
    echeance = DateFact + 30
    
    Case "F035"
    echeance = DateFact + 30

    Case "F042"
    echeance = DateFact + 30

    Case "F045"
    echeance = DateFact + 30

    Case "F060"
    echeance = DateFact + 30

    Case "F090"
    echeance = DateFact + 30

    Case "F100"
    echeance = DateFact + 30

    Case "F105"
    echeance = DateFact + 30
    
    Case "F110"
    echeance = DateFact + 30

    Case "F115"
    echeance = DateFact + 30
    
    Case "F120"
    echeance = DateFact + 30

    Case "F125"
    echeance = DateFact + 30

    Case "F155"
    echeance = DateFact + 30

    Case "F160"
    echeance = DateFact + 30

    Case "F165"
    echeance = DateFact + 30

    Case "F200"
    echeance = DateFact + 30

    Case "F210"
    echeance = DateFact + 30

    Case "F220"
    echeance = DateFact + 30

    Case "F260"
    echeance = DateFact + 30

    Case "F300"
    echeance = DateFact + 30

    Case "F310"
    echeance = DateFact + 30
    
    Case "F505"
    echeance = DateFact + 30

    Case "F510"
    echeance = DateFact + 30

    Case "F515"
    echeance = DateFact + 30

    Case "F705"
    echeance = DateFact + 30

    Case "F710"
    echeance = DateFact + 30

    Case "F720"
    echeance = DateFact + 30
    
    Case "F730"
    echeance = DateFact + 30
        
    Case "F900"
    echeance = DateFact + 30
      
    Case "F901"
    echeance = DateFact + 30
    
    Case "F998"
    echeance = DateFact + 30
    
    Case "F999"
    echeance = DateFact + 30
    
    End Select

End Function

Merci encore

Anthooooony
 

anthooooony

XLDnaute Occasionnel
Re : Dates d'échéances formule ok sur xlsx mais pb sur vba

Bonjour Eric,

En faite chaque fournisseur de notre société à une échéance négociée, cette échéance est retranscrite sous forme de code "F001","F010" etc.
En faite ces codes correspondent chacun à une échéance.

Ca m'a l'air pas mal du tout ce que tu m'as envoyé, par contre je vais essayé de la lancé sur mes 600 000 lignes, je vais voir si ça marche, c'est pour que je pensais le faire en vba, mais les lignes de calcules sont bien différentes entre excel et vba.

Merci beaucoup


Anthooooony
 

ERIC S

XLDnaute Barbatruc
Re : Dates d'échéances formule ok sur xlsx mais pb sur vba

Re

une petite astuce (remplir de C2 à C17 en vba les formules)

Range("C2:C17").FormulaR1C1 = _
"=IF(VLOOKUP(RC[-1],Codes!C[-2]:C[1],3,0)=""Oui"",EOMONTH(RC[-2]+VLOOKUP(RC[-1],Codes!C[-2]:C[1],2,0),0),RC[-2]+VLOOKUP(RC[-1],Codes!C[-2]:C[1],2,0))+VLOOKUP(RC[-1],Codes!C[-2]:C[1],4,0)"
Range("C3").Select
 

anthooooony

XLDnaute Occasionnel
Re : Dates d'échéances formule ok sur xlsx mais pb sur vba

Bonjour

J'ai un probleme sur deux lignes, la premiere il trouve un jour de plus
et la deuxieme pas du tout le bon chiffre.. avec tout tes recherches v je suis un peu perdu... tu aurais une idée?

01/01/2012 F100 31/01/2012 30 jours fin de mois résultat trouvé +1jr 30/12/2012

01/12/2012 F160 31/01/2013 Fin de mois + 45 j 14/02/2013


cdt

Anthoooony
 

Pièces jointes

  • Copie de 30jfinmois.xlsx
    20.3 KB · Affichages: 54

ERIC S

XLDnaute Barbatruc
Re : Dates d'échéances formule ok sur xlsx mais pb sur vba

Re

mon pb est peut-être dans l'interprétation, jê ne suis pas comptable

pour la première :

1/1/2012 + 30 jours = 31/1/12 et fin de mois donne 31/1/12 ???


c'est ce que j'ai déduit de : 30 jours de mois = fin.mois(c1+30;0)

je regarde l'autre
 

anthooooony

XLDnaute Occasionnel
Re : Dates d'échéances formule ok sur xlsx mais pb sur vba

A merci !!! lool ça marche mieux comme ça.

Je n'ai pas encore utilisé la formule sur mon gros fichier, ca fait tout faire sauter !! :cool:

Merci, au pire l'autre s'il y a un jour d'écart je ne sais pas si ça posera beaucoup de probleme
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 338
Messages
2 087 397
Membres
103 536
dernier inscrit
komivi