Boucle remplissage descendant et copier coller dans un nouvel onglet

Bonjour,
je suis débutante sur vba et j’ai besoin d’aide pour réaliser la macro suivante.
J’ai un fichier avec 2 onglets (feuille 1 et feuille 2). Dans le premier onglet j’ai un formulaire qui s’alimente automatiquement lorsque je suis connectée sur une certaine base de donnée. Dans cet onglet (feuille1) je dois remplir la cellule D4 (le formulaire s’alimente ensuite automatiquement). Je souhaiterais que cette celulle D4 prenne successivement les valeurs que l’on retrouve dans la feuille 2 en colonne A (de A2 à A201). Et qu’entre chaque nouveau remplissage les valeurs calculées par le formulaires soient copiées collées dans un nouveau classeur, onglet 1, puis onglet 2 etc. jusqu’à 200.
En résumé , pas à pas je voudrais :

  • la cellule D4 (feuille 1) = A2 (feuille2)
  • copier coller de la feuille 1 dans un nouveau fichier onglet 1
  • cellule D4 = A3
  • copier coller de la feuille 1 dans le nouveau fichier onglet 2
    etc. jusqu"à cellule D4 = A200

Je mets le fichier « exemple » en pj mais il n’est pas automatisé ici car il faut avoir accès à une base de données spécifique. exemple.xlsx (143,1 Ko)

Merci beaucoup par avance

Bonjour

Je ne sais pas si j’ai bien compris

En D4 une donnée
si celle-ci présente en Feuil2 colonne A copie de Feuil1 dans un nouveau classeur avec comme nom d’onglet de recopie la valeur D4
Si en D4 nouvelle donnée même démarche mais dans le même classeur créé précédemment dans un nouvel onglet avec toujours comme nom la nouvelle valeur D4

Etc…

Ci-joint ma proposition

En E2 le nom du classeur à utiliser pour la recopie
Si nouveau classeur E2 doit être vide le traitement se chargera de mettre le nom du nouveau classeur créé
Si utilisation d’un classeur déjà existant il doit être ouvert et son nom avec son extension doit être en E2 (Mon classeur.enregistrement.xlsx)
Attention celui-ci ne doit pas avoir des onglets au nom d’un de ceux à traiter sinon 2 onglets au même nom bug en perspective !!!)

Donc ci-joint ma proposition
Onglet Feuil1 un bouton « Traitement »
En E2 :
nouveau classeur à créer aucune donnée
classeur existant à utiliser nom de celui-ci avec son extension (.xls, .xlsx, .xlsm etc…) et il doit être ouvert au risque que le traitement en crée un nouveau
En D4 la donnée
Une fois ces conditions remplies
Clique sur le bouton

Fais des essais et dis moi

exemple.xlsm (156,0 Ko)

Bonjour et merci beaucoup pour ta réponse !
alors je crois que je n’étais pas très claire,

En D4 (de la feuil1) je voudrais que soit renseigné l’un après l’autre les différents « RIC » que l’on retrouve dans la colonne A de la Feuil2. Si j’en crois ce que j’ai pu lire il faudrait faire une boucle For I = 1 to 201.
Donc en premier lieu on aura D4 = 1 puis D4 = 2 puis D4 = 3 etc…
et pour chaque valeur de D4 je voudrais que la feuil1 entière soit copiée collée dans une nouvelle feuille d’un autre classeur. Car on ne peut pas le voir ici mais le tableau de la feuil1 va changer automatiquement à chaque nouveau RIC (nouvelle valeur en D4).

Donc si je comprends (un peu) le code que tu m’as envoyé, toute la partie copier - coller c’est parfait (en plus avec le nom de l’onglet = le nom du RIC c’est top). En revanche pas besoin du if au début qu’il faudrait remplacer par une boucle qui ira chercher une à une (de 1 à 201) les RIC de la feuil2.

Est-ce que c’est compréhensible ?

Merci beaucoup !

« Car on ne peut pas le voir ici mais le tableau de la feuil1 va changer automatiquement à chaque nouveau RIC (nouvelle valeur en D4). »

Permets moi d’être très septique car la copie de la Feuil1 par le traitement n’attendra pas la mise à jour des données de cet onglet
A peine le code mettra la valeur de la Feuil2 en cellule D4 que la copie dans la foulée s’effectuera

Je vois très mal cette opération d’actualisation des données en même temps que la copie

Toujours est il que ci-joint une nouvelle proposition avec comme tu le souhaites une boucle sur la base de la colonne A de Feuil2 qui ramène chaque donnée en cellule D4 de Feuil1 tout en faisant la copie de celle-ci dans un nouveau classeur dans un onglet au nom de cette donnée

Testes et dis moi

exemple.xlsm (155,4 Ko)

Je te remercie cela fonctionne très bien.
En effet c’était la question que je m’étais posée : est ce que le traitement prendra en compte ou non les mises à jour… Je dois me rendre sur un ordinateur spécifiquement connecté à cette base de données pour tester.

Du coup dans l’optique ou ça ne fonctionnerait pas je pensais à une solution alternative qui était de créer un second bouton « sélection RIC » qui lorsqu’on appui passe au RIC suivant. Ce qui me laisse le temps d’attendre l’actualisation (c’est une histoire de 5 sec maximum) et ensuite je clique sur le bouton « traitement » qui ne serait en fait que la partie du code qui exécute le copier coller dans le second classeur.

Si je ne me trompe pas cela donnerait deux boutons / deux macros : un bouton « selection RIC » qui va de « J=2 » jusqu’à la fin du code que tu m’as transmis et le bouton « traitement » qui correspond au reste du code ?

Car cela n’est pas possible de demander dans le code quelques secondes de « pause » avant de passer à la ligne suivante ?

Oui une tempo est une solution à essayer car ta solution de 2 boutons ne permet plus une boucle mais un traitement code par code avec à chaque fois un clique à chaque bouton soit pour 200 codes 2 fois 200 cliques
Ce n est pas concevable
Donc à voir déjà en l état puis s orienter vers l option tempo
Attendons le résultat de tes tests
Tiens moi informé

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.