Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Obtenir une seule fois un montant répété sur plusieurs lignes d'un code

  • Initiateur de la discussion Initiateur de la discussion Quincy
  • 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 !

Quincy

XLDnaute Occasionnel
Bonjour à tous,

Je cherche à obtenir, pour chaque code, une seule fois le montant qui est répété sur chaque ligne de code.
Le problème vient du fait qu'un code peut avoir une ou plusieurs lignes.

La solution peut être apportée par macro ou par formule, seul le résultat compte.

Le fichier joint vous éclairera davantage.

Merci beaucoup.
Quincy
 

Pièces jointes

Re : Obtenir une seule fois un montant répété sur plusieurs lignes d'un code

Bonjour astralon et merci de ta réponse.

En effet j'avais adopté cette solution quand je faisais des tris de ma base.
Ici aussi, j'ai pris quelques lignes sorties de leur contexte et les ai triées.

Une solution pourrait être envisagée s'il n'y avait pas de tri au préalable ?
 
Re : Obtenir une seule fois un montant répété sur plusieurs lignes d'un code

Par formule matricielle,

Explications dans fichier joint
 
Dernière modification par un modérateur:
Re : Obtenir une seule fois un montant répété sur plusieurs lignes d'un code

Bonjour,

Par rapport à ton tableau existant
Code:
Sub Exporte()
    Dim NoDupes As New Collection
    Dim tabl()
    Application.ScreenUpdating = False
    Range("N1").Value = "Résultat désiré"
    Range([A2], [A65536].End(xlUp)).Select
    A = Selection.Value
    Range([E2], [E65536].End(xlUp)).Select
    B = Selection.Value
    ReDim tabl(1 To UBound(A, 1), 1 To 1)
    For i = 1 To UBound(A)
        tabl(i, 1) = A(i, 1) & "-" & B(i, 1)
    Next i
    On Error Resume Next
    For j = 1 To UBound(A, 1)
        NoDupes.Add tabl(j, 1), CStr(tabl(j, 1))
    Next j
    On Error GoTo 0
    For x = 1 To NoDupes.Count
        For l = 1 To UBound(A)
            If tabl(l, 1) = NoDupes(x) Then
                Cells(l + 1, 14).Value = Cells(l + 1, 5).Value
                Exit For
            Else
            End If
        Next l
    Next x
    Application.Goto Reference:=Range("A1"), scroll:=True
End Sub
 

Pièces jointes

Re : Obtenir une seule fois un montant répété sur plusieurs lignes d'un code

Bonjour Hasco

Je ne connais pas du tout les formules matricielles. J'ai regardé ta formule... et j'ai rien compris tellement elle est complexe. Mais au vu du résultat j'ai peur que cela ne corresponde pas à mon projet car j'ai besoin de garder toutes mes lignes.

Deux petites questions cependant :
- pourquoi certaines formules n'apportent-elles pas de résultat, notamment la 2001 / 136 ?

- peut-on mettre tes formules sur un autre onglet du classeur ?

En tout cas, merci de ton investissement.
Cordialement
Quincy
 
Re : Obtenir une seule fois un montant répété sur plusieurs lignes d'un code

Alors là RENAUDER bonjour et mille mercis !

Afin de tester ta macro j'ai mélangé mes données en faisant un tri sur la colonne Chap puis je l'ai lancée en pas à pas pour voir ce qu'elle faisait.

Une fois terminé j'ai pris les résultats de la colonne N et fait un copier/collage spécial valeur et un tri sur les codes... et là miracle (pour moi), un grand savoir-faire pour toi.

Il ne me reste plus qu'à adapter cette macro dans celle de mon fichier complet et le tour est joué.

Très cordialement et encore merci à tous
Quincy
 
Re : Obtenir une seule fois un montant répété sur plusieurs lignes d'un code

Bonjour,

Creuses bien la partie suivante car elle peut documentée mais elle permet de lire une collection (une plage de données par ex.) et elle ne garde que les items uniques. D'ailleurs c'est pour cela qu'on met un
On Error Resume Next car en cas de doublons il y aurait une erreur.
Voir l'aide pour Add (méthode)
Aperçu de l'aide

object.Add item, key, before, after

Une erreur se produit également si un argument key duplique l'argument key d'un membre existant de la collection

Code:
On Error Resume Next
    For j = 1 To UBound(A, 1)
        NoDupes.Add tabl(j, 1), CStr(tabl(j, 1))
    Next j
    On Error GoTo 0
 
Re : Obtenir une seule fois un montant répété sur plusieurs lignes d'un code

Voici les formules corrigées.

J'avais fais une petites erreurs.


Si tu ne connais pas du tout les formules matricielles, il est peut-être préférable que la solution qui t'a étée proposé par Eric Renaud, emporte ton choix.

Car si tu rajoute des lignes en fin de tableau il faudra réadapter les formules des deux colonnes aux nombre de lignes du tableau. Ce qui pour les formules matricielles est moins simple qu'avec les formules ordinaires.

A bientôt
 
Dernière modification par un modérateur:
- 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

Discussions similaires

Réponses
23
Affichages
676
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…