Excel VBA Userform – Comment augmenter / diminuer la date d'un mois

À l'aide du code suivant, j'augmente la valeur de la date affichée dans TextBox avec SpinButtons.

MainUserForm_Initialize() DateTextBox.Value = Format(Date, "dd-mm-YYYY") ... End Sub 'Add one day when spinning up. Private Sub SpinButtonDate1_SpinUp() With DateTextBox .Value = Format(DateAdd("d", 1, .Value), "dd-mm-yyyy") End With End Sub 'Remove one day when spinning down. Private Sub SpinButtonDate1_SpinDown() With DateTextBox .Value = Format(DateAdd("d", -1, .Value), "dd-mm-yyyy") End With End Sub 

Le problème est que si je tourne vers le 11-07-2015, il va du 12-07-2015 au 06-12-2015 au lieu du 11-07-2015. Pourquoi donc? (J'ai le même problème lors de l'augmentation de la valeur. Les dates données ne sont qu'un exemple.)

Je n'ai le même problème que si j'ai configuré mon format régional aux États-Unis. Essayez ce correctif qui devrait fonctionner indépendamment de vos parameters régionaux:

 'Add one day when spinning up. Private Sub SpinButtonDate1_SpinUp() With DateTextBox .Value = Format(GetDateFromUK(.Value) + 1, "dd-mm-yyyy") End With End Sub 'Remove one day when spinning down. Private Sub SpinButtonDate1_SpinDown() With DateTextBox .Value = Format(GetDateFromUK(.Value) - 1, "dd-mm-yyyy") End With End Sub Function GetDateFromUK(sDate As Ssortingng, Optional sSeparator As Ssortingng = "-") As Date Dim vParts vParts = Split(sDate, sSeparator) GetDateFromUK = DateSerial(vParts(2), vParts(1), vParts(0)) End Function