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

  • Initiateur de la discussion Initiateur de la discussion tweedi
  • 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 !

T

tweedi

Guest
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
 
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)
 
Re : VBA DateAdd fonctionne mais toutes les dates sont 30/12/1902 à l'arrivée

Bonjour tweedi,

Peut-être? : L'affectation à la variable DAT n'est pas incluse dans la boucle. Elle conserve donc toujours la même valeur (à priori 0)
 
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
 
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
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
905
Réponses
3
Affichages
428
Réponses
8
Affichages
1 K
K
Réponses
9
Affichages
1 K
Retour