Suppression doubleau dans un tableau dynamique

Bonjour

J'ai crée un tableau dont le but est d'associer une application à un code. Les lignes correspondent aux codes et elles sont triés par application (Les applications sont en colonnes).

Donc pour créer ce tableau

1 j'ai crée un tableau contenant toutes les applications (tab_app)

2 j'ai cree un tableau à n(=UBOUND(tab_app)) dimension associant chaque code à une application

Sauf que j'ai un soucis pour supprimer les doublons

Qui peux m'aider ?

15appcode.xlsm (34.27 Ko)

Bonjour,

Faire un tableau comportant Feuille 1 les 10 premières lignes + 2 lignes de codes A (à choisir au hasard)

En feuille 2 faire un tableau montrant le résultat attendu.

Merci

A+

Salut, tu sélectionne intégralement feuil2 puis tu vas dans données. Dans le bandeau tu clic sur supprimer les doublons. Dans ton exemple, il ne conserve que 55 valeurs uniques et supprime 203 doublons.

8appcode.xlsm (26.42 Ko)

Mèrci â tous

En fait ce fichier est un extrait d'un autre fichier et j'ai besoin de faire un code vba

La feuille 2 est utilisé ici en tant que feuille test pour voir ce que retourne le tableau

Mon but est de créer un tableau qui contient tout les codes de la feuille 1 classe par application ( application en colonne )

Voici l'instruction que j'ai utilisé:

] 'suppression des elements en double dans le tableau

For p = 0 To UBound(tab_app) - 1

For j = p + 1 To UBound(tab_app)

If tab_app(p) = tab_app(j) Then

tab_app(j) = tab_app(j + 1) ' ' C'est cette ligne qui pose pb visiblement, mais je vois pas pk il me met "indice n'appartient pas à la selection'

End If

Next j

Next p

Moi ton code me branche pas : Ce n'est pas une critique ! Mais ça ne m'éclaire pas plus que la présentation de tes données...

Relire ma réponse précédente et faire un modèle réduit comme demandé, sinon je ne vais pas m'amuser à coder sur un problème que je ne comprend pas.

A+

Je comprend tkt pas je vais pas insister

Mais es que tu pourrai au moins m'expliquer comment faire afficher un tableau dynamique de (une ou deux colonne) via un MSGBOX ?

Un msgbox renvoie du texte pas un tableau !

Bonjour à tous

@galopin: Je reprend mes explications car je bloque toujours...

1 Je souhaite transformer la colonne app(cf feuille excel) en un tableau à une dimension, que j'ai appellé tab_app dans mon code

2 Ensuite créer un autre tableau qui associe les codes avec les applications(app)

Exemple: pour l'application DSI: celle ci sera en colonne en 0 et tout les codes liés à l'application seront dans la meme colonne.

J'ai réussi à créer ces deux tableau mais je n'arrive pas à effacer les doublons et/ou cases vides de ces tableaux ce qui est un peu chiant pour l'affichage du MSGBOX de fin.

Merci de m'aider

10appcode2.xlsm (24.42 Ko)

Bonjour,

Tu fais des efforts louables pour "pisser" un code qui ne me sert à rien : Je ne vais pas m'amuser à décoder un code qui ne marche pas...

Je n'ai pas besoin que l'on me montre ce que je ne dois pas faire !

Reprends ma première réponse et donne moi un classeur avec seulement quelques lignes de données (une vingtaine de lignes devraient suffire.)

...et dans la 2ème feuille le résultat attendu.

Ça ne devrait pas être difficile vingt lignes ...ça fait 40 cellules :

Tu n'as pas besoin d'une macro pour me montrer le résultat que tu désires obtenir !

Et les codes qui n'ont pas d'App on en fait quoi ?

A+

Bonjour

Ci-joint le fichier simplifier.

La feuille " resultat attendue" montre le résultat que je cherche à obtenir.

Merci

9appcode2.xlsx (13.22 Ko)

Bonsoir,

Une solution en pièce jointe.

A+

12appcode-vg.xlsm (25.60 Ko)

Merci beaucoup @galopin il marche parfaitement.

Mais es que ce serait trop te demander de mettre des commentaires que je puisse comprendre ton code... ça m'aidera à progresser

Pfff... j'ai déjà passé une heure dessus ce matin ! Envolé ! j'ai fermé la fenêtre involontairement : YAPUKA recommencer.

C'est pas simple non plus vu le nombre de lignes de la macro...

Les variables i% et k% sont déclarées integer (% = As integer)

o est une variable Objet/Range pour parcourir les boucles For...Next

Dans la situation ou je l'utilise, Arr est un Array dynamique à une seule dimension. (en ligne)

Pour tester ce genre d'engin voici une courte démo : (à tester sur une feuille vide)

Sub test1()
Dim Arr
Arr = Split("Lundi Mardi Mercredi")
[A1].Resize(, UBound(Arr) + 1) = Arr
End Sub

Dico est un autre sorte Array un peu zarbi. (Les puristes vont pousser un Ho ! shocking... Mais on s'en fout ! IZONKA s'y coller !

Il faut comprendre ce Dico comme un array à une seule dimension. (en ligne)

A la différence des Array, il stocke des valeurs avec des index (appelés : key) qui sont des "strings", Comme un dictionnaire.

De plus, comme un dictionnaire, il n'autorise pas les doublons. Si tu tentes de lui refiler un index existant, il "le saute"

Application à la feuille 1 de ton classeur démo (pour lister tes App) :

Sub test()
Dim Arr, Dico, i%, k%, o
Worksheets(2).[A1].CurrentRegion.Clear
Set Dico = CreateObject("Scripting.Dictionary")
k = [B65000].End(xlUp).Row
For Each o In Range("B2:B" & k)
Dico(o.Value) = ""
Next
Worksheets(2).[A1].Resize(, Dico.Count) = Dico.keys
End Sub

Mais il ne se contente pas de stocker les index comme un Dictionnaire il est capable d'en donner la définition (pardon : la valeur ou le contenu.

Tout au long de mon parcours de cette colonne je stocke dans un caleçon long String toutes les valeurs en regard de cet index (key) (Celle-là... je pouvais pas la louper )

avec une expression un peu compliquée (dans la Sub Galopin) :

Dico(o.Value) = Dico(o.Value) & o.Offset(0, -1) & ":"

Appliqué à EDD le string était : "5004:5003:5002")

A chaque tour de cette première boucle le string s'allonge avec une valeur complémentaire en cas de doublon. (je te dis pas la taille du String pour "stock" ! Mais le dico est assez tolérant il accepte des Strings XXXL !

C'est ce string que je décode dans la boucle suivante :

Pour chaque Valeur du Dico je stocke dans Arr les valeurs répertoriées dans le dico en splitant le String de chaque .item.

Après YAPUKA mettre ça en colonne avec un petit coup de Resize...Transpose...

C'est plus clair ?

Euh... j'ai pas mieux !

A+

Rechercher des sujets similaires à "suppression doubleau tableau dynamique"