Autres Idée pour automatiser un fichier de contrôle

daewoo41

XLDnaute Nouveau
Bonjour,

Je fais un copier/coller d'un document html (enfin je crois) vers mon fichier excel (en exemple ce que ça donne).
Je souhaiterais dans mon fichier excel (dans un onglet synthèse par exemple) savoir quelle(s) personne(s) a un bagdeage avant 8:00 et/ou après 19:00 en me donnant la date et l'heure de pointage.
Avez-vous des idées pour automatiser tout ça (car je n'ai pas les données sur toutes les lignes je ne vois pas comment faire sauf à reporter manuellement la date et le nom sur toutes les lignes) ?
Merci par avance.
 

Fichiers joints

job75

XLDnaute Barbatruc
Bonjour daewoo41,

Voyez le fichier joint et cette macro dans le code de la feuille "Synthèse" :
VB:
Private Sub Worksheet_Activate()
Dim tablo, resu, i&, n&
With Feuil1.UsedRange 'CodeName de la feuille
    tablo = .Resize(, 3) 'matrice, plus rapide
    ReDim resu(1 To 2 * Application.Count(.Columns(1)), 1 To 4)
End With
For i = 1 To UBound(tablo)
    If IsDate(tablo(i, 1)) Then
        If tablo(i + 1, 3) < TimeValue("08:00") Then
            n = n + 1
            resu(n, 1) = tablo(i - 1, 2)
            resu(n, 2) = tablo(i, 1)
            resu(n, 3) = tablo(i + 1, 2)
            resu(n, 4) = tablo(i + 1, 3)
        End If
        If tablo(i + 4, 3) > TimeValue("19:00") Then
            n = n + 1
            resu(n, 1) = tablo(i - 1, 2)
            resu(n, 2) = tablo(i, 1)
            resu(n, 3) = tablo(i + 4, 2)
            resu(n, 4) = tablo(i + 4, 3)
        End If
    End If
Next
With [A3] 'à adapter
    If n Then
        .Resize(n, 4) = resu
        .Resize(n, 4).Sort .Cells(1), xlAscending, .Cells(1, 2), , xlAscending, Header:=xlNo 'tri
        .Resize(n, 4).Borders.Weight = xlThin 'bordures
    End If
    .Offset(n).Resize(Rows.Count - n - .Row + 1, 4).Delete xlUp 'RAZ en dessous
End With
End Sub
Elle se déclenche quand on active la feuille.

A+
 

Fichiers joints

daewoo41

XLDnaute Nouveau
Un grand merci job75, une dernière petite précision, est-il possible lancer la macro manuellement en cliquant sur un bouton par exemple ?
 

daewoo41

XLDnaute Nouveau
Ok, je croyais qu'il fallait modifier le début de la macro pour ne pas que ça se lance automatiquement. Je vous remercie.

Si je peux (encore) abuser de votre aide... et pour ne pas solliciter à nouveau le forum (et me débrouiller par moi même, pour apprendre), pouvez-vous me dire dans le texte de la macro, les données qu'il faudrait modifier si les données du premier onglet changeaient de place (par exemple le nom de la personne une ligne au dessus la date une colonne de plus à droite, les horaires 2 lignes plus bas...) je suppose que c'est les "-1" "1" "2" ?
 

daewoo41

XLDnaute Nouveau
J'ai oublié une donnée dans le fichier... :confused:peux-ton compter le nombre de personne présent sur le 1er onglet (sans doublon et avec) et le nombre total de badgeage (par personne et de toutes les personnes) du 1er onglet (pour l'onglet de synthèse je devrais me débrouiller, je sais faire) ?
 

job75

XLDnaute Barbatruc
Bonjour daewoo41,

Post #5 : bien sûr dans la macro il faut ajuster le repérage des éléments de tablo par rapport à la ligne i.

Post #6 : voyez ce fichier (2) et les formules dans la 1ère feuille.

A+
 

Fichiers joints

daewoo41

XLDnaute Nouveau
Je vous remercie pour votre aide précieuse, pouvez-vous m'indiquer ce que vous avez fait en cellule M7, TCD ?
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas