Conversion petit code C vers VBA
Bonjour,
Il y avait encore deux trois coquilles, voici la version corrigée:
Sub test()
Dim YY As Integer, YYYY As Integer, current_year As Integer, siecle As Integer
YY = 49
'current_year = Right(Year(Date), 2) + 0
current_year = Right((2023), 2) + 0
'siecle = Year(Date) - current_year
siecle = (2023) - current_year
If current_year - 50 <= 0 Then 'YY négatif = <=0 ou <0 ?
If YY <= 50 Then '< -> <= car inférieur ou égal
YYYY = siecle + YY
Else
YYYY = siecle - 100 + YY
End If
ElseIf current_year - 50 >= 0 Then 'positif c'est >= 0 ou >0? égal à 0 partagé entre négatif et positif, il faut trancher
If YY >= 50 Then '< -> >= car supérieur ou égal
YYYY = siecle + YY
Else
YYYY = siecle + 100 + YY
End If
End If
Debug.Print YY & " => " & YYYY
End SubIl y a je pense un besoin de trancher dans quel cas se trouve current_year - 50 = 0, pour le moment c'est à la fois dans le cas négatif, et dans le cas positif, il faut je pense pour plus de clareté écrire soit:
current_year - 50 < 0soit
current_year - 50 > 0pour l'une des deux conditions.
Ensuite j'ai réécris la partie où current_year - 50 est positif, la condition ne se lisait pas comme l'explication et ça m'embrouillait.
Bonsoir,
Pas simple de trancher au bon endroit!
50 années pour 0 à 49 et 50 années aussi pour 50 à 99
Si on se dit:
0 à 49 pour le passé
50 à 99 pour le futur
Je dirais:
J'enlève le = du 1er If YY pour que inférieur à 50 donc 49.
J'enlève le = au 0 de ElseIf
Le changement ne se fait plus à XX50, mais à XX49.
Suis-je bon ?
Sub test()
Dim YY As Integer, YYYY As Integer, current_year As Integer, siecle As Integer, MyYear As Integer
For YY = 0 To 99
MyYear = "2051"
'current_year = Right(Year(Date), 2) + 0
current_year = Right((MyYear), 2) + 0
'siecle = Year(Date) - current_year
siecle = (MyYear) - current_year
If current_year - 50 <= 0 Then 'YY négatif = <=0
If YY < 50 Then '< -> < car inférieur "49"
YYYY = siecle + YY
Else
YYYY = siecle - 100 + YY
End If
ElseIf current_year - 50 > 0 Then 'positif c'est >0 J'ai trancher !#?/*
If YY >= 50 Then '< -> >= car supérieur ou égal
YYYY = siecle + YY
Else
YYYY = siecle + 100 + YY
End If
End If
Debug.Print YY & " => " & YYYY
Next
End SubBonjour,
Si je reprends la logique du 0 à 49 et 50 à 99, alors ça donnerait plutôt:
Sub test()
Dim YY As Integer, YYYY As Integer, current_year As Integer, siecle As Integer, MyYear As Integer
For YY = 0 To 99
MyYear = "2051"
'current_year = Right(Year(Date), 2) + 0
current_year = Right((MyYear), 2) + 0
'siecle = Year(Date) - current_year
siecle = (MyYear) - current_year
If current_year < 50 Then 'YY négatif = <=0
If YY < 50 Then '< -> < car inférieur "49"
YYYY = siecle + YY
Else
YYYY = siecle - 100 + YY
End If
ElseIf current_year >= 50 Then 'positif c'est >0 J'ai trancher !#?/*
If YY >= 50 Then '< -> >= car supérieur ou égal
YYYY = siecle + YY
Else
YYYY = siecle + 100 + YY
End If
End If
Debug.Print YY & " => " & YYYY
Next
End SubPremière modification: current_year - 50 <= 0 est la même chose que: current_year <= 50, j'ai repris cette logique qui est plus simple.
J'ai mis la même logique pour le YY < 50 et YY >= 50 pour le current_year.
Bonsoir,
Merci pour votre aide et le temps accordé!
Votre modification correspond à la demande.
Bien cordialement
Bonjour,
Super,
merci d'avoir passé le sujet en résolu