Boucle copié-colle avec condition de valeur de cellule

Fermé
Reask29 - 23 janv. 2019 à 13:46
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 28 janv. 2019 à 17:39
Bonjour,
Bonjour, je débute en VBA et j'ai du mal à faire fonctionner une macro. Je dois réaliser une macro qui permettrai de faire la synthèse de d'un ensemble d'articles d'un fichier Excel "Base_de_données" sur une feuille d'un autre fichier Excel "Synthèse_produit". Ce fichier ("Base_de_données") conséquent, comporte beaucoup de colonnes (date de création, code article, désignation article, code client...) et beaucoup de lignes ( chaque vente d’articles correspond a une ligne)...

J'ai à côté une feuille ou se trouve toutes les références(code article) de l’ensemble des articles qui nous intéressent et leurs désignations : "Référence_ensemble1"

Je voudrai réaliser une boucle qui parcours toute la colonne "AF"(colonne du code article) du fichier "Base_de_données" pour copier sa valeur et la coller dans une feuille d'un classeur différent "Synthèse_produit" seulement si le code article correspond à un code article présent dans les plages de cellules présentent dans "Référence_ensemble1".

Plage de données de codes produits dans "Référence_ensemble1" : B10 à B62

Description étape par étape :

--> On se place dans la feuille "Base_de_données"
Range "AF2".Select

--> On sélectionne les 8 premiers caractères de la 1ère cellule des codes articles(AF2)

-->Tant que la cellule sélectionnée de la colonne AF n'est pas vide répéter la boucle ( pour balayer tout le tableau)
While Is Empty...

-->Si la cellule sélectionnée a une valeur identique à un code produit de la feuille "Référence_ensemble1"( les 8er caractères seulement)

--> On copie la ligne entière de la cellule qui remplit le critère de valeur
ActiveCell.Row.Copy
--> On active la feuille de synthèse ou on recopie les lignes sectionnées "Synthèse_produit"

--> On se place sur la cellule B10 et on colle la cellule
Range("B10").select
ActiveSheet.Paste

-->On insère en B10 ce qui décale la cellule copiée d'une ligne vers le bas pour la suivante
Utilisation d'un "xlDown ???

La feuille "Synthèse_produit" désigne une feuille qui n'est pas sur le même classeur que "Base_de_données".

-les objets Range dont la valeur est à tester (codes articles) se trouvent dans la colonne AF2 de "Base_de_données.xlsx" (c'est le 1er classeur)
-Ces cellules doivent être rapproché des cellules B10 à B62 de la feuille "Référence_ensemble1"(le 2e classeur), si un code article de la colonne AF2 (dans "Base_de_données") est le même que l'un des code article dans la plage B10 à B62 de "Référence_ensemble1" : colle la ligne complète (à partir de la "Base_de_données.xlsx" dans la cellule B10 de la feuille "Synthèse_produit" (dans le 2e classeur)...

J'espère que c'est compréhensible.
Si il vous manque des précisions n'hésitez à me les demander.

Merci d'avance,

Thomas
Configuration: Windows / Firefox 52.0

2 réponses

Salut !

Pourrais-tu mettre ton fichier à disposition ? via www.cjoint.com
(en remplaçant les données sensibles si besoin)
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
28 janv. 2019 à 17:39
Bonjour,

Ça devrait pouvoir se faire très simplement avec un filtre élaboré :
https://philippetulliez.developpez.com/tutoriels/advancedfilter/
0