Créer un classeur à partir des données d'un autre
camcam1404
Messages postés
64
Date d'inscription
Statut
Membre
Dernière intervention
-
camcam1404 Messages postés 64 Date d'inscription Statut Membre Dernière intervention -
camcam1404 Messages postés 64 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
est ce que quelqu'un peut m'aider à améliorer et à poursuivre le code ci-dessous ?
Je souhaite à partir d'un classeur source enregistrer dans un lieu précis créer d'autres classeurs.
La feuille "Générer_le_protocole" du classeur source "Créer_ protocole" regroupe les informations pour remplir le nouveau classeur. Et les feuilles Protocole_1 , Protocole_1_bis servent de modèle pour la mise en forme des nouveaux classeurs (Ces deux feuilles seront présentes dans le nouveau classeur).
Objectif:
lorsque je clique sur le bouton "Créer le protocole" et je sélectionne l'échantillon e relatif au Projet 1 (ligne 4 feuille Générer le protocole Classeur source=Créer Protocole) par le biais d'une Inputbox ou quelque chose de se type un classeur doit s'ouvrir avec le nom Projet1_échantillon_e avec les feuilles Protocol_1 et Protocol_1_bis. du classeur source sauf que ces deux feuilles sont préremplis à partir des données saisis dans la feuille "Générer_le_protocole" du classeur source.
J'ai joint le classeur source et le classeur que je souhaiterai obtenir si je sélectionne par l'exemple l'échantillon du projet A.
Ma gestion des deux classeurs est pour le moment hasardeuse et je sais pas comment nommer le nouveau classeur tel que je le souhaiterais.
J'arriver à copier/coller les données entre le classeur source et le nouveau mais seulement pour une ligne défini car le code est écrit en dur..
https://www.cjoint.com/c/HJvkDwN8QAc : classeur source
https://www.cjoint.com/c/HJvkEb4Wmnc : classeur crée à partir du classeur source
est ce que quelqu'un peut m'aider à améliorer et à poursuivre le code ci-dessous ?
Private Sub CommandButton1_Click()
CommandButton1.Caption = "Créer le protocole"
Sheets(Array("Protocole_1", "Protocole_1_bis")).Copy
Dim WbSource As Workbook ' Objet Workbook pour le classeur source
Dim WbDest As Workbook ' Objet Workbook pour le classeur destination
Set WbDest = ActiveWorkbooks
Set WbSource = Workbooks("Créer_Protocole.xlsm")
WbDest.Sheets("Protocole_1").Range("J4").Value = WbSource.Sheets("Générer_le_protocole").Range("A2").Value
WbDest.Sheets("Protocole_1").Range("A9").Value = WbSource.Sheets("Générer_le_protocole").Range("B2").Value
WbDest.Sheets("Protocole_1").Range("F9").Value = WbSource.Sheets("Générer_le_protocole").Range("C2").Value
WbDest.Sheets("Protocole_1").Range("A14").Value = WbSource.Sheets("Générer_le_protocole").Range("D2").Value
WbDest.Sheets("Protocole_1").Range("F14").Value = WbSource.Sheets("Générer_le_protocole").Range("E2").Value
WbDest.Sheets("Protocole_1").Range("H14").Value = WbSource.Sheets("Générer_le_protocole").Range("F2").Value
WbDest.Sheets("Protocole_1_bis").Range("J4").Value = WbSource.Sheets("Générer_le_protocole").Range("A2").Value
WbDest.Sheets("Protocole_1_bis").Range("A9").Value = WbSource.Sheets("Générer_le_protocole").Range("B2").Value
WbDest.Sheets("Protocole_1_bis").Range("F9").Value = WbSource.Sheets("Générer_le_protocole").Range("C2").Value
WbDest.Sheets("Protocole_1_bis").Range("A14").Value = WbSource.Sheets("Générer_le_protocole").Range("D2").Value
WbDest.Sheets("Protocole_1_bis").Range("F14").Value = WbSource.Sheets("Générer_le_protocole").Range("E2").Value
WbDest.Sheets("Protocole_1_bis").Range("H14").Value = WbSource.Sheets("Générer_le_protocole").Range("F2").Value
End Sub
Je souhaite à partir d'un classeur source enregistrer dans un lieu précis créer d'autres classeurs.
La feuille "Générer_le_protocole" du classeur source "Créer_ protocole" regroupe les informations pour remplir le nouveau classeur. Et les feuilles Protocole_1 , Protocole_1_bis servent de modèle pour la mise en forme des nouveaux classeurs (Ces deux feuilles seront présentes dans le nouveau classeur).
Objectif:
lorsque je clique sur le bouton "Créer le protocole" et je sélectionne l'échantillon e relatif au Projet 1 (ligne 4 feuille Générer le protocole Classeur source=Créer Protocole) par le biais d'une Inputbox ou quelque chose de se type un classeur doit s'ouvrir avec le nom Projet1_échantillon_e avec les feuilles Protocol_1 et Protocol_1_bis. du classeur source sauf que ces deux feuilles sont préremplis à partir des données saisis dans la feuille "Générer_le_protocole" du classeur source.
J'ai joint le classeur source et le classeur que je souhaiterai obtenir si je sélectionne par l'exemple l'échantillon du projet A.
Ma gestion des deux classeurs est pour le moment hasardeuse et je sais pas comment nommer le nouveau classeur tel que je le souhaiterais.
J'arriver à copier/coller les données entre le classeur source et le nouveau mais seulement pour une ligne défini car le code est écrit en dur..
https://www.cjoint.com/c/HJvkDwN8QAc : classeur source
https://www.cjoint.com/c/HJvkEb4Wmnc : classeur crée à partir du classeur source
A voir également:
- Créer un classeur à partir des données d'un autre
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Créer un compte google - Guide
- Créer un lien pour partager des photos - Guide
- Créer un compte gmail - Guide
- Créer un compte instagram sur google - Guide
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, il me semble plus simple d'avoir un classeur modèle pour les nouveaux classeurs.
ton code pourra ouvrir ce classeur, le remplir, puis faire "enregistrer sous" le nom final du nouveau classeur.
tu te demandes comment copier les données sans avoir le numéro de la ligne en dur dans le code. j'ai l'impression que tu as fait un exemple très confus: tu as choisi de mettre des "AAA" partout, pour nous empêcher de distinguer les valeurs. de plus, si je vois bien, ton exemple est basé sur la ligne 4, et ton code est pour la ligne 2.
je pense qu'il suffit d'utiliser une variable avec le numéro de ligne source, exemple de code:
ton code pourra ouvrir ce classeur, le remplir, puis faire "enregistrer sous" le nom final du nouveau classeur.
tu te demandes comment copier les données sans avoir le numéro de la ligne en dur dans le code. j'ai l'impression que tu as fait un exemple très confus: tu as choisi de mettre des "AAA" partout, pour nous empêcher de distinguer les valeurs. de plus, si je vois bien, ton exemple est basé sur la ligne 4, et ton code est pour la ligne 2.
je pense qu'il suffit d'utiliser une variable avec le numéro de ligne source, exemple de code:
Dim WbSource As Workbook, WbDest As Workbook Dim numl As Long Set WbSource = ThisWorkbook Set WbDest = Workbooks.Open(ThisWorkbook.Path & "\Modele-échantillon" & ".xlsx") numl = 4 WbDest.Sheets("Protocole_1").Range("J4").Value = _ WbSource.Sheets("Générer_le_protocole").Cells(numl, 1).Value WbDest.SaveAs (ThisWorkbook.Path & "\nouveau" & CStr(numl) & ".xlsx") WbDest.Close