Accueil > Forum > > > > Copie de données d'un classeur à l'autre
Copie de données d'un classeur à l'autre
dimanche 11 février 2007 à 02:45:58 |
Copie de données d'un classeur à l'autre

olivier857
|
Bonjour à tous,
J'ai un problème de copie de donées d'un classeur à l'autre et ne trouve pas de solution. Apparement le problème provient de ma demarche de selection des cellules avant collage des données, celles-ci ne noit pas correspondre à ma cellule copier, ou bien alors je ne suis peut être pas le bonne ordre pour activer le classeur, la feuille et les cellules,...
Voici mon code, on y retrouve en rouge la partie problématique :
Private Sub cmd_import_Click()
Dim fichier_valfor As Variant Dim classeur_cible As Workbook Dim feuille_cible As Worksheet Dim ligne As String Dim premier_decoupage() As String Dim donnees_generales() As String Dim donnees_libelles() As String Dim donnees_PR() As String Dim donnees_LU() As String Dim detail_donnees_PR() Dim detail_donnees_LU() Dim i As Long Dim depart, count, j, k, l, x As Integer Dim monTab() As String
'''''Initialisationde de la fenêtre destination'''''''''''''''''''''''''''''''''' Destination.cmd_old.Locked = True Destination.Option_new = True Destination.Option_old = False Destination.txt_new_ch_classeur.Locked = False Destination.txt_new_nom_classeur.Locked = False Destination.txt_new_onglet.Locked = False Destination.txt_old_classeur.Locked = True Destination.txt_old_onglet.Locked = True Destination.txt_new_ch_classeur.BackStyle = fmBackStyleOpaque Destination.txt_new_nom_classeur.BackStyle = fmBackStyleOpaque Destination.txt_new_onglet.BackStyle = fmBackStyleOpaque Destination.txt_old_classeur.BackStyle = fmBackStyleTransparent Destination.txt_old_onglet.BackStyle = fmBackStyleTransparent Destination.txt_new_ch_classeur.Text = "G:\Outil Valfor\Valfor excel\" Destination.txt_new_nom_classeur.Text = "" Destination.txt_new_onglet.Text = "" Destination.txt_old_classeur.Text = "" Destination.txt_old_onglet.Text = "" Destination.txt_type_forfait.Text = "" quit = False '''''Affichage de la fenêtre destination''''''''''''''''''''''''''''''''''''''''' Destination.Show
'''''Test si la fenêtre destination à été quitté proprement'''''''''''''''''''''' If quit = True Then Exit Sub
''''''Copie du masque de donnée''''''''''''''''''''''''''''''''''''''''''''''' If old = True Then 'Copie dans un nouvel onglet d'un classeur existant Worksheets("macro").Select Cells.Select Selection.Copy Workbooks.Open Destination.txt_old_classeur.Text Sheets.Add ActiveSheet.Name = Destination.txt_old_onglet.Text Sheets(Destination.txt_old_onglet.Text).Select Cells.Select ActiveSheet.Paste Range("C1") = Destination.txt_type_forfait.Text Range("C2") = Destination.txt_date_camp.Text Range("C3") = Destination.txt_cdp.Text Set classeur_cible = ActiveWorkbook Set feuille_cible = ActiveSheet ElseIf old = False Then 'Copie dans un nouveau classeur Worksheets("macro").Select Cells.Select Selection.Copy Application.Workbooks.Add Application.DisplayAlerts = False ActiveWorkbook.Worksheets(3).Delete ActiveWorkbook.Worksheets(2).Delete ActiveWorkbook.Worksheets(1).Name = Destination.txt_new_onglet.Text Application.DisplayAlerts = True ActiveWorkbook.Activate Sheets(Destination.txt_new_onglet.Text).Select Cells.Select ActiveSheet.Paste Range("C1") = Destination.txt_type_forfait.Text Range("C2") = Destination.txt_date_camp.Text Range("C3") = Destination.txt_cdp.Text Set classeur_cible = ActiveWorkbook Set feuille_cible = ActiveSheet End If
Voilà si quelqu'un peut m'espliquer mon erreur ca serait génial.
Merci d'avance
Olivier
|
|
dimanche 11 février 2007 à 14:01:31 |
Re : Copie de données d'un classeur à l'autre

MPi
|
Essaie comme ceci pour voir Sheets(Destination.txt_old_onglet.Text).Activate Range("A1").Select ActiveSheet.Paste
ou peut-être Range("A1").pastespecial xlpastevalues Range("A1").pastespecial xlpasteFormats ' au besoin
Range("A1").pastespecial xlpasteFormulas ' au besoin
MPi
|
|
dimanche 11 février 2007 à 15:38:44 |
Re : Copie de données d'un classeur à l'autre

drouault
|
Et comme ça ????
Compte.Worksheets(Destination.txt_old_onglet.Text).Cells(1, 1).Select
Pierre
|
|
dimanche 11 février 2007 à 16:26:31 |
Re : Copie de données d'un classeur à l'autre

Molenn
|
Personnellement moi, je me refuse à utiliser les ActiveWorkbook etc quand je veux faire des copies de données d'un classeur à un autre, il suffit que je rajoute une procédure après et tout fout le camp, etc ... Je préfère de loin déclarer systématiquement les classeurs. Pour celà, avant toute copie, j'ouvre mon classeur de destination : Workbooks.open ("chemin du fichier\Fichier cible.xls") (Là, moi je joue avec des variables parce que je ne veux pas que, sous prétexte qu'on change un accent dans le nom du fichier, ça ne fonctionne plus, mais chacun son truc ^^)
Ensuite, je copie les données : Workbooks("Fichier d'origine.xls").Worksheets("Nom de la feuille").Cells.Copy Workbooks("Fichier cible.xls").Worksheets("Nom de la feuille").Cells.pastespecial xlpastevalues (avec les différentes options ... L'enregistreur de macro te les donnera).
Depuis que je fonctionne ainsi, je n'ai plus de pbs de copies entre mes différents classeurs, et je ne passe pas trois plombes à rechercher à quel classeur me renvoit ActiveWorkbook, etc ...
Molenn
|
|
dimanche 11 février 2007 à 23:32:48 |
Re : Copie de données d'un classeur à l'autre

olivier857
|
Molenn je ne suis pas sure d ebien comprendre ce que tu m'explique. Aurait tu stp un bout de code concret a me donner.
Merci
Oliv
|
|
lundi 12 février 2007 à 11:21:31 |
Re : Copie de données d'un classeur à l'autre

Molenn
|
Celui que je te donne est un exemple concret déjà ^^, mais je vais quand même te faire un exemple.
Je veux copier les cellules A1 à A10 de la feuille 1 de mon classeur dans les cellules B5 à B15 de la feuille 3 du classeur Test.xls situé dans le répertoire C:\Temp. Le classeur ouvert (et dans lequel se trouve ma macro) s'appelle Démo.xls
La première chose à faire, ouvrir le fichier cible, à savoir Test.xls C'est tout simple, le code est : Workbooks.open ("C:\Temp\Test.xls")
Ensuite, l'opération se décomposant en deux, je vais d'abord copier les cellules A1 à A10 de ma feuille 1, du classeur Démo.xls Le code : Workbooks("Démo.xls").Worksheets("Feuille 1").Range("A1:A10").Copy
Plus qu'à coller dans le classeur Test.xls Le code : Workbooks("Test.xls").Worksheets("Feuille 3").Range("B5:B15").Pastespecial xlpastevalues
Voilà, c'est tout.
Molenn
|
|
lundi 12 février 2007 à 22:39:30 |
Re : Copie de données d'un classeur à l'autre

olivier857
|
Bon alors je reviens à la charge car je n'arrive tjs pas à réaliser ce que je souhaite. Apparement peu importe ce que je fait sur l'un des 2 classeurs ,que ce soit l'ancien que je réouvre ou le nouveau que je crée, cela plante.
A partir du moment ou je fait "workbooks(). ..." ou "workshettes(). ..." peu importe ce que j'écrit derrière mon code plante.
Je vous redonne mon code :
If old = True Then 'Copie dans une nouvel feuille d'un classeur existant old_ong = Destination.txt_old_onglet old_class = Destination.txt_old_classeur Worksheets("macro").Cells.Copy Workbooks.Open old_class Sheets.Add Workbooks(old_class).ActiveSheet.Name = old_ong Workbooks(old_class).Worksheets(old_ong).Cells.Paste Workbooks(old_class).Worksheets(old_ong).Range("C1") = Destination.txt_type_forfait.Text Workbooks(old_class).Worksheets(old_ong).Range("C2") = Destination.txt_date_camp.Text Workbooks(old_class).Worksheets(old_ong).Range("C3") = Destination.txt_cdp.Text Set classeur_cible = Workbooks(old_class) Set feuille_cible = Workbooks(old_class).Worksheets(old_ong) ElseIf old = False Then 'Copie dans une feuille d'un nouveau classeur new_ch = Destination.txt_new_ch_classeur new_class = Destination.txt_new_nom_classeur new_ong = Destination.txt_new_onglet Worksheets("macro").Cells.Copy Application.Workbooks.Add ActiveWorkbook.SaveAs new_ch & new_class Application.DisplayAlerts = False Workbooks(new_class).Worksheets(3).Delete Workbooks(new_class).Worksheets(2).Delete Workbooks(new_class).Worksheets(1).Name = new_ong Application.DisplayAlerts = True Workbooks(new_class).Worksheets(new_ong).Cells.Paste Workbooks(new_class).Worksheets(new_ong).Range("C1") = Destination.txt_type_forfait.Text Workbooks(new_class).Worksheets(new_ong).Range("C2") = Destination.txt_date_camp.Text Workbooks(new_class).Worksheets(new_ong).Range("C3") = Destination.txt_cdp.Text Set classeur_cible = Workbooks(new_class) Set feuille_cible = Workbooks(new_class).Worksheets(new_ong) End If
Voilà je ne comprend vraiment pas mon pb.
|
|
lundi 12 février 2007 à 23:04:50 |
Re : Copie de données d'un classeur à l'autre

MPi
|
Essaie en utilisant 2 variables, disons Origine et Destination As Workbook (ou As window)
Quand tu es dans ton fichier d'origine, tu écris Set Origine = ActiveWorkBook
Lorsque tu crées un nouveau WorkBook, tu te retrouves dans celui-ci par défaut, donc Set Destination = ActiveWorkbook
Et tu peux donc te promener d'un à l'autre en les appelant par leurs nouveaux noms Origine.Activate Cells.copy Destination.Activate Range("A1").Pastespecial
MPi
|
|
mardi 13 février 2007 à 00:32:55 |
Re : Copie de données d'un classeur à l'autre

olivier857
|
Je craque, ca marche tjs pas, même ta solution MPi. J'arrive a créer mes variables worskbook a faire mes set mais apres quand je les utilise ca plante tjs.
|
|
mardi 13 février 2007 à 02:41:42 |
Re : Copie de données d'un classeur à l'autre

MPi
|
Si je me fie à ton premier message qui émane de ton projet de départ mais qui a peut-être changé en cours de route...
Avant ces déclarations, mets un MsgBox pour au moins t'assurer que tu as bien une valeur valable. Sheets(Destination.txt_old_onglet.Text) Sheets(Destination.txt_new_onglet.Text).Select
Du genre MsgBox Destination.txt_old_onglet.Text
Qu'est-ce que tu reçois comme chaîne(s) de message ?
MPi
|
|
Cette discussion est classée dans : text, txt, destination, classeur, old
Répondre à ce message
Sujets en rapport avec ce message
Ré-enregistrer un txt [ par clems45 ]
salutj'explique mon probleme....j'ai une TextBox et j'enregistre son contenu sur un txt apres avoir demandé la destination:chemins = InputBox("destina
erreur d'execution 13 étrange [ par Robinwood01 ]
BonjourAfin de simplifier les tests dans mon application je suis en train de faire plein de fonction, cependant j'ai un soucis avec celle ci qui se tr
probleme avec settings.designer [ par redim3 ]
bonjour jai un petit probleme que je ne sais comment regler dans le code autogenerer-.-Error 1 Type 'Microsoft.VisualBasic.HideModuleNameAttribu
enregistrement dans la base access [ par rudybiss ]
Bonjour!Toujours dans mon developpement de mon application,je viens auprès de vous solliciter une aide car je ne comprends plus rien.En effet,j'utilis
Probleme BDD ACCESS [ par Systech_Systems ]
J'utilise cette fonction avec une base de données ACCES connecté à mon appli par l'intermediaire d'une source de donnés avc vb.net ( Tableadpater + bi
Majuscules [ par rudybiss ]
Bonjour!Je suis confronté à une problème assez étrange,je veux dans le textbox du nom que tout soit en majuscule et j'ai mis ceci:txt_nom.Text = UCase
chemin dans fichier Text [ par Vinvinsylvain ]
Bonjour je recherche comment faire pour quand je clique sur une Picture, celle ci ouvre un fichier txt, va à une ligne spécifique et ouvre le fichier
TableAdapter.Update, j'y arrive pas... [ par gilousab1 ]
Bonjour, Je sais bien que je vais me faire éclater en posant cette question de noob, sachant que google et mon ami et que il existe déja 10 000 répons
[VB.Net] Souci avec une variable publique [ par Kerlouan29 ]
Bonjour J'ai un souci dans mon programme: je n'arrive pas à utiliser une variable que j'ai déclarée dans un module. [code=vb]Module Module_Variables_M
Problème d'enregistrement dans la base de donnée access [ par lilsunrise ]
salut tt le monde , bah voila mon blem g une app qui gère des info sur une base de donnée access , le blem c est que sur l app ya pas d'erreur tt marc
Livres en rapport
|
Derniers Blogs
XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio [WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|