VBA - Nbr de jours entre 2 dates

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 !

sonskriverez

XLDnaute Occasionnel
Bjr le Forum,

J'ai en A1 une date et en B2 une autre et je voudrais avoir en C2 le nbr de jrs entre les dates et si le Nbr de jours est supérieur à 10 copier la ligne entièrement dans un autre onglet.

Une petite macro serait la bienvenue.
Je joint un fichier exemple sachant que le nbr de lignes est variable

Merci de votre aide
 

Pièces jointes

Re : VBA - Nbr de jours entre 2 dates

Bonjour sons........

je remarque que les dates de début sont postérieures à la date de fin

est-ce normal ?
une solution par macro en pièce jointe

à+
Philippe
 

Pièces jointes

Dernière édition:
Re : VBA - Nbr de jours entre 2 dates

Bonjour.
Et c'est normal que les dates de fin soient toutes antérieures aux dates de départ ?

Mettez ceci dans le module Feuil2:
VB:
Option Explicit
'

Private Sub Worksheet_Activate()
Dim tVe As Variant, tVs() As Variant, LMax As Long, Le As Long, Ls As Long, CMax As Long, C As Long
LMax = Feuil1.Cells.SpecialCells(xlCellTypeLastCell).Row - 1
Feuil1.[E2].Resize(LMax).FormulaR1C1 = "=RC[-1]-INT(RC[-2])"
tVe = Feuil1.Range(Feuil1.[A2], Feuil1.Cells.SpecialCells(xlCellTypeLastCell)).Value
CMax = UBound(tVe, 2): ReDim tVs(1 To LMax, 1 To CMax) As Variant
For Le = 1 To UBound(tVe)
   If tVe(Le, 4) > 10 Then Ls = Ls + 1: For C = 1 To UBound(tVe, 2): tVs(Ls, C) = tVe(Le, C): Next C
   Next Le
Me.Rows(Ls + 1).Resize(65535 - Ls).ClearContents
Me.[A2].Resize(Ls, CMax).Value = tVs
End Sub
À+

Bonjour Phlaurent. Ouh lààààaaa... très en retard moi.

Re Edit: ...mais ça va parce que je l'ai écrit complètement autrement quoiqu'en suivant le même algorithme.
 
Dernière édition:
Re : VBA - Nbr de jours entre 2 dates

Merci à vous 2,

J'ai essayé les 2 solutions, mais je n'arrive pas à lancer la Macro de Dranreb j'ai des bugs de varaible pas déclaré

La solution de Phlaurent fonctionne bien mais serait-il possible d'afficher en colonne E le nbr de jours

Merci

PS : oui c'est normal que la date de fin soit < a la date de début

Merci de votre aide
 
Re : VBA - Nbr de jours entre 2 dates

Qu'est-ce qui n'est pas déclaré ?
Avez vous bien mis le code dans le module de la feuille et non dans un module standard ? Car sinon le mot clé "Me" n'a pas de sens et il s'attend peut être à ce que ce soit une variable.
 
Re : VBA - Nbr de jours entre 2 dates

Re,
oui c'est normal que la date de fin soit < a la date de début
c'est le monde à l'envers ........je ne cherche pas à comprendre 😕😕😕


La solution de Phlaurent fonctionne bien mais serait-il possible d'afficher en colonne E le nbr de jours
remplace ton code par celui-ci ( ajout d'une ligne sous For I = 2 To derlig )
Code:
Sub Macro1()
Application.ScreenUpdating = False
derlig = Sheets(1).[C65536].End(xlUp).Row
Position = 2
For i = 2 To derlig
Cells(i, 5).Value = Abs(Cells(i, 4).Value - Cells(i, 3).Value)
If Abs(Cells(i, 4).Value - Cells(i, 3).Value) >= 10 Then
Sheets(2).Cells(Position, 1).Value = Sheets(1).Cells(i, 1).Value
Sheets(2).Cells(Position, 2).Value = Sheets(1).Cells(i, 2).Value
Sheets(2).Cells(Position, 3).Value = Sheets(1).Cells(i, 3).Value
Sheets(2).Cells(Position, 4).Value = Sheets(1).Cells(i, 4).Value
Sheets(2).Cells(Position, 5).Value = Abs(Cells(i, 4).Value - Cells(i, 3).Value)
Position = Position + 1
End If
Next i
Sheets(2).Select
Application.ScreenUpdating = True
End Sub
à+
Philippe
 
- 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ésolu(e)
Microsoft 365 DATEDIF
Réponses
11
Affichages
423
Réponses
3
Affichages
470
  • Résolu(e)
Microsoft 365 DateDif()
Réponses
5
Affichages
396
Réponses
16
Affichages
601
Retour