copier classeur ver un autre

dianbobo

XLDnaute Junior
bonjour
j'ai envi de faire un code
avec l'enregisteur de macro j'ai obtenu ceci:

Code:
Sub Macro9()
'
' Macro9 Macro
'
' Touche de raccourci du clavier: Ctrl+y
'
    Workbooks.Open Filename:= _
        "S:\PGB\DER\_Commun\MBO\RESULTAT ECO  suivi quotidien\Synthèse\2010-6-21 Résultat économique.xls"
    ActiveWindow.ScrollWorkbookTabs Position:=xlLast
    Sheets("Synthèse").Select
    ActiveWindow.SmallScroll Down:=3
    Range("D32").Select
    Selection.Copy
    Windows("classeurvarpa&hist.xls").Activate
    Range("A1").Select
    ActiveSheet.Paste
    Windows("classeurvarpa&hist.xls").Activate
    Range("H32").Select
    Application.CutCopyMode = False
    Selection.Copy
    Application.WindowState = xlMinimized
    Windows("classeurvarpa&hist.xls").Activate
    Range("B1").Select
    ActiveSheet.Paste
    Windows("classeurvarpa&hist.xls").Activate
    ActiveWindow.Close
End Sub


je vous explique ce qu'il a a faire :
le classeur dans lequel je travail s'appelle: "classeurvarpa&hist"
je voudrai allez dans un classeur dont la date de modification est plus proche de la date d'aujourd'hui ou bien qu'elle soit egale a la date d'aujourd'hui.en fait les classeurs sont ranger dans l'ordre croissant suivant les dates de modifications ,je veux donc aller dans celui qui a la date maximale
par le chemin:
Code:
"S:\PGB\DER\_Commun\MBO\RESULTAT ECO  suivi quotidien\Synthèse\2010-6-21 Résultat économique.xls"

1)il se trouve que ce classeur est fermé(je veux bien faire une copie avec le classeur fermé).
une fois dans ce classeur je veux copier les cellules
Code:
H32
et
Code:
D32
PUIS les coller respectivement dans mon classeur"classeurvarpa&hist" a la feuille 2 en a la derniere ligne vide respectivement a la colonne G et I

merci de votre aide
 
Dernière édition:

YANN-56

XLDnaute Barbatruc
Re : copier classeur ver un autre

Bonjour dianbobo, et à ceux qui passeront pat là.

Je ne suis pas certain d'avoir tout compris, mais regarde le classeur joint.

Il y peut-être une façon de faire que tu pourrais exploiter.

Amicalement.

Yann
 

Pièces jointes

  • COPIE_FEUILLE.xls
    39 KB · Affichages: 85
  • COPIE_FEUILLE.xls
    39 KB · Affichages: 89
  • COPIE_FEUILLE.xls
    39 KB · Affichages: 82

dianbobo

XLDnaute Junior
Re : copier classeur ver un autre

bonjour YANN-56 ,et a tous
et merci de ton aide
sauf que je n'arrive pas a bien exploiter ton code on peu voir la resolution de cette façon c'est a dire copier les feuille qui m'interresse dans mon classeur de travail avant d'en utiliser les données mais est ce quil n'y a pas moyen de faire en sorte que le code lui meme aille directement sur le classeur qui m'interesse suivant un repertoire bien defini et me copier la feuille , car avec ton code je fait beaucoup de clic !
comme c'est un travail a donner au patron lu il veux par exemple cliquer une seule fois et voir les resultats .

j'ai donc essayé ce code qui est sensé m'aficher le dernier fichier du dossier synthese mais il ne le fait pas il me sort plutot le fichier du 6-juin alors que moi j veux par exemple qu'il me sorte celui du 22-juin 2010.en fait ces fichier sont classer dans l'orde croissant des dates de modifications

voici le code:


Code:
Sub copi_cpr_mli()
Dim sRépertoire As String
Dim sFichier As String
Dim sTemp As String
 
    sRépertoire = "S:\PGB\DER\_Commun\MBO\RESULTAT ECO  suivi quotidien\Synthèse\"
    sTemp = Dir(sRépertoire & "*.xls")
    Do While sTemp <> ""
        sFichier = sTemp
        Debug.Print sFichier  ' ligne à ajouter
        sTemp = Dir
    Loop
    MsgBox "Le dernier fichier : " & sFichier
End Sub

merci de votre aide
 

YANN-56

XLDnaute Barbatruc
Re : copier classeur ver un autre

Bonjour dianbobo et à ceux qui passeront par là

Ce classeur n'est qu'un exemple.
Je me le suis fait pour pouvoir m'en servir comme base
dans mes bidouilles en cours.

L'avantage que j'y trouve est la copie intégrale de la mise
en page pour impression, du contenu et de sa forme…. Et c.

Pour le reste, je vais bien lire ta recherche, et tenter de te construire
un exemple plus proche de ton projet.

A plus tard.

Amicalement

Yann
 

dianbobo

XLDnaute Junior
Re : copier classeur ver un autre

Merci bien d'avance pour cela je vais reecrire ici les differents points de ce que je veux faire :
je travail sur un classeur excel nommé("varparam&hist") dans la feuille ("feuil2")
a faire:
1)aller dans le repertoire indiqué ci-dessous pour trouver le fichier le plus recent (c'est tous des fichiers excel) .
voici le repertoire :
"S:\PGB\DER\_Commun\MBO\RESULTAT ECO suivi quotidien\Synthèse\"fichier cherché

ces fichiers sont dans le dossier synthese et classer selon leur date de modification dans l'odre croissant moi je veux aller dans le fichier le plus recent c'est celui qui a la date la plus elévé
2)une fois dans ce fichier aller dans la feuille ("synthese") et copier les contenus des cellules D32 ET H32 puis les coller dans ma feuil2 du classeur ("varparam&hist") respectivement en colonne M et I a la derniere ligne vide

merci bien de l' aide
 

YANN-56

XLDnaute Barbatruc
Re : copier classeur ver un autre

Bonsoir dianbobo

Dans un Dossier que tu vas appeler, par exemple: "SYNTHESE"
tu vas mettre un Sous-dossier portant impérativement le nom de "EXERCICE",
puis dans ce dernier un Sous-dossier portant impérativement le nom de "LISTE",

Tu comprendras par la suite l'utilité de subdiviser le chemin.

Dans la rubrique "Mots-clé" des propriétés de "ACTU" ci-joint,
tu mets le chemin du Dossier principal.

Comme ceci: (Adapter bien entendu à ta configuration)

S:\Documents and Settings\Propriétaire\Bureau\SYNTHESE

Là aussi; tu comprendras par la suite l'intérêt de le faire.

Tu mets tes Classeurs dans "LISTE", puis tu lances "ACTU"

Le passage par une Listview n'est pas anodin, on en reparlera.

Fais pour l'instant un essai avec ce premier pas.

Amicalement

Yann
 

Pièces jointes

  • ACTU.xls
    24.5 KB · Affichages: 59

dianbobo

XLDnaute Junior
Re : copier classeur ver un autre

Bonjour tout le monde et bonjour Yann
merci de ton aide mais je suis confronté a un probleme ,je ne peu pas suivre tes instructions a la lettre car j'ai pas le droit de changer l'emplacement des classeurs ni de les mettres dans un autre dossier .moi je peu juste les utiliser et rien d'autre ..
j'espere que tu comprend mieux

merci encore si tu peu avoir une autre façon de faire sans mettre les classeurs dans un dossier que je crée ..ça m'arrangerais

merci beaucoup d'avance
 

YANN-56

XLDnaute Barbatruc
Re : copier classeur ver un autre

Bonjour dianbobo, et à ceux qui passeront par ici.

Si j'ai parlé de créer un Dossier avec un Sous-dossier,
ce n'est que pour montrer le fonctionnent des macros.

Tu adapte les Chemins suivant ton cas personnel.
Fais plusieurs tests, et tu y arriveras.

Amicalement.

Yann
 

dianbobo

XLDnaute Junior
Re : copier classeur ver un autre

bonjour,
j'ai adapté la macro selon mon besoin mais j'ai une erreur:

voici la macro:

Code:
Private Sub CommandButton1_Click()
For i = 1 To Me.ListView1.ListItems.Count
If Me.ListView1.ListItems(i).Checked = True Then

Dim CLASSEUR_SOURCE As Workbook
Set CLASSEUR_SOURCE = Workbooks.Open(ThisWorkbook.Keywords & "S:\PGB\DER\_Commun\MBO\" & UserForm1.ListView1.ListItems(i).Text & ".xls")

     With ThisWorkbook
     CLASSEUR_SOURCE.Sheets("MBO").Copy after:=.Worksheets(.Worksheets.Count)
     End With
CLASSEUR_SOURCE.Saved = True
CLASSEUR_SOURCE.Close

End If
Next i
End Sub


Code:
Private Sub UserForm_Initialize()
With Me.ListView1
             .Gridlines = True
             .View = 3
             .Left = 4
             .Top = 0
             .Width = 350
             .Height = Me.Height - 70
             .CheckBoxes = True

                     With .ColumnHeaders
                          .Add , , "CDES", 100
                          .Add , , "DATE NUMERIQUE", 0 ' 0 => NON VISIBLE
                          .Add , , "DERNIERE MISE A JOUR", 140, lvwColumnRight
                          .Add , , "HEURE", 50 ' HEURE
                     End With
End With

Set DOSSIER_A_FOUILLER = CreateObject("Shell.Application")
Set CLASSEURS_EXISTANTS = DOSSIER_A_FOUILLER.Namespace(ThisWorkbook.Keywords & "\RESULTAT ECO  suivi quotidien\Synthèse\")

For Each ELEMENT In CLASSEURS_EXISTANTS.Items

On Error Resume Next 'Au cas où il n'y ait pas de Fichier

If CLASSEURS_EXISTANTS.GetDetailsOf(ELEMENT, 2) Like "Feuille*Excel*" Then
 
     With UserForm1.ListView1
    .ListItems.Add , , CLASSEURS_EXISTANTS.GetDetailsOf(ELEMENT, 0) ' NOM DU FICHIER

    .ListItems(.ListItems.Count).ListSubItems.Add , , _
   CDec(CDate(CLASSEURS_EXISTANTS.GetDetailsOf(ELEMENT, 3))) ' DATE NUMERIQUE

    .ListItems(.ListItems.Count).ListSubItems.Add , , _
     Format(CLASSEURS_EXISTANTS.GetDetailsOf(ELEMENT, 3), "dddd d mmmm yyyy ") ' DATE MISE A JOUR

    .ListItems(.ListItems.Count).ListSubItems.Add , , _
     Format(CLASSEURS_EXISTANTS.GetDetailsOf(ELEMENT, 3), "hh ""h.""mm") 'HEURE MISE A JOUR
    End With

 End If
  
Next ELEMENT

' TRI DE LA LISTE SUIVANT LA DERNIERE MODIFICATION
    UserForm1.ListView1.Sorted = False
    UserForm1.ListView1.SortKey = 1
    UserForm1.ListView1.SortOrder = lvwDescending
    UserForm1.ListView1.Sorted = True
    
UserForm1.ListView1.ListItems(1).Checked = True
End Sub

j'ai une erreur ici:
Code:
For Each ELEMENT In CLASSEURS_EXISTANTS.Items
"variable objet ou variable du bloc with non definie"

merci de votre aide
 

YANN-56

XLDnaute Barbatruc
Re : copier classeur ver un autre

Bonjour dianbobo, et à ceux qui passeront par ici.

Ton chemin n'est pas bon car le " ThisWorkbook.Keywords" doit déjà contenir
S:\PGB\DER\... Et c. donc inutile de le rajouter!

Si tu ne l'utilises pas; tu dois le supprimer.(Dans le CommandButton et l'Initialize)

Code:
Set CLASSEUR_SOURCE = Workbooks.Open("S:\PGB\DER\_Commun\MBO\" & UserForm1.ListView1.ListItems(i).Text & ".xls")

Idem pour Set DOSSIER_A_FOUILLER

Tu regarde, et tu me dis.

A plus tard.

Yann
 

Discussions similaires

Statistiques des forums

Discussions
312 231
Messages
2 086 445
Membres
103 213
dernier inscrit
Poupoule