XL 2013 VBA - concatener selon critères

mmalzert

XLDnaute Occasionnel
Bonjour à tous,

Je cherche une formule qui permettrait de pallier à celle que j'ai fait dans l'exemple dans l'onglet "Traitement" colonne C. En effet mon tableau est dynamique et la source peut comporter un grand nombre de colonne.

J'ai décomposé les étapes afin d'arriver au résultat souhaité dans l'onglet "Pivot final".
Bien sur je suis preneur si vous avez des méthodes plus orthodoxes.

Merci pour votre aide.
 

Pièces jointes

  • equiv decaler 2.xlsx
    24.6 KB · Affichages: 32

chris

XLDnaute Barbatruc
Bonjour

Exemple peu clair : si tu nous disait clairement l'objectif ?

On peut faire des regroupement, éventuellement combiner les sources ou construire une synthèse à bas de LIREDONNEESTABCROISDYNAMIQUE mais là c'est trop flou...
 

mmalzert

XLDnaute Occasionnel
Bonjour Chris,

Mon TCD de l'onglet "traitement" est ici un exemple. Il ne fait que 3 colonnes.
Ma source m'amène à la colonne CB pour le seul mois de juillet. Je ne crois pas que ma formule en C5 soit l'idéal sur autant de colonnes.
SI(H5="";"";H$4)&SI(I5="";"";I$4)&SI(J5="";"";J$4)
Ca amenerait autant de si() que de colonnes et ca ne prendrait pas en compte le fait que le TCD est dynamique.

Cette formule doit déterminer une clé unique par ligne. L'objectif étant ensuite de comparer les tarifs de chaque clé unique et de voir si il y a des différences.
Dans l'exemple joint, onglet pivot final on voit qu'une clé unique est utilisé dans 2 voyages mais que le tarif diffère. C'est ça que je veux analyser.
 

chris

XLDnaute Barbatruc
Re

Ce n'est la formule qu'il faut optimiser mais la logique du traitement !

Il faudrait déjà faire une table de concordance des transporteur et des clés : ton onglet matrice serait à revoir.

Après on peut soit compléter la source avec des colonnes formulées, soit exploiter le TCD avec LIREDONNEESTABCROISDYNAMIQUE et pas des formules faites pour des plages.

<Coup de gueule> j'en ai un peu assez que les demandeurs filent des exemples brouillons, pas vraiment représentatifs... 9 fois sur 10 on propose une solution mais finalement faut recommencer parce qu'on n'avait pas toutes les données du problème... Un petit effort pour présenter le problème clairement et pas des bouts de solutions bricolées donnerait de meilleures résultats.</Coup de gueule>
 

gosselien

XLDnaute Barbatruc
<Coup de gueule> j'en ai un peu assez que les demandeurs filent des exemples brouillons, pas vraiment représentatifs... 9 fois sur 10 on propose une solution mais finalement faut recommencer parce qu'on n'avait pas toutes les données du problème... Un petit effort pour présenter le problème clairement et pas des bouts de solutions bricolées donnerait de meilleures résultats.</Coup de gueule>
Je plussoie !!!
Quand ce n'est pas une réponse du type

" je ne peux pas mettre mon fichier il est confidentiel" et-je-n'-ai-pas-pensé-à-faire-une-copie-anonymisée !!!
 

mmalzert

XLDnaute Occasionnel
Bonjour à tous les deux,

La remarque de Chris concernant la logique de traitement m'a fait réfléchir..
J'ai donc remis un fichier joint avec seulement l'onglet source "Data" dans lequel j'ai changé les noms. Mon fichier source fait état de plus de 11000 lignes sur le seul mois de juillet.
Une colonne supplémentaire répondra à mon besoin. Par contre je suppose que pour l'alimenter le plus simple et le moins lourd reste le VBA. Et là..

Il s'agit donc dans un premier temps de filtrer sur la colonne "expéditeur" puis ensuite de concaténer les expéditeur en fonction du voyage dans un seule cellule.

Je pourrais ensuite faire un TCD permettant de comparer les tarifs de voyages dont la clé est identique.
J'espère être plus clair cette fois ci et que mon fichier vous sierra d'avantage.

Merci pour votre aide.
 

Pièces jointes

  • VBA - Concatene selon 1 critère.xlsx
    24.9 KB · Affichages: 28

mmalzert

XLDnaute Occasionnel
Bonjour pierrejean,

Merci pour ton aide. C'est exactement ça. Par contre le filtre est nécessaire car il permettra que les éléments concatener soit dans le même ordre a chaque fois. Ainsi ça évitera d'avoir une clé différente pour deux mêmes expéditeurs.
Ex : PRI_UNIO & UNIO_PRI
A moins que la macro soit directement capable de ranger par odre alphabétique les éléments de concaténation.

Note : as-tu possibilité de prendre 2 minutes pour expliquer les principes de ta macro. J'étais parti sur une autre du forum qui n'utilisait pas du tout les mêmes caractéristiques.
 

chris

XLDnaute Barbatruc
Bonjour

Ces expéditeurs à concaténer sont-ils pré-définissables en fonction du ramasseur et/ou autre donnée ou ne peut-on les déterminer que par constat comme tu le fais ?

Edit : coucou PierreJean :) (je n'avais pas raffaichi)
 

mmalzert

XLDnaute Occasionnel
Re Chris,

Non ils ne sont pas définissables. Même si il y a des redondances dans les tournées (heureusement), il y aura toujours des nouveautés, rien que par le fait de l'ajout de nouveaux expéditeurs ou de contraintes du moment. Du coup toutes création de table serait plutôt certainement compliquée. A quoi penses-tu ?

Je suis en train de lire Ce lien n'existe plus pour commencer mais je peine...
 

mmalzert

XLDnaute Occasionnel
Il s'agit de la colonne N. En pièce jointe un nouveau fichier avec des données plus parlante et après avoir fait tourner la macro.
Encore une fois si vous voyez comment faire pour que ce soit plus "propre" je suis preneur.
 

Pièces jointes

  • VBA - Concatene selon 1 critère.xlsm
    49.2 KB · Affichages: 24

mmalzert

XLDnaute Occasionnel
Re

Voila avec le tri expéditeur (j'avais compris tri sur N° de voyage)
Et code commenté (si pas suffisamment clair ne pas hésiter à demander)

Re pierrejean,
Je ne vois pas de modification. As-tu mis le bon fichier ?

Re

Tu as mis 327 en rouge : les autres doivent toujours être à 200 ?

Si oui une simple MFC pour repérer + éventuellement un champ calculé en masquant les écarts nuls.

Sinon préciser la règle.

Oui en effet le prix doit être à 200. Les MeF pourraient passer mais je ne sais pas toujours moi meme quel montant est correct. Dans l'exemple ca reste simple.
Je suis en train de construire une BDD avec les tarifs constatés en vigueur. Cela me permettra d'avoir directement mes écarts. Cela reste un gros travail et ca prendra du temps. Je reviendrais vers vous si j'ai de nouvelles difficultés.
 

Discussions similaires

Statistiques des forums

Discussions
312 194
Messages
2 086 071
Membres
103 110
dernier inscrit
Privé