VBA ou formules

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) ? J'ai une macro, qui concerne un autre fichier (un peu similaire) mais je n'arrive pas à l'adapter pour les 2 fichiers (je suis novice), si vous avez des idées je suis preneur. Pour un des deux fichiers, peut-on passer par des formules ?

Merci par avance.

Macro:

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

4test.zip (12.76 Ko)
6test2.zip (13.91 Ko)

Bonjour Daewoo41 le forum

ton fichier avec tes lignes vides, le manque de données du style code horaire, bref un fichier plein d'exceptions

bref voilà tu ouvres tu lis, tu testes et tu me redis

a+

Papou

9daewoo41-v1.zip (26.34 Ko)

Bonjour, un seul mot Paritec, Parfait.

J'ai regardé la macro mais je n'arrive pas à la décortiquer je suis trop novice, je n'arrive pas à trouver à partir de quelle ligne la macro fonctionne. Et comment récupérer les données de la première feuille pour les mettre dans la seconde... .

Merci pour tout, bonne journée

Bonjour Daewoo41 le forum

la macro traite la feuille 1 de la première ligne à la ligne 66 max

mais il est vrai qu'avec un fichier tordu comme tu as passé, cela complique un peu beaucoup la macro

si j'ai du courage cet après midi je te commenterai la macro, mais j'ai bien peur, si tu es réellement novice en vba, tu auras du mal à comprendre cette macro. (je pense)

Et comment récupérer les données de la première feuille pour les mettre dans la seconde...

bah c'est ma macro traiter qui fait le tout !!!

a+

Papou

Merci pour tout.

Bonsoir Daewoo41 le forum

voilà le fichier avec la macro commentée avec beaucoup de détails

a+

Papou

11daewoo41-v2.zip (27.04 Ko)

Et bah je ne sais pas quoi dire, vraiment merci pour toute cette aide.

Je vais essayer de faire une autre macro à mon temps en m'inspirant des explications avec les nombreux détails.

Un grand Merci Paritec

Bonjour,

Je reviens sur ce post car j'ai une demande un peu similaire... malgré les explications de Paritec je n'arrive pas à modifier la macro...

Vous trouverez le détail en PJ si vous pouvez m'aider.

Bonne journée

1testdaewoo41.xlsm (35.22 Ko)
Rechercher des sujets similaires à "vba formules"