Vba calculer age à l'activation d'une feuille

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

Arpette

XLDnaute Impliqué
Bonsoir à toutes et à tous,
J'ai trouver la fonction qui me permet de calculer la date à partir d'une cellule à la date du jour, mon problème est que je veux la mettre en vb et qu'elle s'éxécute à la sélection de la feuille. Je pensais à un code comme ci-dessous, je sais pas si c'est possible.

Code:
Private Sub Worksheet_Activate()
Dim i As Integer
Dim Age As Long
Dim maDate1 As Date
Dim maDate2 As Date

For i = 3 To 500
maDate1 = Cells(i, 4)
maDate2 = Date
 
Cells(i, 6) = DateDiff('yyyy', maDate2, maDate1)
    ????
End Sub
Merci pour votre aide
 
Re : Vba calculer age à l'activation d'une feuille

Bonsoir Arpette,

Si j'ai bien compris le problème, voici ma réponse :

Code:
Private Sub Worksheet_Activate()
Dim i As Integer

For i = 3 To 500
  Cells(i, 6) = DateDiff("yyyy", CDate(Cells(i, 4)), Date)
Next
End Sub

Comme tu peux le voir, il n'est pas indispensable de définir des variables pour manipuler les dates.

Espérant avoir répondu.

Cordialement.
 
Re : Vba calculer age à l'activation d'une feuille

Bonsoir Arpette,

Si j'ai bien compris le problème, voici ma réponse :

Code:
Private Sub Worksheet_Activate()
Dim i As Integer

For i = 3 To 500
  Cells(i, 6) = DateDiff("yyyy", CDate(Cells(i, 4)), Date)
Next
End Sub

Comme tu peux le voir, il n'est pas indispensable de définir des variables pour manipuler les dates.

Espérant avoir répondu.

Cordialement.

Bonsoir Papou-net, merci pour cette pour cette réponse. Je débute en VB et je m'amuse comme un petit fou...(quand ça marche) et quelque fois, je me complique la vie. Mais avec des personnes comme toi sur ce forum que je progresse assez vite. J'ai juste moditfié l'année en mois. C'est nickel encore merci.
@+
 
Re : Vba calculer age à l'activation d'une feuille

Bonsoir Papou-net, merci pour cette pour cette réponse. Je débute en VB et je m'amuse comme un petit fou...(quand ça marche) et quelque fois, je me complique la vie. Mais avec des personnes comme toi sur ce forum que je progresse assez vite. J'ai juste moditfié l'année en mois. C'est nickel encore merci.
@+

Re papou-net, comme je te l'ai dis plus haut j'ai mis en mois. Aujourd'hui nous sommes le 30/08/10 et avec une date départ au 01/07/10 çà me renvoi 1. Je pense que c'est normal. Peut on faire dire que si date est > au 15 du mois, mois = 1. Voici mon code
Merci pour ton aide
@+
Code:
Private Sub Worksheet_Activate()
Dim i As Integer
For i = 3 To 500
    If Cells(i, 1) <> "" Then
    Cells(i, 6) = DateDiff("m", CDate(Cells(i, 4)), Date)
        Else
        Exit Sub
    End If
Next
End Sub
 
Re : Vba calculer age à l'activation d'une feuille

Bonjour,

Si j'ai compris????

Code:
Private Sub Worksheet_Activate()
Dim I As Integer
Dim MaVar As Byte
For I = 3 To [A65000].End(xlUp).Row
    If Cells(I, 1) <> "" Then
        MaVar = Jours(Cells(I, 4), Date)
        Cells(I, 6) = DateDiff("m", CDate(Cells(I, 4)), Date)
        If MaVar > 15 Then Cells(I, 6) = Cells(I, 6) + 1
    End If
Next
End Sub

Function Jours(Da1 As Date, Da2 As Date) As Byte
Dim Date1 As String, Date2 As String
Date1 = Format(Da1, "mm/dd/yyyy")
Date2 = Format(Da2, "mm/dd/yyyy")
Jours = Evaluate("DATEDIF(" & """" & Date1 & """" & "," & """" & Date2 & """" & "," & """MD""" & ")")
End Function

Bonne nuit
 
Re : Vba calculer age à l'activation d'une feuille

Bonjour Arpette, bhbh,

Ou en plus simple (bien que l'exemple de bhbh a le mérite d'expliquer l'utilité des fonctions personnalisées) :

Code:
Private Sub Worksheet_Activate()
Dim i As Integer
For i = 3 To 500
  [COLOR="Red"][B]If Cells(i, [COLOR="Red"][B]4[/B][/COLOR]) < Date Then[/B][/COLOR]
    Cells(i, 6) = DateDiff("m", CDate(Cells(i, 4)), Date)
    [COLOR="Red"][B]If Day(Date) > 15 Then Cells(i, 6) = Cells(i, 6) + [/B][/COLOR]1
    Else
    Exit Sub
  End If
Next
End Sub

Cordialement.
 
Re : Vba calculer age à l'activation d'une feuille

Bonjour, Papou 🙂

Je ne pense pas que nos solutions donnent exactement le même résultat...

Dans ton cas, il faut que la date antérieure soit toujours égale au premier d'un mois...(ou du moins inférieure au 15 du mois)

Dans mon cas, s'il y a x mois et plus de 15 jours de différences, on obtient x mois +1

Maintenant, comme je l'ai annoncé :

Si j'ai compris????

@ +
 
Re : Vba calculer age à l'activation d'une feuille

Bonjour,

Si j'ai compris????

Code:
Private Sub Worksheet_Activate()
Dim I As Integer
Dim MaVar As Byte
For I = 3 To [A65000].End(xlUp).Row
    If Cells(I, 1) <> "" Then
        MaVar = Jours(Cells(I, 4), Date)
        Cells(I, 6) = DateDiff("m", CDate(Cells(I, 4)), Date)
        If MaVar > 15 Then Cells(I, 6) = Cells(I, 6) + 1
    End If
Next
End Sub

Function Jours(Da1 As Date, Da2 As Date) As Byte
Dim Date1 As String, Date2 As String
Date1 = Format(Da1, "mm/dd/yyyy")
Date2 = Format(Da2, "mm/dd/yyyy")
Jours = Evaluate("DATEDIF(" & """" & Date1 & """" & "," & """" & Date2 & """" & "," & """MD""" & ")")
End Function

Bonne nuit
Bonjour bhbh, non seulement tu travailles tard ou tôt, mais tu as compris et c'est nickel. Merci encore pour ton aide.
@+
 
Re : Vba calculer age à l'activation d'une feuille

Bonjour bhbh,

Dans ton cas, il faut que la date antérieure soit toujours égale au premier d'un mois...(ou du moins inférieure au 15 du mois)

Non, enfin je pense : je teste cette condition uniquement pour empêcher l'affichage de valeurs négatives si la date analysée est supérieure à la date du jour. Ensuite, si la date est supérieure au 15 du mois de la date courante, alors je rajoute 1.

Dans mon cas, s'il y a x mois et plus de 15 jours de différences, on obtient x mois +1

Je pense que dans mon cas aussi (enfin si j'ai bien compris également).

Bonne journée (ou nuit ?).

Cordialement.
 
Re : Vba calculer age à l'activation d'une feuille

Re-,

admettons la date en D3 = 12/07/2010

et la date du jour : 16/08/2010

avec ta formule, on obtient 2 mois....

avec la mienne 1 seul

Par contre la version DateDif en VBA donne un peu n'importe quoi....

exemple, date en D3 : 16/07/2010

date du jour : 14/08/2010

en VBA : 1

en formule : 0 (ce qui est correct)

Il vaut donc mieux utiliser l'Evaluate de la fonction Excel, que la version VBA...

Bonne soirée
 
Re : Vba calculer age à l'activation d'une feuille

re-,

donc, avec cette version, on ne devrait pas être trop loin....

Code:
Private Sub Worksheet_Activate()
Dim I As Integer
Dim NbJours As Byte
For I = 3 To [A65000].End(xlUp).Row
    If Cells(I, 1) <> "" Then
        NbJours = Jours(Cells(I, 4), Date)
        Cells(I, 6) = Mois(Cells(I, 4), Date)
        If NbJours > 15 Then Cells(I, 6) = Cells(I, 6) + 1
    End If
Next
End Sub

Function Jours(Da1 As Date, Da2 As Date) As Byte
Dim Date1 As String, Date2 As String
Date1 = Format(Da1, "mm/dd/yyyy")
Date2 = Format(Da2, "mm/dd/yyyy")
Jours = Evaluate("DATEDIF(" & """" & Date1 & """" & "," & """" & Date2 & """" & "," & """MD""" & ")")
End Function

Function Mois(Da1 As Date, Da2 As Date) As Byte
Dim Date1 As String, Date2 As String
Date1 = Format(Da1, "mm/dd/yyyy")
Date2 = Format(Da2, "mm/dd/yyyy")
Mois = Evaluate("DATEDIF(" & """" & Date1 & """" & "," & """" & Date2 & """" & "," & """M""" & ")")
End Function

Bonne soirée
 
- 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

Discussions similaires

Réponses
5
Affichages
909
Réponses
15
Affichages
779
Réponses
10
Affichages
791
Réponses
10
Affichages
661
Réponses
4
Affichages
730
Retour