Conversion plusieurs listes en une seule

Bonjour,

J'ai 12 listes et j'aimerai la mettre sous le format d'une seule, le problème est qu'il y a des doublons et j'aimerai les supprimer avant même qu'ils soient dans le liste finale.

Pour ce faire je souhaite apporter une condition disant que si la valeur dans la liste est déjà présente dans la plage de la liste finale, il faut pas la copier. J'utilise le code suivant :

Sub CreationCategorie()

m = 3
For i = 4 To 15
    For j = 3 To 70

        If Cells(j, i) <> "" And Cells(j, i) <> Cells("Q3:Q80") Then
                a = Cells(j, i)
                Sheets("LISTE").Activate
                Cells(m, 17) = a
                m = m + 1
                Sheets(namesheet).Activate
            End If
        End If
    Next j
Next i

End Sub

Les boucles for me permettant de parcourir toutes les listes. De plus la variable m fixe la première valeur de ma première liste. Enfin la colonne Q contient la liste finale que je souhaite créer.

Merci d'avance pour votre aide !

Bonjour

Un essai à tester. Te convient-il ?

Bye !

8classeur1-v1.xlsm (25.64 Ko)

Je pense que ce code correspond exactement à ce que je recherche, cependant je ne comprend pas trop son fonctionnement et plus précisément le code ci-dessous :

 For i = 2 To UBound(tablo, 1)
        For j = 4 To UBound(tablo, 2)
            dico(tablo(i, j)) = ""
        Next j
    Next i   

Le même avec macro commentée.

Bye !

18classeur1-v1-b.xlsm (26.34 Ko)

Super ! Merci beaucoup pour toutes ces précieuses informations.

J'ai cependant une dernière question. A quoi correspondent les valeurs i = 2 et j = 4 dans le code suivant ?

For i = 2 To UBound(tablo, 1)          
        For j = 4 To UBound(tablo, 2)
            dico(tablo(i, j)) = "" 

C'est bon j'ai réussi à adapter la macro à mon Excel !

Néanmoins une cellule vide se créée au milieu de ma liste et je ne sais pas pour quelle raison.

Je met en pièce jointe le fichier Excel pour que vous puissiez voir le problème.

9test.xlsm (19.44 Ko)

A quoi correspondent les valeurs i = 2 et j = 4

On définit la variable tablo ainsi :
tablo = Range("D3").CurrentRegion

C'est donc une variable qui contient le tableau D3:R12

Sa première ligne contient les titres : "LIste 1", Liste 2 etc. La boucle des lignes doit donc partir de i =2

Et la boucle des colonnes, si on veut toutes les examiner doit partir à la première colonne de tablo, soit j = 1.

C'était une erreur de la faire partir de j= 4 : il faut considérer la variable tablo et non pas le tabeau de la feuille de calcul. Mea culpa !

Néanmoins une cellule vide se créée au milieu de ma liste

Ton tableau contient des cellules vides.

Donc ta variable tablo contiendra aussi des valeursvides, et ton dico en contiendra une également.

Pour éviter ça, tu dois poser une condition sur les valeurs que tu envoies dans le dico :

    For i = 3 To UBound(tablo, 1)           'on passe toutes les données de la variable tablo
        For j = 1 To UBound(tablo, 2)
            If tablo(i, j) <> "" Then
                dico(tablo(i, j)) = ""          'on les envoie dans le dictionnaire qui la conservera
            End If                               'sans doublon
        Next j
    Next i

OK ?

Bye !

bonsoir

une contribution pour les "Non VBA" dans le cadre de l'exemple avec doublon triés

=CAR(PETITE.VALEUR(SI(FREQUENCE(SIERREUR(CODE(D$3:O$10);"");LIGNE($65:$90))>0;LIGNE($65:$90);"");LIGNE(A1)))

fonction matricielle

cordialement

Tout marche parfaitement, merci beaucoup !!

Rechercher des sujets similaires à "conversion listes seule"