J'ai oublié de préciser qu'il sera préférable par VBA.
Corto
Bonjour Apitos, J'ai une macro qui fait ce que tu demande mais si tu veux la faire tourner sur de grandes plages, il faut changer la partie tri du tableau qui est un bête tri à bulle.
Sub GrandesValeurs(XZONE As Range, XNB As Long, XDST As Range) ReDim T2(1 To XNB, 1 To 1)
T = XZONE.Value ' Tri du tableau For XCPT = LBound(T) To UBound(T) For X = LBound(T) To UBound(T) - 1 For Y = UBound(T) To X Step -1 If T(X, 1) < T(Y, 1) Then TRANS = T(X, 1) T(X, 1) = T(Y, 1) T(Y, 1) = TRANS End If Next Next Next XCPT ' Fin du tri If XDST.Rows.Count <> XNB Then Set XDST = XDST.Resize(RowSize:=XN B) For XCPT = LBound(T) To XNB T2(XCPT, 1) = T(XCPT, 1) Next XCPT XDST.Value = T2 End Sub
Corto
Bonsoir,
Dans une ligne j'ai en A2 la nom Nm, et dans B2 à F2 j'ai cinq valeur s de Nm.
Comment extraire les trois grandes valeurs de Nm et les copier dans Feuil2 ?
Merci.
Bonjour Apitos,
J'ai une macro qui fait ce que tu demande mais si tu veux la faire
tourner sur de grandes plages, il faut changer la partie tri du tableau
qui est un bête tri à bulle.
Sub GrandesValeurs(XZONE As Range, XNB As Long, XDST As Range)
ReDim T2(1 To XNB, 1 To 1)
T = XZONE.Value
' Tri du tableau
For XCPT = LBound(T) To UBound(T)
For X = LBound(T) To UBound(T) - 1
For Y = UBound(T) To X Step -1
If T(X, 1) < T(Y, 1) Then
TRANS = T(X, 1)
T(X, 1) = T(Y, 1)
T(Y, 1) = TRANS
End If
Next
Next
Next XCPT ' Fin du tri
If XDST.Rows.Count <> XNB Then Set XDST = XDST.Resize(RowSize:=XN B)
For XCPT = LBound(T) To XNB
T2(XCPT, 1) = T(XCPT, 1)
Next XCPT
XDST.Value = T2
End Sub
Corto
Bonsoir,
Dans une ligne j'ai en A2 la nom Nm, et dans B2 à F2 j'ai cinq valeur s
de Nm.
Comment extraire les trois grandes valeurs de Nm et les copier dans
Feuil2 ?
Bonjour Apitos, J'ai une macro qui fait ce que tu demande mais si tu veux la faire tourner sur de grandes plages, il faut changer la partie tri du tableau qui est un bête tri à bulle.
Sub GrandesValeurs(XZONE As Range, XNB As Long, XDST As Range) ReDim T2(1 To XNB, 1 To 1)
T = XZONE.Value ' Tri du tableau For XCPT = LBound(T) To UBound(T) For X = LBound(T) To UBound(T) - 1 For Y = UBound(T) To X Step -1 If T(X, 1) < T(Y, 1) Then TRANS = T(X, 1) T(X, 1) = T(Y, 1) T(Y, 1) = TRANS End If Next Next Next XCPT ' Fin du tri If XDST.Rows.Count <> XNB Then Set XDST = XDST.Resize(RowSize:=XN B) For XCPT = LBound(T) To XNB T2(XCPT, 1) = T(XCPT, 1) Next XCPT XDST.Value = T2 End Sub
Corto
Bonsoir,
Dans une ligne j'ai en A2 la nom Nm, et dans B2 à F2 j'ai cinq valeur s de Nm.
Comment extraire les trois grandes valeurs de Nm et les copier dans Feuil2 ?
Merci.
ChrisV
Bonjour Apitos,
Avec la plage de données nommée ici "Zn", et la plage de destination (en feuille2) nommée ici "reS"
Sub zaza() With [reS] .FormulaArray = "=LARGE(Zn,{1;2;3})" .Value = .Value End With End Sub
ChrisV
"Apitos" a écrit dans le message de news:
Bonsoir,
Dans une ligne j'ai en A2 la nom Nm, et dans B2 à F2 j'ai cinq valeurs de Nm.
Comment extraire les trois grandes valeurs de Nm et les copier dans Feuil2 ?
Merci.
Bonjour Apitos,
Avec la plage de données nommée ici "Zn", et la plage de destination (en
feuille2) nommée ici "reS"
Sub zaza()
With [reS]
.FormulaArray = "=LARGE(Zn,{1;2;3})"
.Value = .Value
End With
End Sub
ChrisV
"Apitos" <apitos@gmail.com> a écrit dans le message de news:
1193251277.394560.177110@y27g2000pre.googlegroups.com...
Bonsoir,
Dans une ligne j'ai en A2 la nom Nm, et dans B2 à F2 j'ai cinq valeurs
de Nm.
Comment extraire les trois grandes valeurs de Nm et les copier dans
Feuil2 ?
:: Dans une ligne j'ai en A2 la nom Nm, et dans B2 à F2 j'ai cinq valeurs de Nm :
A B C D E F 1 N1 10 5 100 87 56 2 N2 147 1.5 .12 45 88 3 N3 41 220 91 250 30
Je devrais avoir les trois grandes valeurs de chaque ligne, à savoir :
1 N1 100 87 56 2 N2 147 88 45 3 N3 250 220 91
Merci.
ChrisV
Bonjour Apitos,
Selon les données de ton dernier exemple, pourquoi ne pas utiliser une formule...? (sur une plage de 3 cellules horizontales contigues, valider par Ctrl+Shift+Entrée)
=GRANDE.VALEUR(Feuil1!B1:F1;{1.2.3})
puis à recopier 2 lignes vers la bas.
Par VBA, en supposant que la plage de destination débute en A1
Sub zaza() With Worksheets("Feuil2") .[A1:C1].FormulaArray = "=LARGE(Feuil1!B1:F1,{1,2,3})" .[A1:C1].AutoFill Destination:=.[A1:C3] .[A1:C3] = .[A1:C3].Value End With End Sub
ChrisV
"Apitos" a écrit dans le message de news:
Bonsoir Chris,
:: Dans une ligne j'ai en A2 la nom Nm, et dans B2 à F2 j'ai cinq valeurs de Nm :
A B C D E F 1 N1 10 5 100 87 56 2 N2 147 1.5 .12 45 88 3 N3 41 220 91 250 30
Je devrais avoir les trois grandes valeurs de chaque ligne, à savoir :
1 N1 100 87 56 2 N2 147 88 45 3 N3 250 220 91
Merci.
Bonjour Apitos,
Selon les données de ton dernier exemple, pourquoi ne pas utiliser une
formule...?
(sur une plage de 3 cellules horizontales contigues, valider par
Ctrl+Shift+Entrée)
=GRANDE.VALEUR(Feuil1!B1:F1;{1.2.3})
puis à recopier 2 lignes vers la bas.
Par VBA, en supposant que la plage de destination débute en A1
Sub zaza()
With Worksheets("Feuil2")
.[A1:C1].FormulaArray = "=LARGE(Feuil1!B1:F1,{1,2,3})"
.[A1:C1].AutoFill Destination:=.[A1:C3]
.[A1:C3] = .[A1:C3].Value
End With
End Sub
ChrisV
"Apitos" <apitos@gmail.com> a écrit dans le message de news:
1193351608.140404.79930@19g2000hsx.googlegroups.com...
Bonsoir Chris,
:: Dans une ligne j'ai en A2 la nom Nm, et dans B2 à F2 j'ai cinq
valeurs
de Nm :
A B C D E F
1 N1 10 5 100 87 56
2 N2 147 1.5 .12 45 88
3 N3 41 220 91 250 30
Je devrais avoir les trois grandes valeurs de chaque ligne, à savoir :
Selon les données de ton dernier exemple, pourquoi ne pas utiliser une formule...? (sur une plage de 3 cellules horizontales contigues, valider par Ctrl+Shift+Entrée)
=GRANDE.VALEUR(Feuil1!B1:F1;{1.2.3})
puis à recopier 2 lignes vers la bas.
Par VBA, en supposant que la plage de destination débute en A1
Sub zaza() With Worksheets("Feuil2") .[A1:C1].FormulaArray = "=LARGE(Feuil1!B1:F1,{1,2,3})" .[A1:C1].AutoFill Destination:=.[A1:C3] .[A1:C3] = .[A1:C3].Value End With End Sub
ChrisV
"Apitos" a écrit dans le message de news:
Bonsoir Chris,
:: Dans une ligne j'ai en A2 la nom Nm, et dans B2 à F2 j'ai cinq valeurs de Nm :
A B C D E F 1 N1 10 5 100 87 56 2 N2 147 1.5 .12 45 88 3 N3 41 220 91 250 30
Je devrais avoir les trois grandes valeurs de chaque ligne, à savoir :
1 N1 100 87 56 2 N2 147 88 45 3 N3 250 220 91
Merci.
Corto
Bonjour Apitos, C'est normal que ce que tu as écris provoque une erreur car dois donner des valeurs en appelant la fonction. par exemple GrandesValeurs([A1:A100], 3, [B2]) XZONE = Zone de données XNB = Nombre de données à extraire XDST = Zone de destination
Corto
Bonsoir Corto,
Je voulais essayé ta macro, mais je n'ai pas su le faire ....
Private Sub CommandButton1_Click() GrandesValeurs(XZONE, 1, XDST) End Sub
Ca me donne toujours une erreur de compilation.
Bonjour Apitos,
C'est normal que ce que tu as écris provoque une erreur car dois donner
des valeurs en appelant la fonction.
par exemple GrandesValeurs([A1:A100], 3, [B2])
XZONE = Zone de données
XNB = Nombre de données à extraire
XDST = Zone de destination
Corto
Bonsoir Corto,
Je voulais essayé ta macro, mais je n'ai pas su le faire ....
Private Sub CommandButton1_Click()
GrandesValeurs(XZONE, 1, XDST)
End Sub
Bonjour Apitos, C'est normal que ce que tu as écris provoque une erreur car dois donner des valeurs en appelant la fonction. par exemple GrandesValeurs([A1:A100], 3, [B2]) XZONE = Zone de données XNB = Nombre de données à extraire XDST = Zone de destination
Corto
Bonsoir Corto,
Je voulais essayé ta macro, mais je n'ai pas su le faire ....
Private Sub CommandButton1_Click() GrandesValeurs(XZONE, 1, XDST) End Sub