Transposition et collage données - Excel 2013

Bonjour Le Forum

Je me présente Sonia, c'est la première fois que je viens sur ce forum. Je me suis inscrite afin de trouver une aide précieuse pour m'aider à avancer sur mon sujet de stage.
J'ai essayé de me débrouiller seule mais je suis tombée sur un problème auquel la maîtrise du VBA est nécessaire. Je ne sais pas du tout comment il faut faire.

J'aimerai vous expliquer mon problème et comment je souhaite que cela fonctionne afin que vous y voyez plus clair.

J'aimerai que le code VBA me fasse le nombre de boucle nécessaire en fonction du nombre de date différente dans la l'onglet Extraction en Colonne I.

1ère boucle de démarrage :
1ère étape : La macro va trier les données en fonction des dates de la plus ancienne saisie à la plus récente de l'onglet "Extraction" en colonne I.

2ème étape : Une fois triées, elle va faire une recherche V des données de la colonne C de l'onglet Données Analyse Charge par rapport aux données de l'onglet Paramètre en K, et copier coller les valeurs de la colonne L (onglet Paramètre) vers Colonne D (onglet Données Analyse Charge).

3ème étape : Sur (onglet Extraction), en colonne I prendre la première date saisie et la coller en B15 (onglet Data).

4ème étape : Une fois le collage en B15 Faite, il va prendre la valeur de la date en B16 (onglet Data) copier et coller en colonne A (démarrage en A2, onglet Transfert & Retard),

Puis en B (démarrage en B2, onglet Transfert & Retard) la charge à transférer qui se trouve en G (onglet Données Analyse Charge), la cellule à prendre se retrouve en fonction de la croix sur la colonne V du même onglet. S'il identifie une croix, alors il va sur la même ligne en G, copie et colle la valeur sur la colonne B (démarrage en B2, onglet Transfert & Retard)

Puis en C (démarrage en C2, onglet Transfert & Retard), le retard qui est égal au cumul de la charge en colonne F (onglet Données Analyse Charge),seulement les valeurs dont les dates (colonne J, onglet Données Analyse Charge) sont entre la date la plus ancienne (B18, onglet Data) et la date de saisie en (B18, onglet Data).

2ème boucle et jusqu`à la fin :
Quand il démarrera la boucle 2, la seule chose qui différenciera de la 1ère boucle c'est qu'au moment de la recherche V, il collera les données de la colonne M (onglet Paramètre) vers Colonne D (onglet Données Analyse Charge) au lieu des données en de la colonne L.

Autre chose : Il ne prendra pas la date de saisie suivante en colonne I (onglet Extraction) si elle est identique. Exemple, si à ma première boucle j'ai démarré avec la date du 12.01.2021, si la date suivante est au 12.01.2021, alors je passe à la suivante). Si j'ai 3 lignes avec une première date au 12.01.2021, puis celle du dessous avec une date en 12.01.2021, puis la suivante au 13.01.2021) il passera directement sur la date du 13.01.2021.

Je ne sais pas si mes explications sont claires, mais espère que quelqu'un du forum pourra comprendre et m'aider sur cette problématique.

Je vous remercie par avance pour votre aide précieuse !!

J'ai essayé de le faire avec l'enregistrement macro mais cela ne fonctionne pas tout à fait, je ne sais pas faire de boucle, je ne sais pas cumuler la charge en fonction des valeurs de dates.

Sonia2020
18test-1.xlsm (243.34 Ko)

Salut Sonia,

Ta demande n’est effectivement pas des plus claires et ton fichier est assez emberlificoté. Mais je veux bien tenter de t’aider.

Tu poses beaucoup trop de questions à la fois, tenons-nous en pour commencer à tes deux premières étapes.

Bien que tu commences l’explication de ton étape 2 par ‘’une fois triées’’ – sous-entendu une fois le tri de l’étape 1 effectué – je ne vois pas l’utilité de ce tri pour cette étape 2.

Pour cette étape 2, tu sembles simplement vouloir remplacer les formules en place dans la colonne C de l’onglet ‘’Données Analyse Charge’’ par les mêmes valeurs, mais à trouver par macro : est-ce bien cela ?

Amicalement.

Bonjour Yvouille,

Merci beaucoup de bien vouloir m'aider. J'étais désespérée.

Bien que tu commences l’explication de ton étape 2 par ‘’une fois triées’’ – sous-entendu une fois le tri de l’étape 1 effectué – je ne vois pas l’utilité de ce tri pour cette étape 2.

Je suis obligée de trier cette colonne car les personnes qui utiliseront cet outil feront un collage de données d'extraction et les dates de saisies ne seront pas trier. Et le démarrage de l'analyse devra commencer par la première date de saisie de notre commande, soit la date la plus ancienne.

Pour cette étape 2, tu sembles simplement vouloir remplacer les formules en place dans la colonne C de l’onglet ‘’Données Analyse Charge’’ par les mêmes valeurs, mais à trouver par macro : est-ce bien cela ?

Oui c'est exactement cela. La colonne L onglet Paramètre c'est la capacité de départ.



Je vais essayer de vous réexpliquer ce que je recherche :

Au total 1 boucle à faire.

Au premier passage de la boucle, voici ce que le code devra faire :

1ère étape : Trier les données par ordre de la plus ancienne à la plus récente (Colonne I, onglet Extraction). Je suis obligé de trier car il y aura une extraction sur cette onglet et les dates de saisie ne seront pas classées dans l'ordre. Car le premier passage démarrera avec la première date de saisie

2ème étape : Sur la colonne D (onglet Données Analyse Charge), faire une recherche V des valeurs de la colonne C (onglet Données Analyse Charge) et copier coller les valeurs de la colonne L (onglet Paramètre) sur cette colonne D.

3ème étape : Sur l'onglet (Data) en B15, coller la première date saisie (donc la plus ancienne) qui se trouve (onglet Extraction en colonne I).

4ème étape : Une fois faite, sur (onglet Transfert & Retard) copier coller les valeurs suivantes :
En colonne A (démarrage en A2), date de saisie US (onglet Data, cellule B16)

En colonne B (démarrage en B2), valeur de la charge à transférer qui se trouve (onglet Données Analyse Charge, colonne G). Pour trouver la valeur, il suffit d'aller sur la colonne W (onglet Données Analyse Charge), s'il y a une croix, alors aller sur la même ligne et prendre la valeur en G. Celle-ci sera la valeur à copier coller.

En colonne C (démarrage en C2), sera le retard de la charge planifiée. La valeur est obtenue en fonction des conditions de la colonne F et W (onglet Données Analyse Charge). Regarder la colonne W, s'il y a une croix alors aller sur la colonne F de cette même ligne. Si la valeur est supérieure à 0. Alors la valeur à mettre en colonne C (onglet Transfert & Retard) sera 0. Si inférieure ou égale à 0, alors il faut faire une recherche V de la valeur se trouvant en colonne C (onglet Données Analyse Charge), mais faire cette recherche V sur la valeur en ligne+1 en partant de la ligne où il y a la croix.
Exemple : si ma croix se trouve en cellule W10, la valeur à utiliser pour la recherche V n'est pas la valeur en C10 mais prendre la valeur en dessous soit C11 pour la recherche V.
Donc, la valeur à coller sur ma colonne C (Onglet Transfert & Retard) sera Le résultat trouvée en colonne L (onglet Paramètre) en fonction de la valeur cherchée en C (onglet Données Analyse Charge).

Puis pour le 2ème passage jusqu'à le dernier passage :

1ère étape : copier les valeurs de la colonne I (Onglet Données Analyse Charge) sur la colonne M (Onglet Paramètre) via une recherche V (la valeur a recherchée se fait en fonction de la colonne K onglet Paramètre), il faudra faire un copier coller d'un onglet à l'autre via une fonction recherche V (exemple de ma première cellule que j'ai faite avec une formule pour que vous voyez ce que je veux : =SIERREUR(RECHERCHEV(K2;'Données Analyse Charge'!C:I;7;FAUX);0)), ce que j'ai mis en formule sur cet onglet paramètre en colonne M c'est a faire en VBA.

2ème étape : Pour les valeurs de la colonne D (Onglet Données Analyse Charge) Au lieu de prendre les valeurs en colonne L comme au premier passage (onglet Paramètre) via une recherche V en fonction de la colonne C (Onglet Données Analyse Charge) , il faut prendre les valeurs en colonne M "qui représente la nouvelle capa" (onglet Paramètre) après déversement de la charge du jour précédent.

3ème étape : Copier en B15 (onglet Data) la valeur en I (onglet Extraction), faire la même chose qu'au premier passage de la boucle mais prendre la date suivante (si la date suivante est identique à la précédente (différente de la cellule B15 Onglet Data) alors ne rien faire et continuer à aller vers la suivante tant qu'elle n'est pas différente. Si différente alors copier coller en B15 onglet Data cette nouvelle date).

4ème étape : Sur (onglet Transfert & Retard)
En colonne A, à la suite copier coller la valeur de la cellule B16 (onglet Data)

En colonne B à la suite, valeur de la charge à transférer qui se trouve (onglet Données Analyse Charge, colonne G). Pour trouver la valeur, il suffit d'aller sur la colonne V (onglet Données Analyse Charge), s'il y a une croix, alors aller sur la même ligne et prendre la valeur en G. La valeur à copier coller sera la valeur concernée en G (onglet Données Analyse Charge) + l'ancienne valeur de charge à transférer collée sur le précédent passage (elle se trouve dans l'onglet Transfert & Retard, colonne B). Exemple : Si à mon précédent passage, j'ai eu à 100 en colonne B, sur ce passage de traitement de la macro, je fais 100+la nouvelle valeur de ce passage. J'aurai donc la valeur de transfert de charge précédente + la nouvelle.

En colonne C (onglet Transfert & Retard), faire la même chose que le 1er passage, mais si la valeur est égale ou inférieure à 0; sur ce deuxième passage Il faut additionner à la valeur trouvée en L (onglet Paramètre) à travers la recherche V + la précédente valeur du retard de la charge planifiée trouvée précédemment (valeur mise sur la colonne C (onglet Transfert & Retard)).
Exemple : Si je suis inférieure ou égale à 0 en colonne F sur ma cellule concernée, alors je fais ma recherche V de ma colonne C (onglet Données Analyse Charge) (soit ligne+1 de la colonne C) pour avoir le résultat de ma colonne L (onglet Paramètre) et j'additionne cette valeur trouvée avec la valeur de retard de la charge planifiée trouvée lors de mon précédent passage de la boucle.

Une fois ce 2ème passage fini, je fais de même pour les autres jusqu'à la fin
Si j'ai 6 dates différentes dans ma colonne I (Onglet Paramètre) alors il y aura 6 passages à faire sur cette boucle..

J'espère que mes explications sont plus claires et plus précises que ma première explication du problème. Sur ce fichier, je vous ai mis le résultat attendu aussi (voir onglet transfert & Retard)

J'espère que cela soit possible pour vous de le faire. J'ai fait de mon maximum pour être clair. S'il vous reste des interrogations, n'hésitez pas à m'en faire part.

Je vous remercie par avance de votre aide précieuse

Sonia
22test-v1.xlsm (229.73 Ko)

En colonne B (démarrage en B2), valeur de la charge à transférer qui se trouve (onglet Données Analyse Charge, colonne G). Pour trouver la valeur, il suffit d'aller sur la colonne W (onglet Données Analyse Charge), s'il y a une croix, alors aller sur la même ligne et prendre la valeur en G. Celle-ci sera la valeur à copier coller.

c'est colonne V et non colonne W.

Sonia

Bonjour Yvouille,

Je viens de voir une erreur sur le résultat que j'ai mis, il y a 20h de trop sur la charge à transférer. Ci-joint la nouvelle modification.

Je vous ai fait une explication aussi de l'exemple pour savoir comment et pourquoi j'ai tel ou tel chiffre de charge à transféré et heures de retard.

Merci pour votre aide

Sonia

12test-v2.xlsm (239.79 Ko)

Salut Sonia,

Tu as tout d'abord fourni un fichier modèle avec quelques macros générées par l'enregistreur de macros. Comme ça sentait bon l'amateurisme débutant, je me suis décidé à tenter de t'aider avec mes moyens d'amateur un peu plus avancé.

Mais comme tu avais réellement exagéré le nombre de questions posées en une seule fois ainsi que les explications sans fin qui donnent juste l'envie de tourner la page, j'ai essayé de calmer ton ardeur. Rien n'y fait, tu en ajoutes deux fois plus cette fois-ci - enfin, ces fois-ci devrais-je plutôt dire - et c'est vraiment en me forçant un peu que j'ai décidé d'attaquer un début de code afin de répondre à tes demandes par rapport aux étapes 1 et 2 qui sont maintenant assez claires et de passer à l'étape 3 pour avancer.

Mais au moment de vouloir aller créer ma macro, je me rends compte que tu as une macro déjà en place dans le nouveau fichier fourni et ça semble du très bon, du très haut niveau. Si tu as donc déjà une macro qui fait toute une partie du travail, je ne suis pas tenté de venir faire plus ou moins le même travail à côté. Pourquoi ne demandes-tu pas à la personne qui t'a fourni ce premier code de le corriger/modifier ?

Je t'avoue ne pas avoir tenté de comprendre ce que faisait ce code.

Alors ? Peux-tu me donner une explication en moins de 200 lignes ?

Bonjour Yvouille

Le jour où j'avais fait ma requête ici, je suis parti de rien. Puis, le jour suivant une personne d'un autre forum m'avait aidée et constituée la macro que vous voyez dans le fichier.

Ensuite, vous m'avez gentillement répondu à mon poste ici en me posant les deux questions.

J'ai répondu à vos questions et ajoutée d'autres informations pour que ce soit plus clair vu que cela est assez difficile à comprendre.

J'ai mis exprès le fichier avec la macro que la personne d'un autre forum m'a fourni afin que vous puissiez peut être démarrer d'une page non vierge. Hélas la personne qui a fait la macro n'arrive toujours pas à trouver le résultat recherché. Et peut être d'un œil expert comme vous, vous pourrez peut être trouver ce qui cloche sur le fait de ne pas avoir le résultat fourni.

Je comprends que cela vous semble alambiqué de voir une macro comme celle ci arriver sur un autre fichier. Mais j'essaye juste de trouver un moyen de régler un problème auquel je n'ai pas les compétences et j'essaye de mettre toutes mes chances pour y arriver et réussir mon stage.

Si vous ne voulez ou ne pouvez pas m'aider, je serai compréhensible et ne vous en voudrez en aucun cas, vous êtes au moins le seul ici à m'avoir répondu et c'est déjà gentil de votre part.

merci par avance de votrz réponse

Sonia

Ce n'est pas très correct de "multi-poster" sur plusieurs Forums : on est alors deux ou plusieurs à faire le même boulot - dont certains inutilement Ou alors il faut l'annoncer clairement.

Je n'ai pas trop l'envie de tenter de décortiquer la macro d'un autre, surtout si elle est si longue. Ce n'est pas mon style, je ne sais pas ce qui fonctionne déjà, ce qui serait à corriger, etc.

Si vraiment tout ce que tu dis est vrai, joue cartes sur table. Indique que tu as reçu de l'aide pour ton fichier mais que ça ne joue pas. Indique avec précision ce qui passe déjà correctement et où ça bloque. Et fait très attention de donner l'envie de te lire, ne demande pas 36 solutions d'un coup. En voyant une demande de 200 lignes, le membre passe vite à autre chose.

Mais je suis quand même un peu septique que le gars qui a réussi à pondre ton code en l'état actuel n'arrive pas à résoudre ton problème !!!

De mon côté, je laisse tomber, ayant l'impression d'avoir été un peu blousé.

Bonne continuation.

Rechercher des sujets similaires à "transposition collage donnees 2013"