J’ai un problème avec une macro. J’ai mis en pièce jointe le dossier Excel pour mieux comprendre.
Je souhaite copier les colonnes suivantes de la feuille « Feuil1 » : Date Livraison Prévu, No Cde Client et Quantité Commandé.
Pour les coller dans la feuille « Feuil2 » dans les tableaux correspondant aux articles (article 1 et article 2) et en prenant en compte que la date de livraison prévu, le numéro de commande et la quantité commandé ne sont pas rangé de la même manière.
Pour le moment j’ai fait cette macro pour copier coller suivant l’article et que pour la date (reprise d’une que j’avais faite au paravent et qui marchait, mais j’ai VBA m’indique une erreur sur la 2ème ligne : ActiveSheet.ListObjects…) :
Mais je n’arrive pas a l’adapter à mon dossier, peut être car mon exemple était trop simple par rapport à ce que je veux réellement. Si tu as la possibilité de revoir avec ce deuxième exemple qui sera plus réaliste s’il te plait. Je pense que ce n’est pas exactement le même code sauf si j’ai mal compris ton premier code.
Il faut mettre tous tes tableaux les uns à côté des autres avec leur premières lignes (ayant le code article) sur la ligne 1
Celà devrait fonctionner
Essaies et dis moi
Le code a été conçu dans cet esprit sur la base du fichier que tu as fourni
Il est indispensable lorque tu demandes un soutien pour une automatisation de donner son context précis qui doit rester celui effectif pour que les solutions proposées donnent pleinement satisfaction
Ma solution fonctionne parfaitement avec les tableaux de ton premier fichier
Ceux-ci ont été réalisés l’un à côté de l’autre à partir de la ligne 1
Fort de ce contexte ma proposition
Si celui-ci n’est pas conforme à ceux du fichier final il faut reconsidérer ta copie initiale pour nous fournir un clone au plus proche de celui-ci afin d’apporter la réponse la plus adaptée
Tout automatisation est tributaire de la structure dans laquelle elle doit s’exécuter
Celle-ci ne doit en aucun cas être modifiée au risque de l’hypothequer
Dans cet esprit fourni nous un exemple au plus proche de la situation finale que devra gérer notre proposition
Dans l’attente de te lire
Merci pour ce nouveau fichier
Cette présentation sera beaucoup plus difficile à gérer que celle que je te propose (même lignes et côte à côte)
Il faut savoir que la détermination de la première ligne libre pour un tableau se réalise sur la base de la dernière donnée d’une colonne détectée par une ligne de commande
Or celle-ci sera impossible avec les tableaux en dessous des uns des autres
C’est donc avec l’alignement de ceux-ci les uns à côté des autres que cette détermination automatique est réalisable car chacun occupe ses propres colonnes
Ce ciblage est nécessaire pour intégrer les données à la suite les unes des autre et aussi en début de traitement de les vider
Déterminer l’emplacement du tableau d’un CODE ARTICLE reste tout à fait faisable mais sa première ligne disponible pour intégrer de nouvelles données risque d’être compliqué compte tenu de cette présentation
De plus le nombre de lignes disponibles à cet effet sera bridé
Toutes ces difficultés n’existeront pas avec ma présentation (côte à côte sur la même ligne)
Pour finir ma solution permet autant de lignes et de tableaux que nécessaire sans aucune adaptation du traitement
Je te joint le fichier avec 4 tableaux que tu m’a transmis avec ta disposition (2 tableaux sur la même ligne au dessous de 2 tableaux sur la même ligne) que j’ai modifié avec ma disposition (les 4 tableaux côte à côte sur la même ligne)
J’ai un peu adapté le traitement car des points de structure ont été modifiés
Onglet « Feuil1 » données à partir de la colonne B au lieu de la colonne A
Début des données du tableau en ligne 5 au lieu de ligne 1
Onglet « Feuil2 » première ligne des tableaux en ligne 8 au lieu de ligne 4
Fais un tests puis donnes moi tes impressions
Tu peux rajouter un tableau à l’identique des autres avec un nouveau CODE ARTICLE puis en onglet « Feuil1 » des enregistrements de celui-ci et réeffectuer un nouveau traitement ainsi de constater son remplissage des données qui le concernent
Après étude de ton dernier fichier en maintenant la présentation souhaitée j’ai finalement mis en place un traitement adapté au remplissage des tableaux onglet « Feui2 » sur la base des données de l’onglet « Feuil1 »
Celui-ci est opérationnel sous les conditions suivante
A partir de la ligne 8 et de la colonne B toutes les 21 lignes présence de 5 tableaux maximum côte à côte séparés d’une colonne et pour chaque tableau de sa ligne à entête : DATE-TYPE-N°-QUANTITE-PREVISION
Chacun d’eux aura en dessous de sa ligne à entête 16 lignes destinées à l’intégration de leurs données
Cette configuration devra être respectées pour tous les tableaux dans cet onglet
Le code article se trouvera pour chacun 3 lignes au dessus de la ligne à entête en deuxième colonne comme présenté dans ce fichier
Merci la macro marche dans mon document. Seulement il y a deux petits problèmes : dans la seconde feuille à partir de la deuxième ligne de tableau tous les « N° » se supprime (s’il n’est pas possible de régler se problème ce n’est pas grave) et dans cette même feuille dans le premier tableau, le code article se supprime.
« dans la seconde feuille à partir de la deuxième ligne de tableau tous les « N° » se supprime »
C’est à dire ???
Le traitement nettoie tous les tableaux à partir de la ligne au dessous de celle de leur entête et de les réalimenter en fonction des données en onglet « Feuil1 »
N’est ce pas ce qui doit être réalisé ???
Merci de me dire
'et dans cette même feuille dans le premier tableau, le code article se supprime."
L’entête « N° » se supprime sur tous les tableau à partir du tableau en B26, exemple d’un des tableaux :
Si c’est bien ce qu’il doit être réalisé. Mais si le problème des « N° » est difficile à résoudre, il est possible d’enlever le fait qu’au lancement de la macro les tableaux soient nettoyer et je pourrais rajouter une macro supprimant les valeurs à supprimer dans la seconde feuille (macro que je sais faire sans problème).
Ah oui effectivement le code article est toujours présent après avoir essayé.