Copier Coller valeur cellule si correspondance + changement cellule

Bonjour à tous,

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…) :

Sub FiltreChapDate(CodeArticle, cible)

Sheets("Feuil1").Select
ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=2, Criterial:=CodeArticle
Range("D6:D100").Select
Selection.Copy
Sheets("Feuil2").Select
Range(cible).Select
Selection.PasteSpecial Paste:=x1PasteValues, Operation:=x1None, SkiBlanks:=False, Traspose:=False
ActiveSheet.ListObjects("B5:F100").Range.AutoFilter Field:=2

End Sub

Sub Principal()

FiltreChapDate "article1", "A5"
FiltreChapDate "article2", "G5"

End Sub

Est-ce que quelqu’un aurait une solution ?

Merci d’avance ! :grin:
exemple pour macro.xlsm (17,1 Ko)

Bonjour

Ci-joint ma proposition
Onglet « Feuil1 » cliques sur le bouton « Traitement »
Onglet « Feuil2 » constates le résultat
Fais moi un retour

exemple pour macro.xlsm (27,7 Ko)

Merci pour ton aide.

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.

2eme exemple macro.xlsx (19,0 Ko)

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

Il n’est pas possible de faire sans qu’ils soient tous sur la même ligne ?

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

D’accord pardon je pensais que ça allait suffire et c’était pour que ça soit moins long.

Mais voici un exemple qui se rapproche parfaitement à mon dossier final.

Le voici :
2eme exemple macro.xlsx (52,3 Ko)

Encore désolé, et merci beaucoup pour l’aide.

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

2eme exemple macro.xlsm (27,2 Ko)

Je te joint ton dernier fichier adapté à ma présentation
Testes le et dis moi

2eme exemple macro (1).xlsm (64,2 Ko)

Bonjour

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

Fais des essais et dis moi

2eme exemple macro (2).xlsm (62,6 Ko)

Bonjour,

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.

Bonjour

Merci pour ce retour

« 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."

Après 2 exécutions l’état du premier tableau :

Son code article est toujours présent
Et bien sur avec mon fichier transmis

Réalises des tests avec ce fichier et non un autre

L’entête « N° » se supprime sur tous les tableau à partir du tableau en B26, exemple d’un des tableaux :

Capture d’écran 2023-11-20 151043

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é.

article6 est bien présent
Qu’est ce qui ne va pas
Désolé je ne comprends pas le PB

J’ai peut-être mal expliqué désolé. Je parle des en-têtes suivantes :

Capture d’écran 2023-11-20 153610

Oui petite coquille dans le code
Mille excuses
Testes ce fichier et dis moi

2eme exemple macro (2).xlsm (62,6 Ko)

Ca marche parfaitement, merci beaucoup !

Parfait parfait
Bon usage et au plaisir