Copier plages d'un classeur fermé

kadelmalin

XLDnaute Occasionnel
Bonjour chers amis,
Je recours à votre aide pour résoudre un problème de copie des plages A2:I30 et L2:Q30 du classeur cible fermé dans le classeur cible qui contient les mêmes colonnes mais vierges. Merci de votre assistance.
 

Pièces jointes

  • XLC_Cible.xls
    62.5 KB · Affichages: 46
  • XLC_Source.xls
    69 KB · Affichages: 38

youky(BJ)

XLDnaute Barbatruc
Bonjour malin,
Essaie ceci macro à mettre dans un module
Bien modifier le nom du fichier Source
les 2 fichiers doivent être dans le même dossier.
Bruno
VB:
Sub ouverture()
'vu
Application.ScreenUpdating = False
For Each Wb In Workbooks
  If Wb.Name = "XLC_Source.xls" Then 'modifier nom du fichier..........
    Workbooks(Wb.Name).Activate: k = 1
  End If
Next
If k = "" Then
chemfich = ThisWorkbook.Path & "\XLC_Source.xls.xls" 'ici aussi.........
On Error Resume Next
Workbooks.Open chemfich
If Err <> 0 Then MsgBox "XLC_Source.xls non trouvé": Exit Sub 'là aussi..
End If
ActiveWindow.WindowState = xlMinimized
ThisWorkbook.Activate
ActiveWindow.WindowState = xlMaximized
With Workbooks("XLC_Source.xls").Sheets(1) 'encore ici...................
'Feuil1.[A2:Q1000].Clear
Feuil6.[A2:I30].Value = .[A2:I30].Value
Feuil6.[L2:Q30].Value = .[L2:Q30].Value
End With
Workbooks("XLC_Source.xls").Close False 'encore ici.......................
End Sub

Edit: A rectifier dans le code
With Workbooks("XLC_Source.xls").Sheets("Mouv")
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Bonsoir kadelmalin :), Bruno :)

Une autre façon, sans ouvrir le fichier source. Change le chemin du classeur.

VB:
Sub Copie_Donnees()

  Application.ScreenUpdating = False

  [A2:I30].ClearContents
  [L2:Q30].ClearContents

  On Error Resume Next

  With [A2:I30]
  .Formula = "='C:\Users\TOTO\Desktop\[XLC_Source]Feuil6'!A2:I30"
  .AutoFill [A2:I30]
  .Value = .Value
  End With

  With [L2:Q30]
  .Formula = "='C:\Users\TOTO\Desktop\[XLC_Source]Feuil6'!L2:Q30"
  .AutoFill [L2:Q30]
  .Value = .Value
  End With

End Sub
 
Dernière édition:

kadelmalin

XLDnaute Occasionnel
Salut !
Me voilà de retour ! Le post #1 était parfait mais j'ai opté pour le post #2 qui m'évitait d'ouvrir le classeur source; seulement je suis obligé de lui indiquer le chemin. Y a-t-il un moyen pour qu'il prenne en compte le dossier actif ou se trouve les 2 classeurs. Merci et pardonnez si j'abuse de votre temps.
 

youky(BJ)

XLDnaute Barbatruc
Hééé,
Salut Jacky et kadelmalin,
On peut très bien indiquer le chemin du classeur par la commande ThisWorkbook.Path
donc .Formula = "=' " & ThisWorkbook.Path & "\[XLC_Source]Feuil6'!A2:I30"
Je n'ai pas testé mais ça doit faire l'affaire.
Bruno
 

youky(BJ)

XLDnaute Barbatruc
Oui,
Chez moi c'est C: comme l'indique la copie d'écran
upload_2017-2-25_17-3-54.png
 

Lone-wolf

XLDnaute Barbatruc
Re

Bruno, le classeur receveur est sur le bureau, les classeurs sources sont dans D:\xxx - E:\xxx -F:\xxx par exemple, de plus
" J'ignore dans quel dossier l'utilisateur va mettre son classeur"; et si ils sont en réseau, je ne suis pas vraiment certain avec ThisWorkbook.Path. Ce qu'il doit faire, c'est connaître le chemin des dossiers, ensuite il pourrat faire comme ceci

VB:
Option Explicit

Public Const chemin1 As String = "D:\Users\Salam\OK\"
Public Const chemin2 As String = "E:\Users\Alei\D'ACCORD\"
Public Const chemin3 As String = "F:\Users\Coum\J'AI COMPRIS\"
 
Dernière édition:

Discussions similaires

Réponses
22
Affichages
755

Statistiques des forums

Discussions
312 175
Messages
2 085 952
Membres
103 058
dernier inscrit
florentLP