Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA : obtenir le début et la fin d'une période

miguelangelo

XLDnaute Occasionnel
Bonsoir à tous,

plus parlant qu'un exemple y a pas, alors .

dans le fichier joint, ma reference est le lot_conges
il correspond à un ensemble de jours d'absence.
j'ai une macro qui alimente une userform

Sub validation_abs()

For Each c In Range("lot_conges") =colonne H
If c.Offset(0, -3) <> Range("mesinitiales") Then GoTo suivant (mes initiales correspond à la colonne E
If c.Offset(0, -1) = "" Then GoTo traitement
suivant:
Next c
MsgBox ("Vous n'avez pas de congés à valider.")
GoTo fin

traitement: validation = nom de USF
validation.Show
validation.demandeur = c.Offset(0, -6)
validation.absence = c.Offset(0, -4)
validation.date_absence = c.Offset(0, 5)
validation.date_fin_absence = c.Offset(0, 5)
validation.date_pose = c.Offset(0, 2)


fin:

End Sub

mon souci : je ne sais pas comment en f(x) de C qu'il me déduise la date de début et de fin de la période ?

Merci d'avance
 

Pièces jointes

  • test.xls
    34.5 KB · Affichages: 65
  • test.xls
    34.5 KB · Affichages: 69
  • test.xls
    34.5 KB · Affichages: 69

ChTi160

XLDnaute Barbatruc
Re : VBA : obtenir le début et la fin d'une période

Salut miguelangelo

Bonjour le fil
Bonjour le Forum

il serait bon que tu nous mettes en forme le résultat attendu

merci d'avance

Bonne journée
 

smotty

XLDnaute Occasionnel
Re : VBA : obtenir le début et la fin d'une période

Bonjour,

Si j'ai bien compris, voici un code pour déterminer une période de congés en fonction des initiales et du type d'arrêt:

Code:
Sub Conges(ByVal initiales As String, ByVal causes As String)
    Dim Datemin As Date
    Dim Datemax As Date
    Dim D As Date
    Dim C As Range
    Dim l As Long
    
    l = [A65535].End(xlUp).Row
    
    For Each C In Range("B2:B" & l)
        If C.Value = initiales Then
            If C.Offset(0, 2) = causes Then
                D = C.Offset(0, 4)
                Debug.Print D
                If Datemin = "00:00:00" Then Datemin = D
                If Datemax = "00:00:00" Then Datemax = D
                If D < Datemin Then Datemin = D
                If D > Datemax Then Datemax = D
            End If
            
        End If
    Next C
    
    MsgBox initiales & ": absence du " & Datemin & " au " & Datemax
    
End Sub

Sub afficheconges()
    Call Conges("MNS", "Arr.Mal")
End Sub

A adapter

cdt

smotty
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…