Copie classeur ferme vers classeur tampon
Résolu
anais890313
Messages postés
11
Statut
Membre
-
anais890313 Messages postés 11 Statut Membre -
anais890313 Messages postés 11 Statut Membre -
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é :
Désolé pour le code surement grossier ....
Merci par avance pour votre aide
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
8 réponses
-
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 -
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. -
Adresse du lien : https://www.cjoint.com/?CBiiX2N4D2D
l'onglet est composé exactement de la meme maniere que celui des commerciaux
merci -
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-
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 ! -
-
-
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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 -
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 -
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é...
-
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 !