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 Sub

Il 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 < 0

soit

current_year - 50 > 0

pour 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 Sub

Bonjour,

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 Sub

Premiè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

Rechercher des sujets similaires à "conversion petit code vba"