VBA DateAdd fonctionne mais toutes les dates sont 30/12/1902 à l'arrivée

tweedi

XLDnaute Nouveau
Bonjour à tous, j'ai un bout code qui doit m'établir des dates limites de validité, pour cela j'utilise la fonction dateadd, j'ai réussi à faire fonctionner sur un échantillon de 10 lignes, alors je l'applique à toute ma feuille avec ce code:

Code:
With Sheets("Feuil1")
        dat = .Cells(i, 11).Value
            For i = 2 To lastrow
                If .Cells(i, 12).Value = "3 ans" Then
                    .Cells(i, 15).Value = DateAdd("yyyy", 3, dat)
                ElseIf .Cells(i, 12).Value = "2 ans" Then
                    .Cells(i, 15).Value = DateAdd("yyyy", 2, dat)
                ElseIf .Cells(i, 12).Value = "1 an" Then
                    .Cells(i, 15).Value = DateAdd("yyyy", 1, dat)
                Else: .Cells(i, 15).Value = ""
                End If
            Next i
        End With

Mais en résultat toutes mes dates sont 30/12/1902 ou 30/12/1900, ce qui est bien entendu faux.

Savez-vous d'où cela peut venir et comment faire fonctionner le code correctement ?

Merci par avance !

Tweedi
 

MichD

XLDnaute Impliqué
Re : VBA DateAdd fonctionne mais toutes les dates sont 30/12/1902 à l'arrivée

Bonjour,

Tu devrais publier un petit fichier exemple de quelques données pour
nous indiquer ce que tu as réellement dans les cellules (contenu et format)
 

pierrejean

XLDnaute Barbatruc
Re : VBA DateAdd fonctionne mais toutes les dates sont 30/12/1902 à l'arrivée

Bonjour tweedi


Salut MichD
Salut mapomme

Cela n'irait pas mieux comme ceci:

Code:
With Sheets("Feuil1")
        
            For i = 2 To lastrow
            dat = .Cells(i, 11).Value
                If .Cells(i, 12).Value = "3 ans" Then
                    .Cells(i, 15).Value = DateAdd("yyyy", 3, dat)
                ElseIf .Cells(i, 12).Value = "2 ans" Then
                    .Cells(i, 15).Value = DateAdd("yyyy", 2, dat)
                ElseIf .Cells(i, 12).Value = "1 an" Then
                    .Cells(i, 15).Value = DateAdd("yyyy", 1, dat)
                Else: .Cells(i, 15).Value = ""
                End If
            Next i
        End With
 

tweedi

XLDnaute Nouveau
Re : VBA DateAdd fonctionne mais toutes les dates sont 30/12/1902 à l'arrivée

Rebonjour Messieurs

vous aviez raison ! un petit ctrl x ctrl v et le tour est joué. Dat n'était en effet pas dans la boucle.
Un regard extérieur vaut parfois mieux que 20 minutes d'acharnement ;)

Merci à vous tous !

tweedi
 

Discussions similaires

Statistiques des forums

Discussions
314 450
Messages
2 109 719
Membres
110 551
dernier inscrit
Khyolyanna