'--------------------------------------------------------- Sub test() Dim Sh As Worksheet, DerLig As Long, LastRow As Long
Set Sh = Worksheets("Feuil1") 'Nom Feuille à adapter
Application.ScreenUpdating = False With Sh With .Range("A1:A" & .Range("A65536").End(xlUp).Row) .AdvancedFilter Action:=xlFilterCopy, _ Copytorange:=Sh.Range("J1"), _ Unique:=True LastRow = .Range("A65536").End(xlUp).Row DerLig = .Range("J65536").End(xlUp).Row End With 'Tri le résultat du filtre par ordre croissant. With .Range("J1:J" & DerLig) .Sort Key1:=.Item(1, 1), Order1:=xlAscending, Header:=xlYes End With
'Homogéniser la couleur de ligne d'en-tête de la plage résultat du filtre .Range("K1:M1").Interior.Color = .Range("J1").Interior.Color
'Enlève les bordures de la plage résultat du filtre For a = 5 To 12 .Range("J2:J" & LastRow).Borders(a).LineStyle = xlNone Next 'Remplir les étiquettes de colonnes -> résultat du filtre .Range("K1") = .Range("B1") .Range("L1") = .Range("F1") .Range("M1") = .Range("G1")
'Center horizontalement les valeurs de la ligne d'en-tête .Range("J1:M1").HorizontalAlignment = xlCenter
'Extraction des valeurs pour les 3 autres colonnes .Range("K2").FormulaArray = "=MAX(IF($A$2:$A$" & LastRow & _ "=J2,$B$2:$B$" & LastRow & "))" .Range("K2:K" & DerLig).FillDown .Range("K2:K" & DerLig).Value = .Range("K2:K" & DerLig).Value
'Application du format % .Range("L2:M" & DerLig).NumberFormat = "0%" End With Application.ScreenUpdating = True End Sub '---------------------------------------------------------
Voici la macro :
'---------------------------------------------------------
Sub test()
Dim Sh As Worksheet, DerLig As Long, LastRow As Long
Set Sh = Worksheets("Feuil1") 'Nom Feuille à adapter
Application.ScreenUpdating = False
With Sh
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
.AdvancedFilter Action:=xlFilterCopy, _
Copytorange:=Sh.Range("J1"), _
Unique:=True
LastRow = .Range("A65536").End(xlUp).Row
DerLig = .Range("J65536").End(xlUp).Row
End With
'Tri le résultat du filtre par ordre croissant.
With .Range("J1:J" & DerLig)
.Sort Key1:=.Item(1, 1), Order1:=xlAscending, Header:=xlYes
End With
'Homogéniser la couleur de ligne d'en-tête de la plage résultat du filtre
.Range("K1:M1").Interior.Color = .Range("J1").Interior.Color
'Enlève les bordures de la plage résultat du filtre
For a = 5 To 12
.Range("J2:J" & LastRow).Borders(a).LineStyle = xlNone
Next
'Remplir les étiquettes de colonnes -> résultat du filtre
.Range("K1") = .Range("B1")
.Range("L1") = .Range("F1")
.Range("M1") = .Range("G1")
'Center horizontalement les valeurs de la ligne d'en-tête
.Range("J1:M1").HorizontalAlignment = xlCenter
'Extraction des valeurs pour les 3 autres colonnes
.Range("K2").FormulaArray = "=MAX(IF($A$2:$A$" & LastRow & _
"=J2,$B$2:$B$" & LastRow & "))"
.Range("K2:K" & DerLig).FillDown
.Range("K2:K" & DerLig).Value = .Range("K2:K" & DerLig).Value
'Application du format %
.Range("L2:M" & DerLig).NumberFormat = "0%"
End With
Application.ScreenUpdating = True
End Sub
'---------------------------------------------------------
'--------------------------------------------------------- Sub test() Dim Sh As Worksheet, DerLig As Long, LastRow As Long
Set Sh = Worksheets("Feuil1") 'Nom Feuille à adapter
Application.ScreenUpdating = False With Sh With .Range("A1:A" & .Range("A65536").End(xlUp).Row) .AdvancedFilter Action:=xlFilterCopy, _ Copytorange:=Sh.Range("J1"), _ Unique:=True LastRow = .Range("A65536").End(xlUp).Row DerLig = .Range("J65536").End(xlUp).Row End With 'Tri le résultat du filtre par ordre croissant. With .Range("J1:J" & DerLig) .Sort Key1:=.Item(1, 1), Order1:=xlAscending, Header:=xlYes End With
'Homogéniser la couleur de ligne d'en-tête de la plage résultat du filtre .Range("K1:M1").Interior.Color = .Range("J1").Interior.Color
'Enlève les bordures de la plage résultat du filtre For a = 5 To 12 .Range("J2:J" & LastRow).Borders(a).LineStyle = xlNone Next 'Remplir les étiquettes de colonnes -> résultat du filtre .Range("K1") = .Range("B1") .Range("L1") = .Range("F1") .Range("M1") = .Range("G1")
'Center horizontalement les valeurs de la ligne d'en-tête .Range("J1:M1").HorizontalAlignment = xlCenter
'Extraction des valeurs pour les 3 autres colonnes .Range("K2").FormulaArray = "=MAX(IF($A$2:$A$" & LastRow & _ "=J2,$B$2:$B$" & LastRow & "))" .Range("K2:K" & DerLig).FillDown .Range("K2:K" & DerLig).Value = .Range("K2:K" & DerLig).Value
'Application du format % .Range("L2:M" & DerLig).NumberFormat = "0%" End With Application.ScreenUpdating = True End Sub '---------------------------------------------------------
Apitos
Bonsoir Denis,
Ca ne marche pas à tous les coups.
Normalement pour les valeurs de :
- QS‰% et QT0%, NCS sera égal à 19 et non pas 217
- QSX% et Qt”%, NCS sera égal à 311 et non pas 450
Bonsoir Denis,
Ca ne marche pas à tous les coups.
Normalement pour les valeurs de :
- QS=89% et QT=100%, NCS sera égal à 19 et non pas 217
- QS=58% et Qt=94%, NCS sera égal à 311 et non pas 450
- QSX% et Qt”%, NCS sera égal à 311 et non pas 450
MichD
Je ne comprends pas la donne du problème
D'abord, j'extrais une seule occurrence des objets dans un nouveau tableau.
Et pour le NCS, QS et Qt, j'extrais la plus grande valeur pour chacun des objets. L'extraction des 3 champs se fait indépendante sans corrélation entre eux.
Si ce n'est pas ça que tu veux, il est évident que le résultat n'est pas bon.
À toi d'expliquer ton besoin.
- QSX% et Qt”%, NCS sera égal à 311 et non pas 450
Je ne comprends pas la donne du problème
D'abord, j'extrais une seule occurrence des objets dans un nouveau tableau.
Et pour le NCS, QS et Qt, j'extrais la plus grande valeur pour chacun des objets.
L'extraction des 3 champs se fait indépendante sans corrélation entre eux.
Si ce n'est pas ça que tu veux, il est évident que le résultat n'est pas bon.
À toi d'expliquer ton besoin.
- QSX% et Qt”%, NCS sera égal à 311 et non pas 450
D'abord, j'extrais une seule occurrence des objets dans un nouveau tableau.
Et pour le NCS, QS et Qt, j'extrais la plus grande valeur pour chacun des objets. L'extraction des 3 champs se fait indépendante sans corrélation entre eux.
Si ce n'est pas ça que tu veux, il est évident que le résultat n'est pas bon.
À toi d'expliquer ton besoin.
- QSX% et Qt”%, NCS sera égal à 311 et non pas 450
Apitos
Bonsoir Denis,
D'abord, j'extrais une seule occurrence des objets dans un nouveau tableau .
OK
Et pour le NCS, QS et Qt, j'extrais la plus grande valeur pour chacun des objets.
Non, il faut extraire la plus grande valeur de QS et QT seulement.
L'extraction des 3 champs se fait indépendante sans corrélation entre eux.
Non, les valeurs de NCS pour lesquels on devra extraire la plus grande vale ur, sont dépendantes des grandes valeurs de QS et QT pour chaque objet.
Chaque grande valeur marquée par la couleur rose pour les QS, et la coule ur bleu pour les QT corresponde à une valeur de NCS dans la même ligne.
Le choix se fera pour la plus grande valeur de NCS marquée par la couleur marron, parmi une, deux, trois ou plus de lignes.
Dans le fichier joint, pour explication, jÂ’ai ajouté dans la colonne N (NCS corrigée) les valeurs exactes de NCS (Cellules en marron dans la col onne B) qui devront se retrouver dans la colonne K.
http://cjoint.com/?BEFiBayJnYR
Bonsoir Denis,
D'abord, j'extrais une seule occurrence des objets dans un nouveau tableau .
OK
Et pour le NCS, QS et Qt, j'extrais la plus grande valeur pour chacun des objets.
Non, il faut extraire la plus grande valeur de QS et QT seulement.
L'extraction des 3 champs se fait indépendante sans corrélation entre eux.
Non, les valeurs de NCS pour lesquels on devra extraire la plus grande vale ur, sont dépendantes des grandes valeurs de QS et QT pour chaque objet.
Chaque grande valeur marquée par la couleur rose pour les QS, et la coule ur bleu pour les QT corresponde à une valeur de NCS dans la même ligne.
Le choix se fera pour la plus grande valeur de NCS marquée par la couleur marron, parmi une, deux, trois ou plus de lignes.
Dans le fichier joint, pour explication, jÂ’ai ajouté dans la colonne N (NCS corrigée) les valeurs exactes de NCS (Cellules en marron dans la col onne B) qui devront se retrouver dans la colonne K.
D'abord, j'extrais une seule occurrence des objets dans un nouveau tableau .
OK
Et pour le NCS, QS et Qt, j'extrais la plus grande valeur pour chacun des objets.
Non, il faut extraire la plus grande valeur de QS et QT seulement.
L'extraction des 3 champs se fait indépendante sans corrélation entre eux.
Non, les valeurs de NCS pour lesquels on devra extraire la plus grande vale ur, sont dépendantes des grandes valeurs de QS et QT pour chaque objet.
Chaque grande valeur marquée par la couleur rose pour les QS, et la coule ur bleu pour les QT corresponde à une valeur de NCS dans la même ligne.
Le choix se fera pour la plus grande valeur de NCS marquée par la couleur marron, parmi une, deux, trois ou plus de lignes.
Dans le fichier joint, pour explication, jÂ’ai ajouté dans la colonne N (NCS corrigée) les valeurs exactes de NCS (Cellules en marron dans la col onne B) qui devront se retrouver dans la colonne K.
http://cjoint.com/?BEFiBayJnYR
MichD
Ton fichier retour : http://cjoint.com/?BEFqeGvcjvh
La procédure dans le module de la feuil1
Sub test() Dim Sh As Worksheet, DerLig As Long, LastRow As Long
Set Sh = Worksheets("Feuil1") 'Nom Feuille à adapter
Application.ScreenUpdating = False With Sh With .Range("A1:A" & .Range("A65536").End(xlUp).Row) .AdvancedFilter Action:=xlFilterCopy, _ Copytorange:=Sh.Range("J1"), _ Unique:=True LastRow = .Range("A65536").End(xlUp).Row DerLig = .Range("J65536").End(xlUp).Row End With 'Tri le résultat du filtre par ordre croissant. With .Range("J1:J" & DerLig) .Sort Key1:=.Item(1, 1), Order1:=xlAscending, Header:=xlYes End With
'Homogéniser la couleur de ligne d'en-tête de la plage résultat du filtre .Range("K1:M1").Interior.Color = .Range("J1").Interior.Color
'Enlève les bordures de la plage résultat du filtre For a = 5 To 12 .Range("J2:J" & LastRow).Borders(a).LineStyle = xlNone Next 'Remplir les étiquettes de colonnes -> résultat du filtre .Range("K1") = .Range("B1") .Range("L1") = .Range("F1") .Range("M1") = .Range("G1")
'Center horizontalement les valeurs de la ligne d'en-tête .Range("J1:M1").HorizontalAlignment = xlCenter
'Application du format % .Range("L2:M" & DerLig).NumberFormat = "0%" End With Application.ScreenUpdating = True End Sub
Ton fichier retour : http://cjoint.com/?BEFqeGvcjvh
La procédure dans le module de la feuil1
Sub test()
Dim Sh As Worksheet, DerLig As Long, LastRow As Long
Set Sh = Worksheets("Feuil1") 'Nom Feuille à adapter
Application.ScreenUpdating = False
With Sh
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
.AdvancedFilter Action:=xlFilterCopy, _
Copytorange:=Sh.Range("J1"), _
Unique:=True
LastRow = .Range("A65536").End(xlUp).Row
DerLig = .Range("J65536").End(xlUp).Row
End With
'Tri le résultat du filtre par ordre croissant.
With .Range("J1:J" & DerLig)
.Sort Key1:=.Item(1, 1), Order1:=xlAscending, Header:=xlYes
End With
'Homogéniser la couleur de ligne d'en-tête de la plage résultat du filtre
.Range("K1:M1").Interior.Color = .Range("J1").Interior.Color
'Enlève les bordures de la plage résultat du filtre
For a = 5 To 12
.Range("J2:J" & LastRow).Borders(a).LineStyle = xlNone
Next
'Remplir les étiquettes de colonnes -> résultat du filtre
.Range("K1") = .Range("B1")
.Range("L1") = .Range("F1")
.Range("M1") = .Range("G1")
'Center horizontalement les valeurs de la ligne d'en-tête
.Range("J1:M1").HorizontalAlignment = xlCenter
Ton fichier retour : http://cjoint.com/?BEFqeGvcjvh
La procédure dans le module de la feuil1
Sub test() Dim Sh As Worksheet, DerLig As Long, LastRow As Long
Set Sh = Worksheets("Feuil1") 'Nom Feuille à adapter
Application.ScreenUpdating = False With Sh With .Range("A1:A" & .Range("A65536").End(xlUp).Row) .AdvancedFilter Action:=xlFilterCopy, _ Copytorange:=Sh.Range("J1"), _ Unique:=True LastRow = .Range("A65536").End(xlUp).Row DerLig = .Range("J65536").End(xlUp).Row End With 'Tri le résultat du filtre par ordre croissant. With .Range("J1:J" & DerLig) .Sort Key1:=.Item(1, 1), Order1:=xlAscending, Header:=xlYes End With
'Homogéniser la couleur de ligne d'en-tête de la plage résultat du filtre .Range("K1:M1").Interior.Color = .Range("J1").Interior.Color
'Enlève les bordures de la plage résultat du filtre For a = 5 To 12 .Range("J2:J" & LastRow).Borders(a).LineStyle = xlNone Next 'Remplir les étiquettes de colonnes -> résultat du filtre .Range("K1") = .Range("B1") .Range("L1") = .Range("F1") .Range("M1") = .Range("G1")
'Center horizontalement les valeurs de la ligne d'en-tête .Range("J1:M1").HorizontalAlignment = xlCenter
Pourquoi en essayant la macro sur cet exemple ça me donne des #REF! Dans quelques valeurs NCS dans la colonne K ?
http://cjoint.com/?BEFsNrh3RXp
MichD
| Pourquoi en essayant la macro sur cet exemple ça me donne des #REF!
Dans la colonne F ou G, pour un même objet, il y a plus d'une valeur maximale.
Exemple pour l'objet : KVRWA, dans la colonne G, tu as 3 valeurs maximales qui sont égales : 100 . La formule a été conçue pour seulement une valeur maximale par objet. Dans le cas qui nous occupe, laquelle de ces 3 valeurs combinées avec la valeur maximale de la colonne F, doit-elle retenue? À ce que je sache, cette condition n'a jamais été définie. Remarque, il pourrait aussi y avoir des situations ou tu as un doublon et dans la colonne F et G pour un même objet. Pas facile de déterminer la valeur en B qui doit être conservé.
"Apitos" a écrit dans le message de groupe de discussion :
Bonsoir Denis,
Pourquoi en essayant la macro sur cet exemple ça me donne des #REF! Dans quelques valeurs NCS dans la colonne K ?
http://cjoint.com/?BEFsNrh3RXp
| Pourquoi en essayant la macro sur cet exemple ça me donne des #REF!
Dans la colonne F ou G, pour un même objet, il y a plus d'une valeur maximale.
Exemple pour l'objet : KVRWA, dans la colonne G, tu as 3 valeurs maximales qui sont égales
: 100 . La formule a été conçue pour seulement une valeur maximale par objet. Dans le cas
qui nous occupe, laquelle de ces 3 valeurs combinées avec la valeur maximale de la colonne
F, doit-elle retenue? À ce que je sache, cette condition n'a jamais été définie. Remarque,
il pourrait aussi y avoir des situations ou tu as un doublon et dans la colonne F et G
pour un même objet. Pas facile de déterminer la valeur en B qui doit être conservé.
"Apitos" a écrit dans le message de groupe de discussion :
b5b4ce6e-39e2-4fd4-a92e-7d46673b41d9@googlegroups.com...
Bonsoir Denis,
Pourquoi en essayant la macro sur cet exemple ça me donne des #REF! Dans quelques valeurs
NCS dans la colonne K ?
| Pourquoi en essayant la macro sur cet exemple ça me donne des #REF!
Dans la colonne F ou G, pour un même objet, il y a plus d'une valeur maximale.
Exemple pour l'objet : KVRWA, dans la colonne G, tu as 3 valeurs maximales qui sont égales : 100 . La formule a été conçue pour seulement une valeur maximale par objet. Dans le cas qui nous occupe, laquelle de ces 3 valeurs combinées avec la valeur maximale de la colonne F, doit-elle retenue? À ce que je sache, cette condition n'a jamais été définie. Remarque, il pourrait aussi y avoir des situations ou tu as un doublon et dans la colonne F et G pour un même objet. Pas facile de déterminer la valeur en B qui doit être conservé.
"Apitos" a écrit dans le message de groupe de discussion :
Bonsoir Denis,
Pourquoi en essayant la macro sur cet exemple ça me donne des #REF! Dans quelques valeurs NCS dans la colonne K ?
http://cjoint.com/?BEFsNrh3RXp
Apitos
Bonjour Denis,
Dans la colonne F ou G, pour un m�me objet, il y a plus d'une val eur maximale.
Exemple pour l'objet : KVRWA, dans la colonne G, tu as 3 valeurs maximale s qui sont �gales : 100 . La formule a �t� con�ue pour seulement u ne valeur maximale par objet. Dans le cas qui nous occupe, laquelle de ces 3 valeurs combin�es avec la vale ur maximale de la colonne F, doit-elle retenue? � ce que je sache, cette condition n'a jama is �t� d�finie. Remarque, il pourrait aussi y avoir des situations ou tu as un doublon et dans la c olonne F et G pour un m�me objet. Pas facile de d�terminer la valeur en B qui doit �tre conserv�.
Pour tout cela, on devra collecter toutes les valeurs correspondantes dans la colonne B, ensuite on a quÂ’appliquer le MAX des ces valeurs de NCS de la colonne B
Dans le cas que tu évoques, on a trois valeurs max dans la colonne G, qui correspondent à 3 valeurs de NCS dans la colonne B = (96,93 et 73)
et une valeur max dans la colonne F qui correspond à une valeur de NCS da ns la colonne B = (96).
Alors le max dans la colonne B se calculera entre les valeurs de NCS (96,93 et 91), et on aura NCS qui sera égal à 96.
Voila !
Alors peut-on trouver une solution de cette analyse ?
Bonjour Denis,
Dans la colonne F ou G, pour un m�me objet, il y a plus d'une val eur maximale.
Exemple pour l'objet : KVRWA, dans la colonne G, tu as 3 valeurs maximale s qui sont �gales
: 100 . La formule a �t� con�ue pour seulement u ne valeur maximale par objet. Dans le cas
qui nous occupe, laquelle de ces 3 valeurs combin�es avec la vale ur maximale de la colonne
F, doit-elle retenue? � ce que je sache, cette condition n'a jama is �t� d�finie. Remarque,
il pourrait aussi y avoir des situations ou tu as un doublon et dans la c olonne F et G
pour un m�me objet. Pas facile de d�terminer la valeur en B qui doit �tre conserv�.
Pour tout cela, on devra collecter toutes les valeurs correspondantes dans la colonne B, ensuite on a quÂ’appliquer le MAX des ces valeurs de NCS de la colonne B
Dans le cas que tu évoques, on a trois valeurs max dans la colonne G, qui correspondent à 3 valeurs de NCS dans la colonne B = (96,93 et 73)
Dans la colonne F ou G, pour un m�me objet, il y a plus d'une val eur maximale.
Exemple pour l'objet : KVRWA, dans la colonne G, tu as 3 valeurs maximale s qui sont �gales : 100 . La formule a �t� con�ue pour seulement u ne valeur maximale par objet. Dans le cas qui nous occupe, laquelle de ces 3 valeurs combin�es avec la vale ur maximale de la colonne F, doit-elle retenue? � ce que je sache, cette condition n'a jama is �t� d�finie. Remarque, il pourrait aussi y avoir des situations ou tu as un doublon et dans la c olonne F et G pour un m�me objet. Pas facile de d�terminer la valeur en B qui doit �tre conserv�.
Pour tout cela, on devra collecter toutes les valeurs correspondantes dans la colonne B, ensuite on a quÂ’appliquer le MAX des ces valeurs de NCS de la colonne B
Dans le cas que tu évoques, on a trois valeurs max dans la colonne G, qui correspondent à 3 valeurs de NCS dans la colonne B = (96,93 et 73)