addition de date et entier et retour de type date

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

N

nsqualli

Guest
bonsoir,

dans ma feuille excel je dois faire le traitement suivant:

- faire l'addition d'une cellule de la colonne AI qui de type entier (exemple 1.2 en sachant que 0.1 = 45min) avec la date d'aujourd'hui

- le resultat obtenu je dois le comparer avec la cellule de la colonne k qui est de type date.

SVP comment je peux faire cela?

Merci
 
Re : addition de date et entier et retour de type date

Bonsoir,

Je crains ne pas tout comprendre.

Dans une cellule la date d'aujourd'hui : 20/11/2008
En format date/heure cela donne :20/11/2008 00:00:00

Tu y additionnes 1.2/0.1*"00:45:00", soit 09:00:00.
Le résultat sera 20/11/2008 09:00:00

Puis tu veux comparer ce résultat avec une autre cellule.
Mais comparer quoi, additionner, soustraire, ... ?

abcd
 
Re : addition de date et entier et retour de type date

Bonjour

Ci dessous une formule par macro

Code:
Function calculdate(valeur_a_ajouter As Range, Date_debut As Range, coefficient As Date)
Application.Volatile
calculdate = DateAdd("n", valeur_a_ajouter * coefficient, Date_debut)


End Function
valeur_a_ajouter = 1.2
Date_debut 20/11/2008 00:00:00
coefficient 450

Résultat obtenu : 20/11/08 9:00

A tester

JP

Ci joint le fichier à terminer pour la comparaison
 

Pièces jointes

Dernière édition:
Re : addition de date et entier et retour de type date

Bonsoir,

Je crains ne pas tout comprendre.

Dans une cellule la date d'aujourd'hui : 20/11/2008
En format date/heure cela donne :20/11/2008 00:00:00

Tu y additionnes 1.2/0.1*"00:45:00", soit 09:00:00.
Le résultat sera 20/11/2008 09:00:00

Puis tu veux comparer ce résultat avec une autre cellule.
Mais comparer quoi, additionner, soustraire, ... ?

abcd

non pas ça, je viens de mettre les colonnes avec quoi je dois travailler
ce que je veux faire en fait RAF ANA est le temps qui reste pour terminer une procedure, c'est un entier qui represente le temps en jour/homme par exemple (1.2 = une journée de 8h et 90min), cela je dois l'addition a la date d'aujourd'hui c-a-dire que si aujourd'hui est le 20/11/2008, je dois faire 20/11/2008 + une journée de 8heures et 90min, le resultat je dois le comparer avec le jalon de livraion qui est de type date jj/mm/aaaa.

Je galereeeeeeeeee😡
 
Re : addition de date et entier et retour de type date

Bonsoir,

Il fallait préciser que l'entier représentait des jours !

AJ2 : =K2+ENT(AI2)+MOD(AI2;1)*10/32
formule au format jj/mm/aaa hh:mm:ss, à copier vers le bas.

Résultats
AJ2 : 12/11/2008 00:45:00
AJ3 : 16/02/2008 00:01:30

abcd
 
Re : addition de date et entier et retour de type date

Bonjour,

Pour la macro, il te suffit de l'enrigistrer puisque tu as la formule.

J'ai aussi un petite remarque à formuler.
exemple 1.2 en sachant que 0.1 = 45min

10*"00:45:00"=450 min, mais une journée comporte 480 min (8 hrs*60 min)
Il n'est donc pas possible d'additionner une valeur dans la tranche 450/480.
Les 45 min ne devraient-il pas être 48 min ?

abcd
 
Re : addition de date et entier et retour de type date

Bonjour,

Pour la macro, il te suffit de l'enrigistrer puisque tu as la formule.

J'ai aussi un petite remarque à formuler.
exemple 1.2 en sachant que 0.1 = 45min

10*"00:45:00"=450 min, mais une journée comporte 480 min (8 hrs*60 min)
Il n'est donc pas possible d'additionner une valeur dans la tranche 450/480.
Les 45 min ne devraient-il pas être 48 min ?

abcd

je crois qu'on peut le faire
 
Re : addition de date et entier et retour de type date

bon voila ce que j'ai fais:

Code:
Sub demandeARisque() 

Dim dateJalon As Date 
Dim DerLig As Long, Lig As Long 

Dim FeuilDstRDJA As Worksheet, DerLD1 As Long 
Dim FeuilDstDaR As Worksheet, DerLD2 As Long 
  
Sheets.Add 
        ActiveSheet.Name = "RDJA" 
        Set FeuilDstRDJA = ActiveSheet 
        Call ecrire2 
        
Sheets.Add 
        ActiveSheet.Name = "Demandes a risques" 
        Set FeuilDstDaR = ActiveSheet 
        Call ecrire3 

With Sheets("Suivi des demandes") 
    
    ' Trouver la dernière ligne 
    DerLig = .Range("A" & Rows.Count).End(xlUp).Row 
    
    ' Pour chaque ligne 
    For Lig = 3 To DerLig 
      
      Select Case .Range("T" & Lig).Value 
        
        Case "ANA", "RET ANA" 
        
        dateJalon = [COLOR="Red"]calculdate(.Range("AI" & Lig).Value, Date, 480) [/COLOR]
        
        If [COLOR="Blue"]dateJalon > .Range("K" & Lig).Value[/COLOR] Then 
        
        .Range("B" & Lig).Font.ColorIndex = 18 
        .Range("B" & Lig).Font.Bold = True 
        
        Set FeuilDstRDJA = Sheets("RDJA") 
        
        DerLD1 = FeuilDstRDJA.Range("A" & Rows.Count).End(xlUp).Row 
        
        'Inscription 
        FeuilDstRDJA.Range("A" & DerLD1 + 1).Value = .Range("A" & Lig).Value 
        FeuilDstRDJA.Range("B" & DerLD1 + 1).Value = .Range("B" & Lig).Value 
        FeuilDstRDJA.Range("C" & DerLD1 + 1).Value = .Range("K" & Lig).Value 
        FeuilDstRDJA.Range("D" & DerLD1 + 1).Value = .Range("AI" & Lig).Value 
        FeuilDstRDJA.Range("E" & DerLD1 + 1).Value = .Range("R" & Lig).Value 
        FeuilDstRDJA.Range("F" & DerLD1 + 1).Value = .Range("I" & Lig).Value 
        
        End If 
        
            Case "REA / TST", "VAL REA", "VAL BL", "VAL REC" 
            
            .Range("B" & Lig).Font.ColorIndex = 46 
            .Range("B" & Lig).Font.Bold = True 
            
            Set FeuilDstDaR = Sheets("Demandes a risques") 
            
            DerLD2 = FeuilDstDaR.Range("A" & Rows.Count).End(xlUp).Row 
            
                'Inscription 
        FeuilDstDaR.Range("A" & DerLD2 + 1).Value = .Range("A" & Lig).Value 
        FeuilDstDaR.Range("B" & DerLD2 + 1).Value = .Range("B" & Lig).Value 
        FeuilDstDaR.Range("C" & DerLD2 + 1).Value = .Range("AJ" & Lig).Value 
        FeuilDstDaR.Range("D" & DerLD2 + 1).Value = .Range("R" & Lig).Value 
        FeuilDstDaR.Range("E" & DerLD2 + 1).Value = .Range("S" & Lig).Value 
        
                Case Else 
                      
      End Select 
            'Else 
            'rien faire 
            
      'End If 
            
    Next Lig 
    
  End With 

End Sub

la function en rouge fait le calcul voulu ( additionner la date du jour [type date] + RAF ANA [long] )
la ligne en bleu fait la comparaison entre la date de retour de la function en rouge et le jalon de livraison K[date]

voila function calculdate:

Code:
Function calculdate(valeur_a_ajouter As Long, Date_debut As Date, coefficient As Date) 


Application.Volatile 
calculdate = DateAdd("n", valeur_a_ajouter * coefficient, Date_debut) 

End Function

la macro est dans la feuille1 "suivi des demandes" et la fonction calculdate est dans le module1


MAIS ça me donne l'erreur "imcompatibilité de type"

est ce que vous pouvez m'aidez?
merci
 
Dernière modification par un modérateur:
Re : addition de date et entier et retour de type date

bon j'ai trouvé la solution et sa marche tres bien maintenant, voila le code si sa peut aider:

Code:
Sub demandeARisque()

Dim dateJalon As Date
Dim DerLig As Long, Lig As Long

Dim FeuilDstRDJA As Worksheet, DerLD1 As Long
Dim FeuilDstDaR As Worksheet, DerLD2 As Long
  
Sheets.Add
        ActiveSheet.Name = "RDJA"
        Set FeuilDstRDJA = ActiveSheet
        Call ecrire2
        
Sheets.Add
        ActiveSheet.Name = "Demandes a risques"
        Set FeuilDstDaR = ActiveSheet
        Call ecrire3

With Sheets("Suivi des demandes")
    
    ' Trouver la dernière ligne
    DerLig = .Range("A" & Rows.Count).End(xlUp).Row
    
    ' Pour chaque ligne
    For Lig = 3 To DerLig
      
      Select Case .Range("T" & Lig).Value
        
        Case "ANA", "RET ANA"
        
        dateJalon = calculdate(.Range("AI" & Lig).Value, Date, 480)
        
        If Not (IsDate(.Range("K" & Lig).Value)) Then
        ElseIf dateJalon > .Range("K" & Lig).Value Then
        
        .Range("B" & Lig).Font.ColorIndex = 18
        .Range("B" & Lig).Font.Bold = True
        
        Set FeuilDstRDJA = Sheets("RDJA")
        
        DerLD1 = FeuilDstRDJA.Range("A" & Rows.Count).End(xlUp).Row
        
        'Inscription
        FeuilDstRDJA.Range("A" & DerLD1 + 1).Value = .Range("A" & Lig).Value
        FeuilDstRDJA.Range("B" & DerLD1 + 1).Value = .Range("B" & Lig).Value
        FeuilDstRDJA.Range("C" & DerLD1 + 1).Value = .Range("K" & Lig).Value
        FeuilDstRDJA.Range("D" & DerLD1 + 1).Value = .Range("AI" & Lig).Value
        FeuilDstRDJA.Range("E" & DerLD1 + 1).Value = .Range("R" & Lig).Value
        FeuilDstRDJA.Range("F" & DerLD1 + 1).Value = .Range("I" & Lig).Value
        
        End If
        
            Case "REA / TST", "VAL REA", "VAL BL", "VAL REC"
            
            dateJalon = calculdate(.Range("AJ" & Lig).Value, Date, 480)
        
            If Not (IsDate(.Range("L" & Lig).Value)) Then
            ElseIf dateJalon > .Range("L" & Lig).Value Then
            
            .Range("B" & Lig).Font.ColorIndex = 46
            .Range("B" & Lig).Font.Bold = True
            
            Set FeuilDstDaR = Sheets("Demandes a risques")
            
            DerLD2 = FeuilDstDaR.Range("A" & Rows.Count).End(xlUp).Row
            
                'Inscription
                FeuilDstDaR.Range("A" & DerLD2 + 1).Value = .Range("A" & Lig).Value
                FeuilDstDaR.Range("B" & DerLD2 + 1).Value = .Range("B" & Lig).Value
                FeuilDstDaR.Range("C" & DerLD2 + 1).Value = .Range("AJ" & Lig).Value
                FeuilDstDaR.Range("D" & DerLD2 + 1).Value = .Range("L" & Lig).Value
                FeuilDstDaR.Range("E" & DerLD2 + 1).Value = .Range("R" & Lig).Value
                FeuilDstDaR.Range("F" & DerLD2 + 1).Value = .Range("S" & Lig).Value
            End If
            
                Case Else
                     
      End Select
            'Else
            'rien faire
            
      'End If
            
    Next Lig
    
  End With

End Sub

Code:
Function calculdate(valeur_a_ajouter As Double, Date_debut As Date, coefficient As Date)

Application.Volatile
calculdate = DateAdd("n", (valeur_a_ajouter * coefficient) + 960, Date_debut)

End Function

Bon courage
 
- 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

  • Question Question
Microsoft 365 Aide Excel formule
Réponses
4
Affichages
480
Retour