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
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
Bonjour, un seul mot Paritec, Parfait.
J'ai regardé la macro mais je n'arrive pas à la décortiquer
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
Bonsoir Daewoo41 le forum
voilà le fichier avec la macro commentée avec beaucoup de détails
a+
Papou
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