Regrouper des lignes d'un tableau Excel / macro VBA

Bonjour,

Je possède un tableau Excel dont j'aimerais comprimer des lignes :

Voici ce tableau :

ABCDEFGHIJK
1TypedeasourcepipeDestinationVolume totalIntitulé de l'opération
2TR'04:00'04:20R075F34598TRANSFERT 75 VERS 80
3TR'05:20'08:25R076F34510145EXP 34"
4TR'08:25'16:25R079F34528040EXP 34"
5TR'16:25'18:15R075F3456025EXP 34"
6TR'20:30'20:45R075F345102TRANSFERT 75 VERS 83
7RE'00:00'03:55CIMR08023062DN ALASKA EN COURS
8RE'00:00'03:55CIMR0805ENTREE ADDITIF ALASKA
9RE'03:55'19:30CIMR08368915DN ALASKA EN COURS
10RE'03:55'19:30CIMR0835ENTREE ADDITIF ALASKA
11RE'04:00'04:20CIMR08098TRANSFERT 75 VERS 80
12RE'06:44'16:59CIMR0821550Déchargement-camion brut du 19.01.2022
13RE'19:30'00:00CIMR08213952DN ALASKA EN COURS
14RE'19:30'00:00CIMR0821ENTREE ADDITIF ALASKA
15RE'20:30'20:45CIMR083102TRANSFERT 75 VERS 83

Je m'explique :

J'aimerais par une macro que lorsqu'il y a détection d'un même volume, et dont le premier volume détecté soit sur une ligne TR, exemple ligne 2 et ligne 11 avec le volume 98, la destination de la ligne 11 (ici R080) soit mise dans la ligne 2 et que la ligne 11 disparaisse du tableau (car elle constitue maintenant un doublon avec la ligne 2).
Et ainsi de suite pour les autres volume identiques, le cas de la ligne 6 et la ligne 15 avec le volume 102. (J'aimerais que la destination ici R083 soit mise dans la ligne 6).

Attention, les lignes 8 et 10 possèdent bien le même volume (5) mais ne doivent pas être prises en compte car le type est RE (et pas TR).

Ainsi le nouveau tableau que je souhaite obtenir serait (ici fait à la main) :

Les 2 lignes ont été supprimées.

ABCDEFGHIJK
1TypedeasourcepipeDestinationVolume totalIntitulé de l'opération
2TR'04:00'04:20R075F345R08098TRANSFERT 75 VERS 80
3TR'05:20'08:25R076F34510145EXP 34"
4TR'08:25'16:25R079F34528040EXP 34"
5TR'16:25'18:15R075F3456025EXP 34"
6TR'20:30'20:45R075F345R083102TRANSFERT 75 VERS 83
7RE'00:00'03:55CIMR08023062DN ALASKA EN COURS
8RE'00:00'03:55CIMR0805ENTREE ADDITIF ALASKA
9RE'03:55'19:30CIMR08368915DN ALASKA EN COURS
10RE'03:55'19:30CIMR0835ENTREE ADDITIF ALASKA
11RE'06:44'16:59CIMR0821550Déchargement-camion brut du 19.01.2022
12RE'19:30'00:00CIMR08213952DN ALASKA EN COURS
13RE'19:30'00:00CIMR0821ENTREE ADDITIF ALASKA

Pouvez-vous m'aider à créer une macro qui pourrait faire ceci ?

Merci beaucoup pour votre aide.

Amicalement,

Zanys

Bonjour

Joindre le fichier nous aurait simplifié la vie. Voici malgré tout une proposition

5zanis-2.xlsm (20.65 Ko)

Merci beaucoup. Effectivement, j'aurais dut joindre le fichier, désolé.

De plus, ca fonctionne très bien dans votre fichier. Merci.

Par contre, quand je copie le code dans mon fichier, cela ne fonctionne plus.

image

Je vous donne mon fichier en pièce jointe.

Bonsoir

Vu le bazar dans ton code c'est normal que ça ne fonctionne pas.

Si je trouve un peu de temps je mettrai des commentaire dans mon code. Pour le moment voici une version opérationnelle, du moins sur mon excel 2010.

Bonjour,

Merci beaucoup ! Cela fonctionne très bien.

Oui je reconnais que c'est "un peu" le bazar dans mon code ;) Je débute et je me suis fait aider de l'enregistreur de macro.

En tout cas, c'est exactement ce que je souhaitais du point de vue du résultat ! Un grand merci pour le temps passé !

Je vais étudier chaque ligne de code.

Bonne journée.

Ah il manque juste le tri par Type "TR" puis "TE", et par horaire de début "colonne B", comme je l'avais mis il me semble dans mon code de départ, mais ça je devrais y arriver à le remettre :)

Un grand merci

J'ai fait quelques tests.

en fait, comme le tri par type "TR" et "RE" n'est plus apparent, et que la détection du doublon de volume doit se faire d'abord si il rencontre la première valeur sur une ligne "TR", le résultat n'est plus correct. Je vais rajouter le tri par type et par heure et je pense que cela va fonctionner.

Dans l'exemple joint, la première ligne RE de l'onglet Tri ne devrait pas apparaitre.

Et devrait apparaitre à la place la ligne :

TR'14:15'14:40R075R082487TRANSFERT 75 VERS 82

Ah non, c'est peut être plus compliqué que ça... même en rajoutant le tri par type et par heure avant l'appel de la procédure compiletableau(), le résultat n'est pas bon. Je vais chercher de mon coté...

Et comme ça?

Je suis désolé mais non ce n'est pas bon. Les TR doivent se retrouver en haut et les RE en bas.

C'est à dire que le premier TR rencontré dans le tableau devrait etre R075

TR'04:00'04:20R075 98 TRANSFERT 75 VERS 80

et du coup la ligne RE :

RE'04:00'04:20CIMR08098TRANSFERT 75 VERS 80

devrait disparaitre.

Ce sont des transferts de bac. Donc le bac d'origine est le R075 et le bac de destination (RE pour reception) est le R080

On devrait obtenir la ligne :

TR'04:00'04:20R075 R08098 TRANSFERT 75 VERS 80

J'avoue que ce n'est sans doute pas très clair

Voici un exemple issu d'un ancien fichier qui fonctionne très bien.

Je souhaiterais le meme résultat dans votre fichier a vous.

Vous voyez qu'il y a un transfert (TR) du bac R075 vers le bac R079 et tout est regroupé au final sur une même ligne avec le code TR en type

Il faut que les lignes avec le type TR s'affiche en premier et ensuite les lignes RE. Avec un tri par horaire de début.

Je vous donne le fichier que je recois par mail et dont je copie la totalité de l'onglet dans le premier onglet de mon fichier

Si l'on reste sur le meme exemple de valeurs fournies dans votre fichier dernièrement envoyé, je souhaite avoir exactement le même résultat que dans le 2eme tableau de mon premier post.

Et comme ça?

Alors là, je dis chapeau !!!!
C'est exactement ce que je voulais !

Je vais étudier chaque ligne avec attention.

Un très grand MERCI !!!

Il n'y a à priori rien de très compliqué mais si vous avez des questions n'hésitez pas.

Cordialement

Je me permets de revenir sur le sujet...

Je voudrais ajouter un petit plus...

J'aimerais que lorsque je fais un copier coller normal d'une des lignes de l'onglet Tri (par exemple la ligne 3 dans l'exemple joint vers la ligne 10), le contenu des cellules contenant les heures de début et de fin contiennent réellement '03:05 et pas 27/01/2022 03:05:00

Bonsoir

Je ne vois pas ce que serait un copier coller anormal. Je ne vois pas non plus l'utilité de recopier une ligne quelques ligne plus bas. D'autant que tout sera supprimé à la prochaine exécution de la macro.

Bonjour,

oui pardon, anormal n'était pas le bon mot.

Je voulais dire un copier coller classique (pas en valeur, ou formules ou autres). Un controle C + controle V.

Non en fait, le but au final est de pouvoir recopier à la main (controle C, controle V), les lignes de l'onglet Tri dans un autre programme qui lui ne comprend que les heures avec un apostrophe devant et de la forme 'xx:yy

La copie en dessous dans mon fichier joint c'était pour l'exemple. Oubliez cette ligne 10 copiée.

Je souhaite que le contenu de la cellule horaire (quand on clique dans la cellule) soit réellement 'xx:yy et pas avec la date avant (qui n'est pas comprise par mon programme final)

C'est bon, j'ai réussi à trouver la solution avec la fonction TEXTE tout bêtement

Merci encore.

Cordialement

Rechercher des sujets similaires à "regrouper lignes tableau macro vba"