Compter une durée total par site + mois + durée en VBA
18 réponses
Apitos
Bonsoir =E0 tous,
Afin de calculer une dur=E9e totale par trois conditions :=20
- Nom du site=20
- Mois choisi en H2 depuis une liste de validation
- Cause choisi en I2 depuis une liste de validation
J'ai utilis=E9 le code joint dans l'exemple suivant :
http://cjoint.com/?BIhrxjOxc2c
J'ai r=E9ussi =E0 extraire les noms des sites respectant le mois choisi, et=
mettre la d=E9f=E9rence de temps dans la colonne G pour les dur=E9es s'=E9=
tendant sur des dates de deux mois d=E9f=E9rents.
Le reste j=92attends votre aide pour le r=E9aliser.
Question déjà posée il y a deux jours. Si tu voulais une macro, il fallait le dire d'entrée. Daniel
Bonsoir à tous,
Afin de calculer une durée totale par trois conditions :
- Nom du site
- Mois choisi en H2 depuis une liste de validation
- Cause choisi en I2 depuis une liste de validation
J'ai utilisé le code joint dans l'exemple suivant :
http://cjoint.com/?BIhrxjOxc2c
J'ai réussi à extraire les noms des sites respectant le mois choisi, et mettre la déférence de temps dans la colonne G pour les durées s'étendant sur des dates de deux mois déférents.
Le reste j’attends votre aide pour le réaliser.
Merci d'avance.
Question déjà posée il y a deux jours. Si tu voulais une macro, il
fallait le dire d'entrée.
Daniel
Bonsoir à tous,
Afin de calculer une durée totale par trois conditions :
- Nom du site
- Mois choisi en H2 depuis une liste de validation
- Cause choisi en I2 depuis une liste de validation
J'ai utilisé le code joint dans l'exemple suivant :
http://cjoint.com/?BIhrxjOxc2c
J'ai réussi à extraire les noms des sites respectant le mois choisi, et
mettre la déférence de temps dans la colonne G pour les durées s'étendant sur
des dates de deux mois déférents.
Question déjà posée il y a deux jours. Si tu voulais une macro, il fallait le dire d'entrée. Daniel
Bonsoir à tous,
Afin de calculer une durée totale par trois conditions :
- Nom du site
- Mois choisi en H2 depuis une liste de validation
- Cause choisi en I2 depuis une liste de validation
J'ai utilisé le code joint dans l'exemple suivant :
http://cjoint.com/?BIhrxjOxc2c
J'ai réussi à extraire les noms des sites respectant le mois choisi, et mettre la déférence de temps dans la colonne G pour les durées s'étendant sur des dates de deux mois déférents.
Le reste j’attends votre aide pour le réaliser.
Merci d'avance.
Apitos
Bonsoir Daniel,
Question déjà posée il y a deux jours. Si tu voulais une macro, il fallait le dire d'entrée.
Comme je ne voulais pas perturber l'autre fil qui traite une solution avec formules, et dont lequel j'ai écrit :
Je suis en train de bidouiller pour adapter un code VBA. Une fois avoir la tête sèche, je poserais le code pour que quelqu'un me donne > un coup de main ;)
Jai ouvert ce fil qui sera consacré juste pour trouver une solution VB A.
Merci.
Bonsoir Daniel,
Question déjà posée il y a deux jours. Si tu voulais une macro, il fallait le dire d'entrée.
Comme je ne voulais pas perturber l'autre fil qui traite une solution avec formules, et dont lequel j'ai écrit :
Je suis en train de bidouiller pour adapter un code VBA.
Une fois avoir la tête sèche, je poserais le code pour que quelqu'un me donne > un coup de main ;)
Jai ouvert ce fil qui sera consacré juste pour trouver une solution VB A.
Question déjà posée il y a deux jours. Si tu voulais une macro, il fallait le dire d'entrée.
Comme je ne voulais pas perturber l'autre fil qui traite une solution avec formules, et dont lequel j'ai écrit :
Je suis en train de bidouiller pour adapter un code VBA. Une fois avoir la tête sèche, je poserais le code pour que quelqu'un me donne > un coup de main ;)
Jai ouvert ce fil qui sera consacré juste pour trouver une solution VB A.
Bonjour, Je me demande pourquoi tu veux une solution VBA alors que tu as une formule qui fait l'affaire ? Je me demande si on n'est pas en train de faire tes devoirs ? Sub test() Dim DerLigne As Long [L2].FormulaArray = "=SUM((MONTH($B$2:$B$94)<=$H$2)*(MONTH($C$2:$C$94)>=$H$2)*($E$2:$E$94Êuse)" & _ "*($A$2:$A$94=K2)*((IF($C$2:$C$94<ÚTE(2012,$H$2+1,0),$C$2:$C$94,DATE(2012,$H$2+1,0)))" & _ "-(IF($B$2:$B$94>DATE(2012,$H$2,1),$B$2:$B$94,DATE(2012,$H$2,1)))))" DerLigne = Cells(Rows.Count, 11).End(xlUp).Row [L2].AutoFill Range([M2], Cells(DerLigne, 12)) End Sub Daniel
Bonjour,
Quelque chose d'incomprehensible ?
Merci.
Bonjour,
Je me demande pourquoi tu veux une solution VBA alors que tu as une
formule qui fait l'affaire ? Je me demande si on n'est pas en train de
faire tes devoirs ?
Sub test()
Dim DerLigne As Long
[L2].FormulaArray =
"=SUM((MONTH($B$2:$B$94)<=$H$2)*(MONTH($C$2:$C$94)>=$H$2)*($E$2:$E$94Êuse)"
& _
"*($A$2:$A$94=K2)*((IF($C$2:$C$94<ÚTE(2012,$H$2+1,0),$C$2:$C$94,DATE(2012,$H$2+1,0)))"
& _
"-(IF($B$2:$B$94>DATE(2012,$H$2,1),$B$2:$B$94,DATE(2012,$H$2,1)))))"
DerLigne = Cells(Rows.Count, 11).End(xlUp).Row
[L2].AutoFill Range([M2], Cells(DerLigne, 12))
End Sub
Daniel
Bonjour, Je me demande pourquoi tu veux une solution VBA alors que tu as une formule qui fait l'affaire ? Je me demande si on n'est pas en train de faire tes devoirs ? Sub test() Dim DerLigne As Long [L2].FormulaArray = "=SUM((MONTH($B$2:$B$94)<=$H$2)*(MONTH($C$2:$C$94)>=$H$2)*($E$2:$E$94Êuse)" & _ "*($A$2:$A$94=K2)*((IF($C$2:$C$94<ÚTE(2012,$H$2+1,0),$C$2:$C$94,DATE(2012,$H$2+1,0)))" & _ "-(IF($B$2:$B$94>DATE(2012,$H$2,1),$B$2:$B$94,DATE(2012,$H$2,1)))))" DerLigne = Cells(Rows.Count, 11).End(xlUp).Row [L2].AutoFill Range([M2], Cells(DerLigne, 12)) End Sub Daniel
Bonjour,
Quelque chose d'incomprehensible ?
Merci.
Apitos
Bonjour Daniel,
Je me demande pourquoi tu veux une solution VBA alors que tu as une formu le qui fait l'affaire ?
Comme je suis VBAiste plus que formuliste, j'ai tendance aux solutions par VBA ;)
Mais on a toujours besoin des formules de temps en temps :)
Je me demande si on n'est pas en train de faire tes devoirs ?
A vrai dire, je me trouve dans l'obligation de rendre compte à mon direct eur pour tous les sites avec leurs durées totales des arrêts dans le mo is d'août.
Dans le code ci-dessous (Comme dans le cas de la solution par formule), il manque le remplissage de la colonne K par la liste des sites concernés pa r le calcul des durées totales !
Merci d'avance.
Bonjour Daniel,
Je me demande pourquoi tu veux une solution VBA alors que tu as une formu le qui fait l'affaire ?
Comme je suis VBAiste plus que formuliste, j'ai tendance aux solutions par VBA ;)
Mais on a toujours besoin des formules de temps en temps :)
Je me demande si on n'est pas en train de faire tes devoirs ?
A vrai dire, je me trouve dans l'obligation de rendre compte à mon direct eur pour tous les sites avec leurs durées totales des arrêts dans le mo is d'août.
Dans le code ci-dessous (Comme dans le cas de la solution par formule), il manque le remplissage de la colonne K par la liste des sites concernés pa r le calcul des durées totales !
Je me demande pourquoi tu veux une solution VBA alors que tu as une formu le qui fait l'affaire ?
Comme je suis VBAiste plus que formuliste, j'ai tendance aux solutions par VBA ;)
Mais on a toujours besoin des formules de temps en temps :)
Je me demande si on n'est pas en train de faire tes devoirs ?
A vrai dire, je me trouve dans l'obligation de rendre compte à mon direct eur pour tous les sites avec leurs durées totales des arrêts dans le mo is d'août.
Dans le code ci-dessous (Comme dans le cas de la solution par formule), il manque le remplissage de la colonne K par la liste des sites concernés pa r le calcul des durées totales !
il manque le remplissage de la colonne K par la liste des sites concernés par le calcul des durées totales !
??????? Il me semble qu'une telle instruction est déjà présente dans ton classeur copie // Sub CalculeDureeTotal()
Range("A1:E94").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _ "K1"), Unique:=True End Sub //
-- Salutations JJ
"Apitos" a écrit dans le message de news:
Bonjour Daniel,
Je me demande pourquoi tu veux une solution VBA alors que tu as une formule qui fait l'affaire ?
Comme je suis VBAiste plus que formuliste, j'ai tendance aux solutions par VBA ;)
Mais on a toujours besoin des formules de temps en temps :)
Je me demande si on n'est pas en train de faire tes devoirs ?
A vrai dire, je me trouve dans l'obligation de rendre compte à mon directeur pour tous les sites avec leurs durées totales des arrêts dans le mois d'août.
Dans le code ci-dessous (Comme dans le cas de la solution par formule), il manque le remplissage de la colonne K par la liste des sites concernés par le calcul des durées totales !
Merci d'avance.
Bonjour,
il manque le remplissage de la colonne K par la liste des sites concernés par le calcul des durées totales !
???????
Il me semble qu'une telle instruction est déjà présente dans ton classeur
copie
//
Sub CalculeDureeTotal()
Range("A1:E94").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _
"K1"), Unique:=True
End Sub
//
--
Salutations
JJ
"Apitos" <apitos@gmail.com> a écrit dans le message de news:
1b8ffee7-725c-4672-8830-7ec170e7d3da@googlegroups.com...
Bonjour Daniel,
Je me demande pourquoi tu veux une solution VBA alors que tu as une formule qui fait l'affaire ?
Comme je suis VBAiste plus que formuliste, j'ai tendance aux solutions par VBA ;)
Mais on a toujours besoin des formules de temps en temps :)
Je me demande si on n'est pas en train de faire tes devoirs ?
A vrai dire, je me trouve dans l'obligation de rendre compte à mon directeur pour tous les sites avec leurs
durées totales des arrêts dans le mois d'août.
Dans le code ci-dessous (Comme dans le cas de la solution par formule), il manque le remplissage de la colonne
K par la liste des sites concernés par le calcul des durées totales !
il manque le remplissage de la colonne K par la liste des sites concernés par le calcul des durées totales !
??????? Il me semble qu'une telle instruction est déjà présente dans ton classeur copie // Sub CalculeDureeTotal()
Range("A1:E94").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _ "K1"), Unique:=True End Sub //
-- Salutations JJ
"Apitos" a écrit dans le message de news:
Bonjour Daniel,
Je me demande pourquoi tu veux une solution VBA alors que tu as une formule qui fait l'affaire ?
Comme je suis VBAiste plus que formuliste, j'ai tendance aux solutions par VBA ;)
Mais on a toujours besoin des formules de temps en temps :)
Je me demande si on n'est pas en train de faire tes devoirs ?
A vrai dire, je me trouve dans l'obligation de rendre compte à mon directeur pour tous les sites avec leurs durées totales des arrêts dans le mois d'août.
Dans le code ci-dessous (Comme dans le cas de la solution par formule), il manque le remplissage de la colonne K par la liste des sites concernés par le calcul des durées totales !
Merci d'avance.
Apitos
Bonsoir Daniel, Jacky
Il me semble qu'une telle instruction est déjà présente dans ton cl asseur
copie
le code copie tous les noms des sites sans doublons.
Mais, il se trouve bien des noms qui n'ont rien à voir avec le mois d'Ao ût.
Bonsoir Daniel, Jacky
Il me semble qu'une telle instruction est déjà présente dans ton cl asseur
copie
le code copie tous les noms des sites sans doublons.
Mais, il se trouve bien des noms qui n'ont rien à voir avec le mois d'Ao ût.
Il me semble qu'une telle instruction est déjà présente dans ton cl asseur
copie
le code copie tous les noms des sites sans doublons.
Mais, il se trouve bien des noms qui n'ont rien à voir avec le mois d'Ao ût.
Jacquouille
Bonsoir
Puis-je MIMI-C ?
Je vois de nombreuses questions, avec autant de bonnes réponses. j'ai l'impression que tout le monde tourne en rond, faute de précisions. Si on reprenait le cahier de charges dès le départ, avec les questions précises et sans rajoute ultérieure? Ce serait beaucoup plus facile pour les répondeurs. Tu as une banque de données, soit un tableau de x colonnes et y lignes. Tu veux le total des arrêts pour une machine bien précise, dans une fourchette de temps (en Août, par ex)
Ta demande du 5/9 --> Comment puis-je compter une durée total par ces trois critères (Site + Mois + Cause) dans le fichier joint en exemple ?
S'il n'y a que cela, inutile de se mettre la tête au mur..... Tu nommes tes colonnes avec leur en-tête, tu ajoutes une pincée de Sommeprod. Pas besoin de Visual Basilic pour cela. Tu es en train de m'épuiser Jacky, Daniel et Denis. Ils n'auront pas la forme pour commencer la semaine demain matin. J'ai besoin d'eux pour assumer la garde... -)) Bien amicalmement, Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Apitos" a écrit dans le message de groupe de discussion :
Bonsoir Daniel, Jacky
Il me semble qu'une telle instruction est déjà présente dans ton classeur
copie
le code copie tous les noms des sites sans doublons.
Mais, il se trouve bien des noms qui n'ont rien à voir avec le mois d'Août.
Bonsoir
Puis-je MIMI-C ?
Je vois de nombreuses questions, avec autant de bonnes réponses.
j'ai l'impression que tout le monde tourne en rond, faute de précisions.
Si on reprenait le cahier de charges dès le départ, avec les questions
précises et sans rajoute ultérieure? Ce serait beaucoup plus facile pour
les répondeurs.
Tu as une banque de données, soit un tableau de x colonnes et y lignes.
Tu veux le total des arrêts pour une machine bien précise, dans une
fourchette de temps (en Août, par ex)
Ta demande du 5/9 --> Comment puis-je compter une durée total par ces
trois critères (Site + Mois + Cause) dans le fichier joint en exemple ?
S'il n'y a que cela, inutile de se mettre la tête au mur.....
Tu nommes tes colonnes avec leur en-tête, tu ajoutes une pincée de
Sommeprod. Pas besoin de Visual Basilic pour cela.
Tu es en train de m'épuiser Jacky, Daniel et Denis. Ils n'auront pas la
forme pour commencer la semaine demain matin. J'ai besoin d'eux pour
assumer la garde... -))
Bien amicalmement,
Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Apitos" a écrit dans le message de groupe de discussion :
af815e7e-0925-410e-b807-fb2746353bfd@googlegroups.com...
Bonsoir Daniel, Jacky
Il me semble qu'une telle instruction est déjà présente dans ton classeur
copie
le code copie tous les noms des sites sans doublons.
Mais, il se trouve bien des noms qui n'ont rien à voir avec le mois d'Août.
Je vois de nombreuses questions, avec autant de bonnes réponses. j'ai l'impression que tout le monde tourne en rond, faute de précisions. Si on reprenait le cahier de charges dès le départ, avec les questions précises et sans rajoute ultérieure? Ce serait beaucoup plus facile pour les répondeurs. Tu as une banque de données, soit un tableau de x colonnes et y lignes. Tu veux le total des arrêts pour une machine bien précise, dans une fourchette de temps (en Août, par ex)
Ta demande du 5/9 --> Comment puis-je compter une durée total par ces trois critères (Site + Mois + Cause) dans le fichier joint en exemple ?
S'il n'y a que cela, inutile de se mettre la tête au mur..... Tu nommes tes colonnes avec leur en-tête, tu ajoutes une pincée de Sommeprod. Pas besoin de Visual Basilic pour cela. Tu es en train de m'épuiser Jacky, Daniel et Denis. Ils n'auront pas la forme pour commencer la semaine demain matin. J'ai besoin d'eux pour assumer la garde... -)) Bien amicalmement, Jacquouille
" Le vin est au repas ce que le parfum est à la femme."
"Apitos" a écrit dans le message de groupe de discussion :
Bonsoir Daniel, Jacky
Il me semble qu'une telle instruction est déjà présente dans ton classeur
copie
le code copie tous les noms des sites sans doublons.
Mais, il se trouve bien des noms qui n'ont rien à voir avec le mois d'Août.
DanielCo
Essaie : Sub test() Dim Dico As Object, C As Range, Mois As Integer, Plage As Range, Plage1 As Range ligne = 1 Set Dico = CreateObject("Scripting.Dictionary") With Sheets("Feuil1") Mois = Application.Match(.[G2], .[P:P], 0) For Each C In .Range(.[A2], .Cells(.Rows.Count, 1).End(xlUp)) If C.Offset(, 2) >= DateSerial(2012, Mois, 1) Then .Cells(C.Row, 14) = Application.Max(DateSerial(2012, Mois, 1), C.Offset(, 1)) End If If C.Offset(, 2) <= DateSerial(2012, Mois + 1, 0) Then .Cells(C.Row, 15) = Application.Min(DateSerial(2012, Mois + 1, 0), C.Offset(, 2)) End If If Not Dico.exists(C.Value) Then Dico.Add C.Value, C.Value End If Next C Set Plage = .Range(.[A1], Cells(.Rows.Count, 1).End(xlUp)).Resize(, 15) For Each Item In Dico.items .AutoFilterMode = False Set Plage1 = Plage Plage1.AutoFilter 1, Item Plage1.AutoFilter 5, .[H2] Plage1.AutoFilter 14, ">=" & Format(DateSerial(2012, Mois, 1), "mm/dd/yyyy") Plage1.AutoFilter 15, "<=" & Format(DateSerial(2012, Mois + 1, 0), "mm/dd/yyyy") If Application.Subtotal(103, .[A:A]) > 1 Then ligne = ligne + 1 .Cells(ligne, 11) = Item .Cells(ligne, 12) = Application.Subtotal(109, .[C:C]) - Application.Subtotal(109, .[B:B]) End If Next Item .AutoFilterMode = False .[N:O].ClearContents End With End Sub
J'utilise les colonnes N et O, la liste des mmois est en colonne P. Voici le fichier : http://cjoint.com/?BIkl56w0ORY Daniel
Bonsoir Daniel, Jacky
Il me semble qu'une telle instruction est déjà présente dans ton classeur
copie
le code copie tous les noms des sites sans doublons.
Mais, il se trouve bien des noms qui n'ont rien à voir avec le mois d'Août.
Essaie :
Sub test()
Dim Dico As Object, C As Range, Mois As Integer, Plage As Range,
Plage1 As Range
ligne = 1
Set Dico = CreateObject("Scripting.Dictionary")
With Sheets("Feuil1")
Mois = Application.Match(.[G2], .[P:P], 0)
For Each C In .Range(.[A2], .Cells(.Rows.Count, 1).End(xlUp))
If C.Offset(, 2) >= DateSerial(2012, Mois, 1) Then
.Cells(C.Row, 14) = Application.Max(DateSerial(2012,
Mois, 1), C.Offset(, 1))
End If
If C.Offset(, 2) <= DateSerial(2012, Mois + 1, 0) Then
.Cells(C.Row, 15) = Application.Min(DateSerial(2012,
Mois + 1, 0), C.Offset(, 2))
End If
If Not Dico.exists(C.Value) Then
Dico.Add C.Value, C.Value
End If
Next C
Set Plage = .Range(.[A1], Cells(.Rows.Count,
1).End(xlUp)).Resize(, 15)
For Each Item In Dico.items
.AutoFilterMode = False
Set Plage1 = Plage
Plage1.AutoFilter 1, Item
Plage1.AutoFilter 5, .[H2]
Plage1.AutoFilter 14, ">=" & Format(DateSerial(2012, Mois,
1), "mm/dd/yyyy")
Plage1.AutoFilter 15, "<=" & Format(DateSerial(2012, Mois +
1, 0), "mm/dd/yyyy")
If Application.Subtotal(103, .[A:A]) > 1 Then
ligne = ligne + 1
.Cells(ligne, 11) = Item
.Cells(ligne, 12) = Application.Subtotal(109, .[C:C]) -
Application.Subtotal(109, .[B:B])
End If
Next Item
.AutoFilterMode = False
.[N:O].ClearContents
End With
End Sub
J'utilise les colonnes N et O, la liste des mmois est en colonne P.
Voici le fichier :
http://cjoint.com/?BIkl56w0ORY
Daniel
Bonsoir Daniel, Jacky
Il me semble qu'une telle instruction est déjà présente dans ton classeur
copie
le code copie tous les noms des sites sans doublons.
Mais, il se trouve bien des noms qui n'ont rien à voir avec le mois d'Août.
Essaie : Sub test() Dim Dico As Object, C As Range, Mois As Integer, Plage As Range, Plage1 As Range ligne = 1 Set Dico = CreateObject("Scripting.Dictionary") With Sheets("Feuil1") Mois = Application.Match(.[G2], .[P:P], 0) For Each C In .Range(.[A2], .Cells(.Rows.Count, 1).End(xlUp)) If C.Offset(, 2) >= DateSerial(2012, Mois, 1) Then .Cells(C.Row, 14) = Application.Max(DateSerial(2012, Mois, 1), C.Offset(, 1)) End If If C.Offset(, 2) <= DateSerial(2012, Mois + 1, 0) Then .Cells(C.Row, 15) = Application.Min(DateSerial(2012, Mois + 1, 0), C.Offset(, 2)) End If If Not Dico.exists(C.Value) Then Dico.Add C.Value, C.Value End If Next C Set Plage = .Range(.[A1], Cells(.Rows.Count, 1).End(xlUp)).Resize(, 15) For Each Item In Dico.items .AutoFilterMode = False Set Plage1 = Plage Plage1.AutoFilter 1, Item Plage1.AutoFilter 5, .[H2] Plage1.AutoFilter 14, ">=" & Format(DateSerial(2012, Mois, 1), "mm/dd/yyyy") Plage1.AutoFilter 15, "<=" & Format(DateSerial(2012, Mois + 1, 0), "mm/dd/yyyy") If Application.Subtotal(103, .[A:A]) > 1 Then ligne = ligne + 1 .Cells(ligne, 11) = Item .Cells(ligne, 12) = Application.Subtotal(109, .[C:C]) - Application.Subtotal(109, .[B:B]) End If Next Item .AutoFilterMode = False .[N:O].ClearContents End With End Sub
J'utilise les colonnes N et O, la liste des mmois est en colonne P. Voici le fichier : http://cjoint.com/?BIkl56w0ORY Daniel
Bonsoir Daniel, Jacky
Il me semble qu'une telle instruction est déjà présente dans ton classeur
copie
le code copie tous les noms des sites sans doublons.
Mais, il se trouve bien des noms qui n'ont rien à voir avec le mois d'Août.