• Initiateur de la discussion Initiateur de la discussion marie
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

marie

Guest
Bonjour à tous j'ai besoin d'un peu d'aide

Voilà j'ai aussi un pb de doublons
J'ai réussi à faire supprimer les doublons mais c'est tout à fait que je veux

Voilà j'ai une liste en colonne A de shipper et le volume en colonne B
les shippers sont tous en double et je voudrais garder que les shippers ayant un volume le plus grand

Dans le fichier joint j'ai commencé à souligner en jaune les lignes que je voudrais garder
car ex. pour le shipper T1043141 je veux la ligne 20 (volume 0.04203)

si qqn peut m'aider

Merci
[file name=Classeur2_20050629111413.zip size=32547]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur2_20050629111413.zip[/file]
 

Pièces jointes

Bonjour marie, andré, le forum

En attendant la soluce d'andré par formule.

une proposition VBA

Traitement en 10 secondes, les doublons n'ont pas besoin d'etre classés;

On doit pouvoir améliorer le temp de traitement.

Sub Bouton1_QuandClic()
Dim tablo As Variant
Dim data As Collection
Dim i As Integer, x As Integer, j As Integer
Dim max As Double

tablo = Range('a2:b' & Range('a65536').End(xlUp).Row)

Set data = New Collection

On Error Resume Next
For i = 1 To UBound(tablo)
    data.Add CStr(tablo(i, 1)), CStr(tablo(i, 1))
Next i
On Error GoTo 0

For i = 1 To data.Count
    max = 0
   
For j = 1 To UBound(tablo, 1)
       
If data.Item(i) = tablo(j, 1) Then
           
If tablo(j, 2) > max Then
                max = tablo(j, 2)
           
End If
       
End If
   
Next j
    x = x + 1
    Sheets('feuil2').Cells(x, 1) = data.Item(i)
    Sheets('feuil2').Cells(x, 2) = max
Next i

End Sub

salut

edition : le renvoi se fait sur la feuille 2

Message édité par: Hervé, à: 29/06/2005 11:49
 
Rere ..., à toi aussi Hervé,

C'était cela : 216 Ko !

Petite précision : je me suis basé sur le fait que la liste était triée et que par conséquent la plus grande valeur est toujours la dernière de chaque code.

Ândré. [file name=marie_V1.zip size=6550]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/marie_V1.zip[/file]
 
Bonjour,

Au suivant…
Avec des formules matricielles,
à valider par ctrl, maj et entrée
sans colonne supp.
Les données n'ont pas besoin d'être triées.
[file name=SansDoublonsMarie.zip size=6618]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/SansDoublonsMarie.zip[/file]
 

Pièces jointes

Bonjour,


pfffF.... Monique.... ça fait quelques jours que j'essaye désespérément de comprendre ta façon de régler ce type de problèmes... et... ouiiiin... j'arrive paaaas.... Déjà d'habitude, je capte très modérément mais alors là, c'est un sommet : A quoi sert un x1 ?... je vois '*1' dans la formule, je me dis 'tiens curieux.. il me semblait que *1 ca ne faisait rien.. d'un autre coté.. si Monique le met....'... hop hop, on teste.. et.. ben non ça marche pas sans... Alors... par quelle magie un *1 fait-il quelquechose de nécessaire....

grmblll... j'envisage de multiplier par 12 ma période d'hibernation de 1 mois et de me terrer dasn une grotte, loin d'XL....
 
Salut Hervé et les autres,

En D2 : =SI(LIGNE()>MAX($A:$A);'';RECHERCHEV(LIGNE();$A:$C;COLONNE()-2;0))

J'emploie les fonctions LIGNE() et COLONNE() au lieu des constantes 2 et 4, afin qu'elles s'incrémentent à la copie, tant vers la bas que vers la droite.
J'aurai même pu écrire $A:B au lieu de $A:$C, cette référence se serait également incrémentée en $A:C en la copiant vers la droite.

LIGNE()>MAX($A:$A) est une condition qui vérifie la présence de la valeur cherchée (sous la fonction RECHERCHEV) dans la colonne A et évite d'envoyer un message d'erreur si elle n'est pas trouvée.
Elle peut aussi être écrite : NB($D1😀1)+2

Le '2' provient du fait que la numérotation en colonne A commence par '2'.
Si en A2 j'avais écris =SI(B2=B3;'';NB(A$1:A1)+1) au lieu de =SI(B2=B3;'';NB(A$1:A1)+2), j'aurai du écrire en D2 :
=SI(LIGNE()-1>MAX($A:$A);'';RECHERCHEV(LIGNE()-1;$A:$C;COLONNE()-2;0)).
C'est un libre choix de ma part.

RECHERCHEV(LIGNE();$A:$C;COLONNE()-2;0))
recherche dans la première colonne de la plage A:C (=A) la valeur du no de la ligne (=2) en demandant de renvoyer la valeur se trouvant sur la même ligne dans la colonne D-2 = 4-2=2.

Je suppose que ce qui t'a quelque peu pertrubé c'est d'avoir remplacé les constantes par les fonctions LIGNE et COLONNE.
Le seul but est l'incrémentation.

J'espère avoir été clair dans mes explications, faute de quoi ... tu sais où j'habite, et je suis toujours à la masion (lol).

Ândré.
 
re pour certains
bonjour monique, 2passage

waouh andré, j'ai compris :lol:

Merci

ligne et colonne : pas bête du tout.

Tu devrais te mettre au VBA, andré, avec des raisonnements pareils tu ferais un malheur.

BOn, ben moi, je vais reposé mon neurone 😛inch:

Salut
 
Resalut Hervé,

Un peu de patience, je vais bientôt m'y mettre.
Mais ma grand-mère m'a toujours dit qu'il fallait d'abord apprendre à bien marcher avant de vouloir courrir.

Maintenant que je maîtrise quelque peu les formules, que je fais de sérieux progrets avec la fonction SOMMEPROD, il me faut encore approndir les matricelles, les TCD et les graphiques.

Et ensuite, tiens toi prêt (mais je t'avertirai avant) je m'attaque au VBA.

Sans vouloir te faire la leçon, j'ai appris, de part ma profession, que tant qu'on ne maîtrise pas les exceptions, on est nulle part.
Et puis, je déteste l'amateurisme, dans le sens 'd'apprentis sorciers'.

Ândré.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
17
Affichages
619
Réponses
6
Affichages
236
Réponses
4
Affichages
449
Réponses
40
Affichages
3 K
Retour