Insertion automatique de lignes...

Le
pier
Bonjour,

Je récupère tous les mois un fichier XLS sous la forme :

Nom Date Badge In Badge Out

Il y a plusieurs lignes par jour en fonction de l'activité de chaque
agent.
J'aimerai que 2 lignes vides soient insérées automatiquement après
chaque jour en sachant que le nombre de lignes par jour peut être
différent d'un mois sur l'autre.

Puis dans la première ligne insérée (cellule G28, G50,G63), calculer
automatiquement le temps de présence total par jour (= Badge Out -
Badge In)

Une image de ce que j'ai actuellement : http://www.sendspace.com/file/0xu4s=
m
une image de ce que je voudrais obtenir : http://www.sendspace.com/file/v67=
ig6

Mon classeur : http://www.sendspace.com/file/ihhra9

D'avance, merci !

Pierre
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Christophe Mathon
Le #16388411
Bonjour Pier,

Voila un:

J'aimerai que 2 lignes vides soient insérées automatiquement après
chaque jour en sachant que le nombre de lignes par jour peut être
différent d'un mois sur l'autre.



Sub InsertSpace()
i = 1
Do While i < 1000
If (Cells(i, 4).Value = "") Then
i = i + 1
ElseIf (Cells(i, 4).Value <> Cells(i - 1, 4)) Then
Rows(i & ":" & i).Select
Selection.Insert Shift:=xlDown,
CopyOrigin:=xlFormatFromLeftOrAbove
i = i + 1
End If
i = i + 1
Loop
End Sub

Et le deuxieme dans qq minutes.


--
Regards
Christophe Mathon
while(!(succeed=try()));

"pier" news:
Bonjour,

Je récupère tous les mois un fichier XLS sous la forme :

Nom Date Badge In Badge Out

Il y a plusieurs lignes par jour en fonction de l'activité de chaque
agent.
J'aimerai que 2 lignes vides soient insérées automatiquement après
chaque jour en sachant que le nombre de lignes par jour peut être
différent d'un mois sur l'autre.

Puis dans la première ligne insérée (cellule G28, G50,G63), calculer
automatiquement le temps de présence total par jour (= Badge Out -
Badge In)

Une image de ce que j'ai actuellement : http://www.sendspace.com/file/0xu4sm
une image de ce que je voudrais obtenir :
http://www.sendspace.com/file/v67ig6

Mon classeur : http://www.sendspace.com/file/ihhra9

D'avance, merci !

Pierre
Ellimac
Le #16388591
Bonjour,

Clic droir sur l'onglet de la feuille "Brut" et coller ceci :

Sub SousTotaux()
Application.Goto Reference:="R8C2"
Selection.RemoveSubtotal
Selection.Subtotal GroupBy:=3, Function:=xlMax, TotalList:=Array(5), _
Replace:úlse, PageBreaks:úlse, SummaryBelowData:=True
Selection.Subtotal GroupBy:=3, Function:=xlMin, TotalList:=Array(4), _
Replace:úlse, PageBreaks:úlse, SummaryBelowData:=True
der = Range("b65000").End(xlUp).Row
n = 1 + Application.CountBlank(Range("b8:b" & der)) / 2
For cpt = 1 To n
ActiveCell.End(xlDown).Offset(1, 5).Select
ActiveCell = ActiveCell.Offset(-1, -1) - ActiveCell.Offset(, -2)

ActiveCell.Offset(1).EntireRow.ClearContents
Range(ActiveCell.Offset(, -3), ActiveCell.Offset(, -2)).ClearContents
ActiveCell.Offset(2, -5).Select
Next cpt
ActiveCell.Range("a1:a2").EntireRow.Delete
End Sub

Camille
"pier"
Bonjour,

Je récupère tous les mois un fichier XLS sous la forme :

Nom Date Badge In Badge Out

Il y a plusieurs lignes par jour en fonction de l'activité de chaque
agent.
J'aimerai que 2 lignes vides soient insérées automatiquement après
chaque jour en sachant que le nombre de lignes par jour peut être
différent d'un mois sur l'autre.

Puis dans la première ligne insérée (cellule G28, G50,G63), calculer
automatiquement le temps de présence total par jour (= Badge Out -
Badge In)

Une image de ce que j'ai actuellement : http://www.sendspace.com/file/0xu4sm
une image de ce que je voudrais obtenir :
http://www.sendspace.com/file/v67ig6

Mon classeur : http://www.sendspace.com/file/ihhra9

D'avance, merci !

Pierre
Christophe Mathon
Le #16388571
Re,

Tous dans une macro:) :

Sub InsertSpace()
i = 9

BadgeIn = "8"
BadgeOut = ""

Do While i < 1000
If (Cells(i - 1, 4).Value = "") Then
i = i + 1
ElseIf (Cells(i, 4).Value <> Cells(i - 1, 4)) Then
Rows(i & ":" & i).Select
Selection.Insert Shift:=xlDown,
CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlDown,
CopyOrigin:=xlFormatFromLeftOrAbove

BadgeOut = i - 1
Range("G" & i).Select
ActiveCell.Formula = "=F" & BadgeOut & "-" & "E" & BadgeIn
i = i + 2

BadgeIn = BadgeOut + 3
End If
i = i + 1
Loop
End Sub


--
Regards
Christophe Mathon
while(!(succeed=try()));

"Christophe Mathon" news:
Bonjour Pier,

Voila un:

J'aimerai que 2 lignes vides soient insérées automatiquement après
chaque jour en sachant que le nombre de lignes par jour peut être
différent d'un mois sur l'autre.



Sub InsertSpace()
i = 1
Do While i < 1000
If (Cells(i, 4).Value = "") Then
i = i + 1
ElseIf (Cells(i, 4).Value <> Cells(i - 1, 4)) Then
Rows(i & ":" & i).Select
Selection.Insert Shift:=xlDown,
CopyOrigin:=xlFormatFromLeftOrAbove
i = i + 1
End If
i = i + 1
Loop
End Sub

Et le deuxieme dans qq minutes.


--
Regards
Christophe Mathon
while(!(succeed=try()));

"pier" news:
Bonjour,

Je récupère tous les mois un fichier XLS sous la forme :

Nom Date Badge In Badge Out

Il y a plusieurs lignes par jour en fonction de l'activité de chaque
agent.
J'aimerai que 2 lignes vides soient insérées automatiquement après
chaque jour en sachant que le nombre de lignes par jour peut être
différent d'un mois sur l'autre.

Puis dans la première ligne insérée (cellule G28, G50,G63), calculer
automatiquement le temps de présence total par jour (= Badge Out -
Badge In)

Une image de ce que j'ai actuellement :
http://www.sendspace.com/file/0xu4sm
une image de ce que je voudrais obtenir :
http://www.sendspace.com/file/v67ig6

Mon classeur : http://www.sendspace.com/file/ihhra9

D'avance, merci !

Pierre



Pierre D
Le #16388761
Bonjour Camille,

Merci pour ton aide.

J'ai copié/collé dans la feuille "brut" comme tu le dis mais je
n'obtiens pas le résultat voulu ...???
Ça ne change rien en fait...

Pierre



On 22 juil, 15:17, "Ellimac"
Bonjour,

Clic droir sur l'onglet de la feuille "Brut" et coller ceci :

Sub SousTotaux()
    Application.Goto Reference:="R8C2"
    Selection.RemoveSubtotal
    Selection.Subtotal GroupBy:=3, Function:=xlMax, TotalList:= Array(5), _
        Replace:úlse, PageBreaks:úlse, SummaryBelowData: =True
    Selection.Subtotal GroupBy:=3, Function:=xlMin, TotalList:= Array(4), _
        Replace:úlse, PageBreaks:úlse, SummaryBelowData: =True
    der = Range("b65000").End(xlUp).Row
    n = 1 + Application.CountBlank(Range("b8:b" & der)) / 2
    For cpt = 1 To n
    ActiveCell.End(xlDown).Offset(1, 5).Select
    ActiveCell = ActiveCell.Offset(-1, -1) - ActiveCell.Offset(, -2 )

    ActiveCell.Offset(1).EntireRow.ClearContents
    Range(ActiveCell.Offset(, -3), ActiveCell.Offset(, -2)).ClearCont ents
    ActiveCell.Offset(2, -5).Select
    Next cpt
    ActiveCell.Range("a1:a2").EntireRow.Delete
End Sub

Camille


Pierre D
Le #16388751
Re'bonjour Christophe !

Même erreur de syntaxe à l'exécution de la macro... je suis incapable
de corriger moi même !

Merci pour ton aide.

Pierre


On 22 juil, 15:21, "Christophe Mathon"
Re,

Tous dans une macro:) :

Sub InsertSpace()
    i = 9

    BadgeIn = "8"
    BadgeOut = ""

    Do While i < 1000
        If (Cells(i - 1, 4).Value = "") Then
            i = i + 1
        ElseIf (Cells(i, 4).Value <> Cells(i - 1, 4)) Then
            Rows(i & ":" & i).Select
            Selection.Insert Shift:=xlDown,
CopyOrigin:=xlFormatFromLeftOrAbove
            Selection.Insert Shift:=xlDown,
CopyOrigin:=xlFormatFromLeftOrAbove

            BadgeOut = i - 1
            Range("G" & i).Select
            ActiveCell.Formula = "=F" & BadgeOut & "-" & "E" & BadgeIn
            i = i + 2

            BadgeIn = BadgeOut + 3
        End If
        i = i + 1
    Loop
End Sub

--
Regards
Christophe Mathon
while(!(succeed=try()));



Pierre D
Le #16388741
Bonjour,

Merci Christophe.

J'ai un message d'erreur "Erreur de compilation / erreur de syntaxe"
avec Selection.Insert Shift:=xlDown, surligné dans le débogueur....

Pierre


On 22 juil, 15:01, "Christophe Mathon"
Bonjour Pier,

Voila un:

> J'aimerai que 2 lignes vides soient insérées automatiquement aprè s
> chaque jour en sachant que le nombre de lignes par jour peut être
> différent d'un mois sur l'autre.

Sub InsertSpace()
    i = 1
    Do While i < 1000
        If (Cells(i, 4).Value = "") Then
            i = i + 1
        ElseIf (Cells(i, 4).Value <> Cells(i - 1, 4)) Then
            Rows(i & ":" & i).Select
            Selection.Insert Shift:=xlDown,
CopyOrigin:=xlFormatFromLeftOrAbove
            i = i + 1
        End If
        i = i + 1
    Loop
End Sub

Et le deuxieme dans qq minutes.

--
Regards
Christophe Mathon
while(!(succeed=try()));



Christophe Mathon
Le #16389141
C'est parceque tu a fai un copier coller, mais dans la news, la ligne a ete
coupé end deux.

Selection.Insert Shift:=xlDown,
CopyOrigin:=xlFormatFromLeftOrAbove



represente une seul ligne.


--
Regards
Christophe Mathon
while(!(succeed=try()));

"Pierre D" news:
Re'bonjour Christophe !

Même erreur de syntaxe à l'exécution de la macro... je suis incapable
de corriger moi même !

Merci pour ton aide.

Pierre


On 22 juil, 15:21, "Christophe Mathon"
Re,

Tous dans une macro:) :

Sub InsertSpace()
i = 9

BadgeIn = "8"
BadgeOut = ""

Do While i < 1000
If (Cells(i - 1, 4).Value = "") Then
i = i + 1
ElseIf (Cells(i, 4).Value <> Cells(i - 1, 4)) Then
Rows(i & ":" & i).Select
Selection.Insert Shift:=xlDown,
CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlDown,
CopyOrigin:=xlFormatFromLeftOrAbove

BadgeOut = i - 1
Range("G" & i).Select
ActiveCell.Formula = "=F" & BadgeOut & "-" & "E" & BadgeIn
i = i + 2

BadgeIn = BadgeOut + 3
End If
i = i + 1
Loop
End Sub

--
Regards
Christophe Mathon
while(!(succeed=try()));



pier
Le #16389281
Exact Christophe !... j'avais recopié la ligne coupé en 2....
Maintenant ca marche bien. MERCI.

Je voudrais ajouter quelque chose :
Est ce que je peux calculer automatiquement (sous la cellule qui fait
le cumul badge Out - Badge In avec ta macro) le total cumulé de
l'activité X ? (comme sur la feuille "formaté" de mon classeur içi :
http://pier.free.fr/Insert.XLS ou
insertformt.pdf ici : http://pier.free.fr/insertformt.pdf

Cordialement.

Pierre

*
On 22 juil, 16:38, "Christophe Mathon"
C'est parceque tu a fai un copier coller, mais dans la news, la ligne a e te
coupé end deux.

Selection.Insert Shift:=xlDown,

> CopyOrigin:=xlFormatFromLeftOrAbove

represente une seul ligne.

--
Regards
Christophe Mathon
while(!(succeed=try()));



Christophe Mathon
Le #16402461
Re

Essaye tou ca ;) :

<><><><><><><><><><>
<><><><><><><><><><>
Function CalcActivityX(BadgeIn, BadgeOut)
i = Abs(BadgeIn)
u = Abs(BadgeOut)
CalcActivityX = "="

Do While i < u
'MsgBox Cells(i, 9).Value
If Cells(i, 9).Value = "Activité X" Then
CalcActivityX = CalcActivityX & "G" & i & "+"
End If
i = i + 1
Loop

If (Right(CalcActivityX, 1) = "+") Then
CalcActivityX = Left(CalcActivityX, Len(CalcActivityX) - 1)
End If
End Function

Sub InsertSpace()
i = 9

BadgeIn = "8"
BadgeOut = ""

Do While i < 1000
If (Cells(i - 1, 4).Value = "") Then
i = i + 1
ElseIf (Cells(i, 4).Value <> Cells(i - 1, 4)) Then
Rows(i & ":" & i).Select
Selection.Insert Shift:=xlDown,
CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlDown,
CopyOrigin:=xlFormatFromLeftOrAbove

BadgeOut = i - 1
Range("G" & i).Select
ActiveCell.Formula = "=F" & BadgeOut & "-" & "E" & BadgeIn

Range("G" & i + 1).Select
ActiveCell.Formula = CalcActivityX(BadgeIn, BadgeOut)
i = i + 2

BadgeIn = BadgeOut + 3
End If
i = i + 1
Loop
End Sub.

<><><><><><><><><><>
<><><><><><><><><><>


--
Regards
Christophe Mathon
while(!(succeed=try()));


"pier" news:
Exact Christophe !... j'avais recopié la ligne coupé en 2....
Maintenant ca marche bien. MERCI.

Je voudrais ajouter quelque chose :
Est ce que je peux calculer automatiquement (sous la cellule qui fait
le cumul badge Out - Badge In avec ta macro) le total cumulé de
l'activité X ? (comme sur la feuille "formaté" de mon classeur içi :
http://pier.free.fr/Insert.XLS ou
insertformt.pdf ici : http://pier.free.fr/insertformt.pdf

Cordialement.

Pierre

*
On 22 juil, 16:38, "Christophe Mathon"
C'est parceque tu a fai un copier coller, mais dans la news, la ligne a
ete
coupé end deux.

Selection.Insert Shift:=xlDown,

> CopyOrigin:=xlFormatFromLeftOrAbove

represente une seul ligne.

--
Regards
Christophe Mathon
while(!(succeed=try()));



Publicité
Poster une réponse
Anonyme