Microsoft 365 problème garder les doublons ayant les valeurs les plus élevées

gouedz

XLDnaute Nouveau
Bonjour ,

je suis en train actuellement de faire un fichier qui gère les arrêts de chaîne sur une ligne de peinture automobile .j ai extrais une feuille d arrets pour faire des calculs dessus .
le problème est qu il y a quelque fois plusieurs arrêts au même moment (colonne B) et certains sont acquittés avant d autres ( colonne G) et je voudrais juste garder les arrêts les plus longs .
EX l actionneur A arrete la ligne à 12h et est acquitté à 12h15
B arrete la ligne à 12h et est acquitté à 12h30 donc je voudrais juste garder le temps de B 30 min ( temps d arrêt réel ) car à l heure actuelle les deux temps s ajoutent ( 30 + 15 )(colonne N) dans mon fichier et le temps total ( cellule N12) est donc faux car trop important.

Merci pour votre aide

Cordialement
 

Pièces jointes

  • fichier arret de ligne2.xlsm
    149.4 KB · Affichages: 20

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Voici une tentative par power query mais qui comporte des erreurs (voir feuille Résultats) car l'alternance des 1 et 0 dans Etat de la feuille Trier n'est pas toujours exacte.

Cordialement
 

Pièces jointes

  • fichier arret de ligne2.xlsm
    176.7 KB · Affichages: 2

job75

XLDnaute Barbatruc
Bonjour gouedz, Roblochon,

Dans le fichier joint je procède en 2 étapes :

- un tri sur les colonnes A et B en feuille "Tri" (faut-il aussi trier sur la colonne C ?)

- suppression des doublons de 1 et 0 dans la feuille "Résultat"

La macro dans ThisWorkbook :
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Tri" Then
    Application.ScreenUpdating = False
    Sheets("BDD").[A:L].Copy Sh.[A1]
    Sh.[A:L].Sort Sh.[A1], xlAscending, Sh.[B1], , xlAscending, Header:=xlYes 'tri sur 2 colonnes
ElseIf Sh.Name = "Résultat" Then
    Dim F As Worksheet, col%
    Set F = Sheets("Tri")
    Workbook_SheetActivate F 'lance la macro
    Sh.Cells.Delete 'RAZ
    F.[M2] = "=G2<>OFFSET(G2,-1,)" 'critère pour supprimer les doublons
    F.[A:L].AdvancedFilter xlFilterCopy, F.[M1:M2], Sh.[A1] 'filtre avancé
    F.[M2] = ""
    For col = 1 To 12: Sh.Columns(col).ColumnWidth = F.Columns(col).ColumnWidth: Next 'largeurs des colonnes
End If
End Sub
Elle se déclenche quand on active une feuille.

A+
 

Pièces jointes

  • fichier arret de ligne(1).xlsm
    119.3 KB · Affichages: 4

gouedz

XLDnaute Nouveau
Bonjour et merci roblochon ,

mais je ne comprends pas votre méthode , je ne veux pas supprimer les doublons mais garder ceux qui me génèrent le plus de temps d arrêt . il s'avère que certaine arrivent en même temps que d autres et je ne veux garder que les plus élevés .

Cordialement
 

gouedz

XLDnaute Nouveau
Les plus élevés ??? Ma macro garde les plus anciens...
ah OK voilà pourquoi ça ne marche pas .
Vu que je comptabilise les temps d arrêts d'un convoyeur de peinture et vu que plusieurs actionneurs arrêtent ce convoyeur pendant des temps différents mais a la même heures en cas de panne je veux garder que ceux qui me génèrent le plus de temps d arrêt les autres ( petits temps d arrêts ) seront masqués par les grands
si j ai A et B qui m arrentent le convoyeur à 12 h et que l arrêt A dure 15 minutes et B 30 minutes je veux garder que B soit 30 minutes .
à l heure actuelle dans mon fichier je n ai pas 30 minutes d arrêt mais 45 car il me les ajoute .

Cordialement
 

job75

XLDnaute Barbatruc
Bien compris, alors il suffit de modifier la formule du critère, fichier (2) :
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Tri" Then
    Application.ScreenUpdating = False
    Sheets("BDD").[A:L].Copy Sh.[A1]
    Sh.[A:L].Sort Sh.[A1], xlAscending, Sh.[B1], , xlAscending, Header:=xlYes 'tri sur 2 colonnes
ElseIf Sh.Name = "Résultat" Then
    Dim F As Worksheet, col%
    Set F = Sheets("Tri")
    Workbook_SheetActivate F 'lance la macro
    Sh.Cells.Delete 'RAZ
    F.[M2] = "=(G2=1)*(OFFSET(G2,-1,)<>1)+(G2=0)*(""""&OFFSET(G2,1,)<>""0"")" 'critère pour supprimer les doublons
    F.[A:L].AdvancedFilter xlFilterCopy, F.[M1:M2], Sh.[A1] 'filtre avancé
    F.[M2] = ""
    For col = 1 To 12: Sh.Columns(col).ColumnWidth = F.Columns(col).ColumnWidth: Next 'largeurs des colonnes
End If
End Sub
 

Pièces jointes

  • fichier arret de ligne(2).xlsm
    119.5 KB · Affichages: 6

gouedz

XLDnaute Nouveau
Bonjour job75 ,

votre fichier à l air de fonctionner mais serait il possible de ne pas filtrer les colonnes KLMN car sur li fichier d origine que j ai posté il y avait mes calculs de somme de temps d arret en fonction des intitulés et maintenant ils n apparaissent plus alors que c est cela que je cherche .

Merci

Cordialement
 

Pièces jointes

  • fichier arret de ligne(2).xlsm
    310.7 KB · Affichages: 3
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour gouedz,
serait il possible de ne pas filtrer les colonnes KLMN
Cela n'a pas de sens.

J'avais supprimé les calculs des temps car ils me semblaient inutiles.

On peut cependant conserver le calcul des temps en colonne H, voyez ce fichier (3) :
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Tri" Then
    Application.ScreenUpdating = False
    Sheets("BDD").[A:M].Copy Sh.[A1]
    Sh.[A:M].Sort Sh.[A1], xlAscending, Sh.[B1], , xlAscending, Header:=xlYes 'tri sur 2 colonnes
    Sh.Range("H2:H" & Sh.Rows.Count).ClearContents 'supprime les formules des temps
ElseIf Sh.Name = "Résultat" Then
    Dim F As Worksheet, col%
    Set F = Sheets("Tri")
    Workbook_SheetActivate F 'lance la macro
    Sh.Cells.Delete 'RAZ
    F.[N2] = "=(G2=1)*(OFFSET(G2,-1,)<>1)+(G2=0)*(""""&OFFSET(G2,1,)<>""0"")" 'critère pour supprimer les doublons
    F.[A:M].AdvancedFilter xlFilterCopy, F.[N1:N2], Sh.[A1] 'filtre avancé
    F.[N2] = ""
    Intersect(Sh.Range("H2:H" & Sh.Rows.Count), Sh.UsedRange.EntireRow) = "=IF(""""&G2=""0"",A2+B2-A1-B1,"""")" 'formules des temps
    For col = 1 To 12: Sh.Columns(col).ColumnWidth = F.Columns(col).ColumnWidth: Next 'largeurs des colonnes
End If
End Sub
A+
 

Pièces jointes

  • fichier arret de ligne(3).xlsm
    152.4 KB · Affichages: 4

gouedz

XLDnaute Nouveau
Bonjour gouedz,

Cela n'a pas de sens.

J'avais supprimé les calculs des temps car ils me semblaient inutiles.

On peut cependant conserver le calcul des temps en colonne H, voyez ce fichier (3) :
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Tri" Then
    Application.ScreenUpdating = False
    Sheets("BDD").[A:M].Copy Sh.[A1]
    Sh.[A:M].Sort Sh.[A1], xlAscending, Sh.[B1], , xlAscending, Header:=xlYes 'tri sur 2 colonnes
    Sh.Range("H2:H" & Sh.Rows.Count).ClearContents 'supprime les formules des temps
ElseIf Sh.Name = "Résultat" Then
    Dim F As Worksheet, col%
    Set F = Sheets("Tri")
    Workbook_SheetActivate F 'lance la macro
    Sh.Cells.Delete 'RAZ
    F.[N2] = "=(G2=1)*(OFFSET(G2,-1,)<>1)+(G2=0)*(""""&OFFSET(G2,1,)<>""0"")" 'critère pour supprimer les doublons
    F.[A:M].AdvancedFilter xlFilterCopy, F.[N1:N2], Sh.[A1] 'filtre avancé
    F.[N2] = ""
    Intersect(Sh.Range("H2:H" & Sh.Rows.Count), Sh.UsedRange.EntireRow) = "=IF(""""&G2=""0"",A2+B2-A1-B1,"""")" 'formules des temps
    For col = 1 To 12: Sh.Columns(col).ColumnWidth = F.Columns(col).ColumnWidth: Next 'largeurs des colonnes
End If
End Sub
A+
Merci beaucoup ca marche mais quand je change les valeurs de la feuille BDD les autres feuilles ne changent pas . Pourquoi ?
 

gouedz

XLDnaute Nouveau
quand j insère votre solution dans mon fichier complet ca ne fonctionne pas .
j ai créé les 3 onglets comme dans le votre mais quand je change les valeur de l onglet BDD rien ne change dans les 2 autres onglets .
je ne peux pas vous joindre mon fichier complet car trop volumineux

Merci

Cordialement
 

gouedz

XLDnaute Nouveau
En faite chaque lignes de l onglet BDD que j ai inséré dans mon fichier copie une ligne d un autre onglet pour permettre une mise a jour après une mise en forme car les données que j exploite sont sous forme CSV et j effectue déjà au préalable une conversion en tableau qui fonctionne très bien .
les données copiées dans BDD se font très bien aussi mais l onglet TRI et Résultat ( onglets inséré dans mon fichier )sont comme inactifs .
j ai retesté votre fichier seul il fonctionne nickel mais quand je copie les 3 onglets de votre fichier dans mon fichier il n y a que l onglet BDD qui fonctionne .

MErci

Cordialement
 

Statistiques des forums

Discussions
312 177
Messages
2 085 976
Membres
103 077
dernier inscrit
kamel26asus