Datediff VBA

adjovi7

XLDnaute Junior
Bonjour,
Je sollicite votre aide pour finaliser ma macro concernant le calcul du nombre de semaine entre deux dates
Ci-joint

j'ai une erreur de syntaxe ou variable sur la déclaration de la date de fin dans ma boucle FOR

merci pour votre aide


Cordialement,
Adjovi7
 

Pièces jointes

  • Copie de Exemple.xlsm
    18.7 KB · Affichages: 32
  • Copie de Exemple.xlsm
    18.7 KB · Affichages: 33
  • Copie de Exemple.xlsm
    18.7 KB · Affichages: 33

Paf

XLDnaute Barbatruc
Re : Datediff VBA

Bonjour,

Plusieurs soucis:
- Les variables DateDeb et DateFin sont déclarées en Range et utilisées comme date
- DateDeb est antérieure à DateFin => nombre de semaines négatif
- La variable FL1 est vidée ( =Nothing) avant la fin de son utilisation
- Certains Range ne sont pas référencés à la feuille FL1
- Dans Cell.Offset(, 12).Value = CalculSem Cell n'a pas été initialisé

Une modification possible:
Code:
Sub Macro4()
 Application.ScreenUpdating = False
 Dim FL1 As Worksheet, Cell As Range, Plage As Range
 Dim CalculSem As Variant 'varible pour calculer le nombre de semaine
 Dim DateDeb As Date 'variable date de depart
 Dim DateFin As Date 'variable de de fin
 Dim i As Integer
 Dim dl As Long 'déclare la variable dl (Dernière Ligne)
 Dim NoCol As Integer

 Set FL1 = Worksheets("Feuil1") 'instancier l'objet ici c'est la feuille1
 With FL1
  'Set Plage = .Range("A3:A" & [L65356].End(xlUp).Row) 'plage de travail sur la colonne A et L
  'Plage.Offset(, 1).Resize(, 17).Interior.ColorIndex = xlNone 'éfface toutes les couleurs dans la feuille1
    
 NoCol = 7 'N° de colonne
 dl = .Range("G" & Rows.Count).End(xlUp).Row ' la dernière ligne utilisée de la colonne G
 
 For i = 2 To dl ' boucle pour lire les valeurs de la colonne G
    DateFin = .Cells(i, NoCol) ' date variant dans toute la colonne G
    DateDeb = Range("J2").Value ' date de départ dans la cellule X2
     'CalculSem = DateDiff("ww", DateDeb, DateFin, vbMonday) + 1
    CalculSem = DateDiff("ww", DateFin, DateDeb, vbMonday) + 1
    .Cells(i, 12).Value = CalculSem
 Next i
                 
 Set FL1 = Nothing
 Set Plage = Nothing

 End With
 Application.ScreenUpdating = True
End Sub

A+
 

JCGL

XLDnaute Barbatruc
Re : Datediff VBA

Bonjour à tous,

Peux-tu essayer avec :
VB:
....
Dim DateDeb As Date 'variable date de depart
Dim DateFin As Date 'variable de de fin
....

et

VB:
 'CalculSem = DateDiff("ww", DateDeb, DateFin, vbMonday) + 1
 Cells(i, 12).Value = Int((DateDeb - DateFin) / 7)

A+ à tous
 

Bebere

XLDnaute Barbatruc
Re : Datediff VBA

bonjour Adjovi
compare les 2 codes et tu sauras tout

Code:
Sub Macro4()

    Application.ScreenUpdating = False
    Dim FL1 As Worksheet, Cell As Range, Plage As Range
    Dim CalculSem As Variant    'varible pour calculer le nombre de semaine
    Dim DateDeb As Date    'Range 'variable date de depart
    Dim DateFin As Date    'Range 'variable de de fin
    Dim i As Integer
    Dim dl As Long    'déclare la variable dl (Dernière Ligne)
    Dim NoCol As Integer


    Set FL1 = Worksheets("Feuil1")    'instancier l'objet ici c'est la feuille1
    With FL1
        Set Plage = .Range("A3:A" & [L65356].End(xlUp).Row)    'plage de travail sur la colonne A et L

        'Plage.Offset(, 1).Resize(, 17).Interior.ColorIndex = xlNone 'éfface toutes les couleurs dans la feuille1
        DateDeb = .Range("J2").Value    ' date de départ dans la cellule X2

        NoCol = 7    'N° de colonne
        dl = .Range("G" & Rows.Count).End(xlUp).Row    ' la dernière ligne utilisée de la colonne G
        For i = 2 To dl    ' boucle pour lire les valeurs de la colonne G
            DateFin = .Cells(i, NoCol)    ' date variant dans toute la colonne G
            '     CalculSem = DateDiff("ww", DateFin, Datedebut, vbMonday) + 1
            .Cells(i, 12).Value = Int((DateDeb - DateFin) / 7)    ' CalculSem
        Next i
    End With

    Set FL1 = Nothing
    Set Plage = Nothing

    Application.ScreenUpdating = True
End Sub
 

Discussions similaires

Réponses
16
Affichages
454

Membres actuellement en ligne

Statistiques des forums

Discussions
312 069
Messages
2 085 040
Membres
102 764
dernier inscrit
nestu