Problème avec un algorithme en VBA

  • Initiateur de la discussion Initiateur de la discussion Guiiggs
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Guiiggs

XLDnaute Nouveau
Bonjour à tous,

Dans le code ci-dessous, dès que je le lance, il me dit erreur d'incompatibilité mais je comprend pas pourquoi ?!

Merci de m'aider svp


If Param_Frequence = "T - Trimestrielle" And Param_Periode_Payable = "D - Début" Then
jj = 5
If mm <= 3 Then
mm = 1
Date_mfees = jj & "/" & mm & "/" & aa
Else
If mm > 3 And mm <= 6 Then
mm = 4
Date_mfees = jj & "/" & mm & "/" & aa
Else
If mm > 6 And mm <= 9 Then
mm = 7
Date_mfees = jj & "/" & mm & "/" & aa
Else
If mm > 9 And mm <= 12 Then
mm = 10
Date_mfees = jj & "/" & mm & "/" & aa
End If
End If
End If
End If
End If

Cordialement,
Guiiggs
 
Re : Problème avec un algorithme en VBA

Guiggs,

En regardant de plus près le code épuré si dessous,

l'on s'aperçoit que l'on tourne indéfiniment dans la boucle
Do While date_debut < date_fin

car ni date_début ni date_fin n'est modifié à l'intérieur de cette boucle,

A toi de nous dire comment l'une des 2 date devrait évoluée de manière à invalider l'équation de la boucle et ainsi arrêter cette boucle infernale.

Je pense que c'est date_mfees qui devrait faire évoluer l'une des 2 dates , mais je ne vois pas de transfert entre ces 2 variables ???

Code:
Function generer_date_mfees(date_fin, inv, statut_inv)
Dim aa As Integer
Dim mm As Integer
Dim jj As Integer
Dim nb_ligne_mfees As Integer
Dim cpt As Integer
Dim date_debut As Date
Dim Libelle_MF As String
     
date_debut = Sheets("Portfolio Forecast").Cells(9, 8).Value
cpt = 0
 aa = Right(date_debut, 4)
 mm = Mid(date_debut, 4, 2)
 jj = Left(date_debut, 2)
 
Param_Frequence = Sheets("paramétrages").Cells(3, 2).Value
Param_Periode_Payable = Sheets("paramétrages").Cells(3, 3).Value

Do While date_debut < date_fin
    
   
    If Param_Frequence = "T - Trimestrielle" And Param_Periode_Payable = "D - Début" Then
    
        jj = 5
        
        If mm <= 3 Then
        
            mm = 1
            Date_mfees = jj & "/" & mm & "/" & aa
            
        ElseIf mm > 3 And mm <= 6 Then
            
            mm = 4
            Date_mfees = jj & "/" & mm & "/" & aa
                
        ElseIf mm > 6 And mm <= 9 Then
                
            mm = 7
            Date_mfees = jj & "/" & mm & "/" & aa
                    
        ElseIf mm > 9 And mm <= 12 Then
                    
            mm = 10
            Date_mfees = jj & "/" & mm & "/" & aa

        End If
        
    End If
    
    ' pour test : montant = 1234
    
    Libelle_MF = "MF - 0" & mm & "/" & aa & " - taux : 1% "
    ReDim Preserve tabForecast(1, 1, 1, 1, cpt_tableau_forecast) ' attention, la clé doit etre en dernier pour rendre le tableau dynamique
    tabForecast(0, 0, 0, 0, cpt_tableau_forecast) = Array(Libelle_MF, Date_mfees, 1234, statut_inv, inv)
    cpt_tableau_forecast = cpt_tableau_forecast + 1
    
Loop
end function
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
904
Réponses
4
Affichages
728
Réponses
7
Affichages
366
Retour