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

Compter une durée total par site + mois + durée en VBA

18 réponses
Avatar
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.

Merci d'avance.

10 réponses

1 2
Avatar
DanielCo
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.
Avatar
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 ;)



J’ai ouvert ce fil qui sera consacré juste pour trouver une solution VB A.

Merci.
Avatar
Apitos
Bonjour,

Quelque chose d'incomprehensible ?

Merci.
Avatar
DanielCo
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.
Avatar
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.
Avatar
DanielCo
A ajouter devant la macro :

Range([A1], Cells(Rows.Count, 1).End(xlUp)).AdvancedFilter
Action:=xlFilterCopy, _
CopyToRange:=Range("K1"), Unique:=True

Daniel
Avatar
Jacky
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" 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.
Avatar
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.
Avatar
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.
Avatar
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.
1 2