Copie classeur ferme vers classeur tampon

Résolu/Fermé
anais890313 Messages postés 11 Date d'inscription lundi 10 décembre 2012 Statut Membre Dernière intervention 12 février 2013 - Modifié par irongege le 10/02/2013 à 10:23
anais890313 Messages postés 11 Date d'inscription lundi 10 décembre 2012 Statut Membre Dernière intervention 12 février 2013 - 12 févr. 2013 à 14:20
Bonjour à tous,

je suis débutante en vba et je tourne en rond depuis quelques jours donc je fais de nouveau appel à votre savoir, en espérant que vous pourrez m'aider.

j'ai 6 classeurs différents pour chaque employé (placés dans le meme repertoire) :
BLONDELCL.xls
CASOLACL.xls
MANSIERCL.xls
MOULINECCL.xls
ROYCL.xls
ROSSETTICL.xls

et un classeur tampon ou toutes les données devront etre regroupées :
RECUP.xls

A l'interieur de chaque classeur employé se trouve un onglet BD (onglet sur lequel je dois récuperer les données)

Dans cet onglet BD :
le premier enregistrement débute en cellule A3
le nombre d'enregistrement est appelé à varier il est donc important que ma macro trouve la derniere ligne non vide

je voudrais :
récuperer les données de l'onglet BD dans chaque fichier (A3 à U"...")
les coller les uns à la suite des autres dans mon classeur tampon dans l'onglet bd
je voudais que les classeurs restent fermés pendant la copie et que la manipulation se fasse à l'aide d'un bouton sur l'onglet BD

voici le code engagé :
Sub COPIE_feuille() 

Dim BLONDELCL_source As Workbooks 
Dim CASOLACL_source As Workbooks 
Dim MANSIERCL_source As Workbooks 
Dim MOULINECCL_source As Workbooks 
Dim ROYCL_source As Workbooks 
Dim ROSSETTICL_source As Workbooks 
Dim RECUP_target As Workbooks 
Dim RECUP_feuille As Worksheets 
Dim cellBLO_source_1er As Range 
Dim cellBLO_source_der As Range 
Dim cellCAS_source_1er As Range 
Dim cellCAS_source_der As Range 
Dim cellMAN_source_1er As Range 
Dim cellMAN_source_der As Range 
Dim cellMOU_source_1er As Range 
Dim cellMOU_source_der As Range 
Dim cellROY_source_1er As Range 
Dim cellROY_source_der As Range 
Dim cellROSS_source_1er As Range 
Dim cellROSS_source_der As Range 
Dim cell_target As Range 

Set BLONDELCL_source = Workbooks("A:\Commerciaux\reporting mensuel des commerciaux\Nouveau reporting1\Nouveau REPORTING MENSUEL COMMERCIAUX BLONDEL HUGUES").Worksheets("BD") 
Set CASOLACL_source = Workbooks("A:\Commerciaux\reporting mensuel des commerciaux\Nouveau reporting1\Nouveau REPORTING MENSUEL COMMERCIAUX CASOLA HAROLD").Worksheets("BD") 
Set MANSIERCL_source = Workbooks("A:\Commerciaux\reporting mensuel des commerciaux\Nouveau reporting1\Nouveau REPORTING MENSUEL COMMERCIAUX VALERIE MANSIER").Worksheets("BD") 
Set MOULINECCL_source = Workbooks("A:\Commerciaux\reporting mensuel des commerciaux\Nouveau reporting1\Nouveau REPORTING MENSUEL COMMERCIAUX MOULINEC DAN").Worksheets("BD") 
Set ROYCL_source = Workbooks("A:\Commerciaux\reporting mensuel des commerciaux\Nouveau reporting1\Nouveau REPORTING MENSUEL COMMERCIAUX ROY KARINE").Worksheets("BD") 
Set ROSSETTICL_source = Workbooks("A:\Commerciaux\reporting mensuel des commerciaux\Nouveau reporting1\Nouveau REPORTING MENSUEL COMMERCIAUX ROSSETTI NICOLE").Worksheets("BD") 

Set RECUP_target = Worksheets("BD") 
Set cellBLO_source_1er = BLONDELCL_source("A3").Range 
Set cellBLO_source_der = cellBLO_source_1er.End(xlDown) 
Set cellCAS_source_1er = CASOLACL_source("A3").Range 
Set cellCAS_source_der = cellCAS_source_1er.End(xlDown) 
Set cellMAN_source_1er = MANSIERCL_source("A3").Range 
Set cellMAN_source_der = cellMAN_source_1er.End(xlDown) 
Set cellMOU_source_1er = MOULINECCL_source("A3").Range 
Set cellMOU_source_der = cellMOU_source_1er.End(xlDown) 
Set cellROY_source_1er = ROYCL_source("A3").Range 
Set cellROY_source_der = cellROY_source_1er.End(xlDown) 
Set cellROSS_source_1er = ROSSETTICL_source("A3").Range 
Set cellROSS_source_der = cellROSS_source_1er.End(xlDown) 
Set cell_target = RECUP_feuille.Range("A3").End(xlDown).Row + 1 


BLONDELCL_source.Range(cellBLO_source_1er, cellBLO_source_der).Copy cell_target 
CASOLACL_source.Range(cellCAS_source_1er, cellCAS_source_der).Copy cell_target 
MANSIERCL_source.Range(cellMAN_source_1er, cellMAN_source_der).Copy cell_target 
MOULINECCL_source.Range(cellMOU_source_1er, cellMOU_source_der).Copy cell_target 
ROYCL_source.Range(cellROY_source_1er, cellROY_source_der).Copy cell_target 
ROSSETTICL_source.Range(cellROSS_source_1er, cellROSS_source_der).Copy cell_target 

End Sub 


Désolé pour le code surement grossier ....
Merci par avance pour votre aide
A voir également:

8 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 7/02/2013 à 14:40
Bonjour,

Combien de lignes maximum chez tes commerciaux (ordre de grandeur) ?
Version Excel ?
Le classeur "recup" est il dans le m^me répertoire que les classeurs "source" ?

Mettre un classeur source en pièce jointe( l'onglet BD suffira) , s'il te plait
pour joindre une pièce
mettre le classeur sans données confidentielles en pièce jointe sur
https://www.cjoint.com/
puis copier l'adresse du lien et la coller dans le message de réponse


Michel
0
anais890313 Messages postés 11 Date d'inscription lundi 10 décembre 2012 Statut Membre Dernière intervention 12 février 2013
8 févr. 2013 à 08:40
Bonjour,

Tout d'abord merci pour ta réponse.

Pour répondre à ta question :

Il y aura 300 lignes maximum pour chaque commercial.
Le classeur récup est pour l'instant dans le meme répertoire mais dans l'ideal il ne l'est pas ... (si pas possible je le laisserai dans le meme répertoire ...)

Je te joins tout de suite le classeur source avec l'onglet bd

merci par avance pour ton aide.
0
anais890313 Messages postés 11 Date d'inscription lundi 10 décembre 2012 Statut Membre Dernière intervention 12 février 2013
8 févr. 2013 à 08:51
Adresse du lien : https://www.cjoint.com/?CBiiX2N4D2D

l'onglet est composé exactement de la meme maniere que celui des commerciaux

merci
0
anais890313 Messages postés 11 Date d'inscription lundi 10 décembre 2012 Statut Membre Dernière intervention 12 février 2013
8 févr. 2013 à 08:56
https://www.cjoint.com/?CBii3NoluPo et voici le lien du classeur ou les données doivent etre récupérée

c'est Excel version 2010 mais ce system doit fonctionner sous 2000 egalement
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
8 févr. 2013 à 09:15
Bonjour

En premier, il faut regarder si 2000 et 2010 sont compatibles et je n'ai ni l'un ni l'autre aussi je te mettrai à contribution pour que tu fasses les tests
sinon, nous serons obligés d'ouvrir chaque source et faire les copies : combien "pèsent" (en Ko ou Mo) environ un fichier "source"

je regarde ça mais je ne sais pas quand !
0
anais890313 Messages postés 11 Date d'inscription lundi 10 décembre 2012 Statut Membre Dernière intervention 12 février 2013
8 févr. 2013 à 09:17
Ok tu me diras je testerai
en moyenne un fichier source 15000 ko
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
8 févr. 2013 à 09:26
peux tu me donner les numéros de version sur XL2000 et XL2010 en utilisant cette macro

15 Mo par commercial ? pas très prudent...
Sub xxx()
MsgBox Application.Version
End Sub
0
anais890313 Messages postés 11 Date d'inscription lundi 10 décembre 2012 Statut Membre Dernière intervention 12 février 2013
8 févr. 2013 à 09:49
14.0 pour 2010
10.0 pour 2000

c'est à dire pas tres prudent pour 15 mo ?
merci pour ton aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 8/02/2013 à 11:30
re,
Désolé mais mon ordi avait envie de faire des farces ce matin

ci dessous, la solution simple mais brutale en ouvrant les fichiers commerciaux. compte tenu du poids, cela risque d'^tre long ! mais si ca te va...
Autrement, tu dis , alors, l'idéal serait que tu sauvegardes les fichiers commerciaux au format 97-2003
Le classeur onglet_bd est enregistré sous ce dernier format

le code:
Option Explicit 

Sub tester_ouvert() 
Dim Chemin As String, Fich As String 
Dim Derlig As Integer, Plage() 
Dim Lig As Long 

Application.ScreenUpdating = False 
Chemin = "A:\Commerciaux\reporting mensuel des commerciaux\Nouveau reporting1\" 
'Chemin = "d:\documents\ccm\" 'CHEZ MOI ! 
ChDir Chemin 
Fich = Dir("*.xls" & "*") 
While Fich <> "" 
     If Fich <> "onglet_bd.xls" Then 'nom fichier à adapter 
          Workbooks.Open Filename:=Fich 
               With Sheets("feuil1") 'nom feuille à adapter 
                    Derlig = .Cells(.Rows.Count, "A").End(xlUp).Row 
                    Plage = .Range("A3:U" & Derlig).Value 
               End With 
               With Workbooks(Fich) 
                    If Not .Saved Then 
                         .Save 
                    End If 
                     .Close 
                End With 
                With ThisWorkbook.Sheets("feuil1") 'nom feuille à adapter 
                    Lig = .Cells(.Rows.Count, "A").End(xlUp).Row 
                    .Cells(Lig, "A").Resize(UBound(Plage), 21) = Plage 
                End With 
     End If 
     Fich = Dir 
Wend 

End Sub


Michel
0
anais890313 Messages postés 11 Date d'inscription lundi 10 décembre 2012 Statut Membre Dernière intervention 12 février 2013
12 févr. 2013 à 11:28
bonjour Michel,

Merci pour ton aide et désolée pour ma réponse un peu tardive... moi c'est ma connexion qui a décidé de faire des siennes depuis quelques jours

j'ai donc inséré ton code dans mon fichier en l'adaptant mais rien ne se passe quand j'essaye de l'executer

puis je abuser et te demander encore un peu de ton temps ?

voici le code adapté :
Sub tester_ouvert()
Dim Chemin As String, Fich As String
Dim Derlig As Integer, Plage()
Dim Lig As Long

Application.ScreenUpdating = False
Chemin = "A:\Commerciaux\reporting mensuel des commerciaux\Nouveau reporting mensuel des commerciaux\"
'Chemin = "d:\documents\ccm\" 'CHEZ MOI !
ChDir Chemin
Fich = Dir("*.xls" & "*")
While Fich <> ""
     If Fich <> "Nouveau REPORTING MENSUEL COMMERCIAUX MANAGER.xls" Then 'nom fichier à adapter
          Workbooks.Open Filename:=Fich
               With Sheets("BD") 'nom feuille à adapter
                    Derlig = .Cells(.Rows.Count, "A").End(xlUp).Row
                    Plage = .Range("A3:U" & Derlig).Value
               End With
               With Workbooks(Fich)
                    If Not .Saved Then
                         .Save
                    End If
                     .Close
                End With
                With ThisWorkbook.Sheets("BD") 'nom feuille à adapter
                    Lig = .Cells(.Rows.Count, "A").End(xlUp).Row
                    .Cells(Lig, "A").Resize(UBound(Plage), 21) = Plage
                End With
     End If
     Fich = Dir
Wend

End Sub
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
12 févr. 2013 à 13:53
Bonjour,

le pb est que j'ai supprimé ma maquette (je supprime si je n'ai pas de réponses dans les 4 jours ) mais je crois me souvenir que ca marchait...maintenant, je suis en monoposte et donc le fichier "recup" n'a pas de pb de partage et je n'ai pas d'accès simultané...
0
anais890313 Messages postés 11 Date d'inscription lundi 10 décembre 2012 Statut Membre Dernière intervention 12 février 2013
12 févr. 2013 à 14:20
c'est bon j'ai modifié quelques petits details et ca fonctionne parfaitement

Merci beaucoup pour cette aide précieuse qui m'a permis de gagner beaucoup de temps !
0