Comparer des couples de valeurs

Bonjour,

Je sollicite votre précieuse aide car je suis sur un casse tête.

Je vous explique ce que j'essai de faire :

J'ai un tableau avec plusieurs colonnes :

Zone / Type / Etat

FR / A / BS

FR / A / PB

DE / B / BS

FR / A / BS

FR / C /PB

FR / A / CM

DE / B / PB

Ce que je souhaite faire, c'est pour chaque couple de valeur différent, créer une nouvelle ligne dans le tableau.

Pour cette exemple, les couples différents sont : FR A BS, FR A PB, DE B BS, FR C PB, FR A CM, DE B PB.

LE fichier en question comporte des données confidentielles c'est pour celà que je ne le fournis pas, et j'ai simplifié l'exemple car le but de mon post est de trouver une logique à la solution (un algo quoi!)

Je vous remercie pour votre lecture, votre temps et votre aide

Cordialement,

J

Bonjour,

Je n'ai pas bien saisi ce que tu voulais faire. Tu peux détailler un peu stp ?

pour chaque couple de valeur différent, créer une nouvelle ligne dans le tableau.

Pour cette exemple, les couples différents sont : FR A BS, FR A PB, DE B BS, FR C PB, FR A CM, DE B PB.

Bonjour,

Tu parles de couples et tu nous montres des trios !

Tu en veux un par ligne mais tu ne nous indiques que des lignes limitées à 3 colonnes !

En l'état c'est une question de suppression des doublons !

En relisant je comprends que c'est flou, c'est surement car c'est également flou dans ma tête :/

Je vais créér un fichier de démo et je reviens vers vous rapidement,

Merci

J'ai joint un fichier d'exemple avec mes 3 colonnes et un extrait des valeurs qu'elles contiennent.

Ce que je cherche à faire exactement, c'est :

Pour chaque trio(Zone;type;etat) distinct créér une nouvelle ligne.

En prenant l'exemple du fichier joint, j'ai 62 lignes dans mon tableau mais seulement 19 combinaisons différentes (FR BS1 A, FR BS1B, FR BS1 C etc....). Il me faudra donc créér 19 nouvelles lignes du type (FR BS2 A pour FR BS1 A, FR BS2 B pour FR BS1 B etc...)

Pour parler en terme d'algo, je cherche à écrire une fonction du type :

Pour i = 2 to derniereLigne

Pour chaque combinaison distinct (zone;type;etat) do

NewLine = Range("A2").CurrentRegion.End(xlDown).Row + 1

Range("A"&i&"").value = zone

Range("B"&i&"").value = Left(type, 3) + "2"

Range("C"&i&"").value = etat

next i

sachant qu'il ne doit pas y avoir de doublon dans ces nouvelles lignes.

Ai-je étais compréhensible cette fois ci?

Merci,

cordialement,

J

12demo.xlsx (8.92 Ko)

Pas plus pour moi ! Tu as 62 lignes, tu en veux 19, en supprimant les doublons tu obtiendras les 19 voulues !

A moins que tu ne veuilles tes 19 lignes ailleurs, mais j'ai beau scruter ton post je ne vois rien relatif aux emplacements...

Cordialement.

Non...

J'ai 62 lignes que je ne veux pas modifier.

En plus de ces 62 lignes, je souhaite ajouter N lignes avec N = distinct(zone;type;etat)

Et le tout via une macro.

Essaie cette méthode, qui utilises le filtrage avancé) :

Sub Test()
    Dim ln%
    With ActiveSheet
        Application.ScreenUpdating = False
        ln = .Range("A" & .Rows.Count).End(xlUp).Row
        .Range("A1:C" & ln).AdvancedFilter xlFilterCopy, , .Range("A" & ln + 1) _
         .Resize(, 3), True
        .Rows(ln + 1).Delete
    End With
End Sub

Cordialement.

Tout d'abord un grand merci pour ton aide, pour le temps que tu consacres à aider les autres et pour ta patiente avec moi

Ta solution est très proche de ce que je souhaite faire a une chose près :

En prenant l'exemple du fichier joint, j'ai 62 lignes dans mon tableau mais seulement 19 combinaisons différentes (FR BS1 A, FR BS1B, FR BS1 C etc....). Il me faudra donc créér 19 nouvelles lignes du type (FR BS2 A pour FR BS1 A, FR BS2 B pour FR BS1 B etc...)

Sur les 19 nouvelles lignes, il y a une modification à faire sur la colonne TYPE (je souhaite par exemple avoir BS2 à la place ed BS1 sur toutes ces nouvelles lignes). Est-ce possible d'intégrer ça dans ton code, ou dois-je les modifier dans une nouvelle boucle par la suite ?

Cordialement,

J

On peut l'intégrer si tes modifications sont prédéfinies.

D'accord, merci beaucoup!

Je vais tâcher de terminé cela

Je marque résolu

Avec cette méthode tu programmes tes modifications dans la zone ajoutées. Tu récupères la nouvelle dernière ligne, mettons dln, et tu sais que tu opères de ln+1 à dln...

Rechercher des sujets similaires à "comparer couples valeurs"