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.
 

Pièces jointes

  • Classeur2.xls
    16 KB · Affichages: 15

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+
 

Pièces jointes

  • Classeur2(1).xls
    83 KB · Affichages: 20

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+
 

Pièces jointes

  • Classeur2(2).xls
    76.5 KB · Affichages: 25

Discussions similaires

Réponses
6
Affichages
256