Allignement des données

MAZETTE

XLDnaute Occasionnel
Bonjour à tous,

J'aurais besoin d'un petit coup de main afin d'alligner des pointages en fonction de la journée de travail ce qui me permetrait ensuite de traiter correctement les données .

Sur ma feuil 1:

En colonne 1: des jours
En colonne 2: des dates
En colonne 3 : des matricules
En colonne 5,6,7,8,9,10,11 : des pointages correspondant à des débuts de crénaux horaire et à des fin de crénaux horaires.

Tout serait super simple si sur une même journée de travail,j'avais tous les pointages de la journée mais ce n'est pas le cas.

Exemple:

Sur une journée de travail, je souhaiterai avoir:

Vendredi 6/02/2008 CC2002257 18:45 00:06

Mais sur cette feuille d'exportation, si l'employé a fini son service après minuit,j'ai :

Vendredi 06/02/2009 CC2002257 18:45
Samedi 07/02/2009 CC2002257 00:06

J'ai commencé un début de formule mais pour le reste....là je coince et j'avoue qu'une soluce serait la bien venu...d'autant plus que j'ai environ 5000 ligne à traiter..

Merci à vous
 

Pièces jointes

  • mazettetest.zip
    7.1 KB · Affichages: 35
  • mazettetest.zip
    7.1 KB · Affichages: 37
  • mazettetest.zip
    7.1 KB · Affichages: 36

job75

XLDnaute Barbatruc
Re : Allignement des données

Bonjour Mazette,

Ci-joint le fichier et la macro qui se lance par le bouton :

Code:
Sub Heures_tardives()
Dim P As Range, cel As Range, vide1 As Range, vide2 As Range, plag As Range
Set P = Cells.Find("POINTAGES", LookIn:=xlFormulas, LookAt:=xlWhole, MatchCase:=True)
If P Is Nothing Then MsgBox "Il faut la cellule POINTAGES": Exit Sub
Set cel = P.Offset(2)
While cel.Text <> ""
If cel.Text < "05:00" [COLOR="Red"]And CDate(cel.Offset(0, -3).Text) = CDate(cel.Offset(-1, -3).Text) + 1 [/COLOR]Then
Set vide1 = Range(cel.Offset(-1), cel.Offset(-1, 7)).Find("__:__")
Set vide2 = Range(cel, cel.Offset(0, 7)).Find("__:__")
Set plag = Range(cel.Offset(0, 1), vide2)
cel.Copy vide1
plag.Copy cel
End If
Set cel = cel.Offset(1)
Wend
End Sub

Les cellules traitées sont celles situées sous la cellule POINTAGES

J'ai supposé que les heures tardives sont celles avant 05:00 (du matin).

Par ailleurs je ne fais que des copier-coller ce qui conserve le format (texte) des pointages.

Edit : on ne voyait pas la ligne 1 à cause du fractionnement

A+
 

Pièces jointes

  • mazettetest.zip
    11.2 KB · Affichages: 33
  • mazettetest.zip
    11.2 KB · Affichages: 27
  • mazettetest.zip
    11.2 KB · Affichages: 31
Dernière édition:

MAZETTE

XLDnaute Occasionnel
Re : Allignement des données

Bonjour Job,

C'est super et c'est presque ca ....malgré un petit hic....

Si tu reprend l'exmple , regarde le matricule CC2002557.

Le 1/02 il y a un pointage à 00:05 alors que j'aurais souhaité obtenir 18:33 23:10 et suprimer ce pointage.

En ce qui concerne les heures tardives ,tu supposition est juste ...

A te lire
 

Pièces jointes

  • mazettetest.zip
    11.9 KB · Affichages: 23
  • mazettetest.zip
    11.9 KB · Affichages: 23
  • mazettetest.zip
    11.9 KB · Affichages: 26

job75

XLDnaute Barbatruc
Re : Allignement des données

Re,

Voilà Mazette, juste une petite modif :

Code:
Sub Heures_tardives()
Dim P As Range, cel As Range, vide1 As Range, vide2 As Range, plag As Range
Set P = Cells.Find("POINTAGES", LookIn:=xlFormulas, LookAt:=xlWhole, MatchCase:=True)
If P Is Nothing Then MsgBox "Il faut la cellule POINTAGES": Exit Sub
Set cel = P.Offset(1)
[COLOR="Red"]On Error Resume Next[/COLOR]
While cel.Text <> ""
If cel.Text < "05:00" Then
Set vide1 = Range(cel.Offset(-1), cel.Offset(-1, 7)).Find("__:__")
Set vide2 = Range(cel, cel.Offset(0, 7)).Find("__:__")
Set plag = Range(cel.Offset(0, 1), vide2)
[COLOR="Red"]If CDate(cel.Offset(0, -3).Text) = CDate(cel.Offset(-1, -3).Text) + 1 Then [/COLOR]cel.Copy vide1
plag.Copy cel
End If
Set cel = cel.Offset(1)
Wend
End Sub

Edit : je traite aussi la 1ère ligne de données, et donc rajouté On Error Resume Next

Bonne nuit.
 

Pièces jointes

  • mazettetest.zip
    11.3 KB · Affichages: 33
  • mazettetest.zip
    11.3 KB · Affichages: 31
  • mazettetest.zip
    11.3 KB · Affichages: 33
Dernière édition:

Discussions similaires

Réponses
12
Affichages
711

Statistiques des forums

Discussions
312 160
Messages
2 085 840
Membres
103 001
dernier inscrit
vivinator