Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Insertion automatique de lignes...

9 réponses
Avatar
pier
Bonjour,

Je r=E9cup=E8re 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=E9 de chaque
agent.
J'aimerai que 2 lignes vides soient ins=E9r=E9es automatiquement apr=E8s
chaque jour en sachant que le nombre de lignes par jour peut =EAtre
diff=E9rent d'un mois sur l'autre.

Puis dans la premi=E8re ligne ins=E9r=E9e (cellule G28, G50,G63), calculer
automatiquement le temps de pr=E9sence total par jour (=3D 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

9 réponses

Avatar
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()));

"pier" wrote in message
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
Avatar
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)).ClearContents
ActiveCell.Offset(2, -5).Select
Next cpt
ActiveCell.Range("a1:a2").EntireRow.Delete
End Sub

Camille
"pier" a écrit dans le message de 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
Avatar
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()));

"Christophe Mathon" wrote in message
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" wrote in message
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



Avatar
Pierre D
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" wrote:
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


Avatar
Pierre D
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" wrote:
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()));



Avatar
Pierre D
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" wrote:
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()));



Avatar
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()));

"Pierre D" wrote in message
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" wrote:
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()));



Avatar
pier
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" wrote:
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()));



Avatar
Christophe Mathon
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" wrote in message
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" wrote:
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()));