Coller uniquement les valeurs dans un script (source.xls --> destination.xls)

pmfontaine

XLDnaute Occasionnel
Bonjour et Meilleur vœux pour 2011.
J'ai trouvé dans le forum ce script qui marche très bien.

Sub miseajour()
Dim classeurSource As Workbook, classeurDestination As Workbook
'ouvrir le classeur source (en lecture seule)
Set classeurSource = Application.Workbooks.Open("C:\dossier_source.xls", , True)
'définir le classeur destination
Set classeurDestination = ThisWorkbook
'copier les données de la "Feuil1" du classeur source vers la "Feuil1" du classeur destination
classeurSource.Sheets("BDD").Range("B6:T2000").Cells.Copy classeurDestination.Sheets("BDD").Range("B6:T2000")
'fermer le classeur source
classeurSource.Close False
End Sub

Mais ce script colle tous, alors que je souhaiterais coller uniquement les valeurs.
J'ai bien cherché sur le forum, mais sans résultat.
Pouver-vous m'aider ?
Merci d'avance
 

Risleure

XLDnaute Occasionnel
Re : Coller uniquement les valeurs dans un script (source.xls --> destination.xls)

Bonjour pmfontaine, le Forum

Avec un collage spécial des valeurs uniquement

Code:
classeurSource.Sheets("BDD").Range("B6:T2000").Cel ls.Copy classeurDestination.Sheets("BDD").Range("B6:T2000" ).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
 

pmfontaine

XLDnaute Occasionnel
Re : Coller uniquement les valeurs dans un script (source.xls --> destination.xls)

Bonjour Risleure, et merci pour ta réponse.
Mais j'ai un problème, il me met systématiquement ton script en rouge en sélectionnant Paste (de "Paste:=xlPasteValues") avec un message « Erreur de compilation: Attendu: fin d'instruction. »
J'ai cherche sur le net, la syntaxe semble correcte et je n'arrive pas à trouver le problème.

Je remets ton script tel que mis sur mon fichier :
classeurSource.Sheets("BDD").Range("B6:T2000").Cells.Copy classeurDestination.Sheets("BDD").Range("B6:T2000").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
 

Risleure

XLDnaute Occasionnel
Re : Coller uniquement les valeurs dans un script (source.xls --> destination.xls)

Re,

il est vrai que je n'ai pas testé avec tes paramètres
Voici ce que donne ma macro et qui fonctionne
Code:
Sub Macro1()
'
    Selection.CurrentRegion.Select
    Selection.Copy
    Windows("Destination.xls").Activate
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub

Peut être un pb de Select et Selection, puisque j'avais "bêtement" remplacé Selection par
classeurSource.Sheets("BDD").Range("B6:T2000").Cel ls.Copy
 

Efgé

XLDnaute Barbatruc
Re : Coller uniquement les valeurs dans un script (source.xls --> destination.xls)

Bonjour pmfontaine, Risleure, le fil, le forum,

Une proposition sans select ni activate:
VB:
Sub miseajour()
Dim Plg
'ouvrir le classeur source
Workbooks.OpenText Filename:="C:\dossier_source.xls", Local:=True
' Prendre la plage du classeur source
Set Plg = ActiveWorkbook.Sheets("BDD").UsedRange
' coller les valeurs de la plage sur la feuille de destination
ThisWorkbook.Sheets("BDD").Cells(1, 1).Resize(Plg.Rows.Count, Plg.Columns.Count) = Plg.Value
' Fermer sans sauvegarde le classeur source
ActiveWorkbook.Close False
End Sub
Cordialement
 

pmfontaine

XLDnaute Occasionnel
Re : Coller uniquement les valeurs dans un script (source.xls --> destination.xls)

Merci Efgé pour ta proposition,
Mais le problème est que dans ta proposition tu copie toute la feuille.
Si non, quel sont les avantages ou les inconvénients d'un script par rapport a l'autre ?

J'aurai une autre question :
Comme ce fichier est en réseau, la lettre du lecteur réseau peut être différent d'un ordinateur à l'autre, mais comme le fichier source ce trouve dans le même dossier que fichier destination, pouvez-vous me dire comment on peut remplacer "C:\dossier_source.xls"
"même dossier\dossier_source.xls"
Si necessaire, j’ouvrirai un nouveau post pour cette question.
Merci beaucoup pour votre aide.
 

Efgé

XLDnaute Barbatruc
Re : Coller uniquement les valeurs dans un script (source.xls --> destination.xls)

Re
Pour répondre à tes deux questions:
1 Copie uniquement de la plage B6:T2000 et récupérer le chemin du classeur où qu'il soit:
VB:
Sub miseajour2()
Dim Plg
'bloquer l'affichage écran
Application.ScreenUpdating = False
'ouvrir le classeur source
Workbooks.OpenText Filename:=ThisWorkbook.Path & "\dossier_source.xls", Local:=True
' Prendre la plage B6:T2000 du classeur source
Set Plg = ActiveWorkbook.Sheets("BDD").Range("B6:T2000")
' coller les valeurs de la plage B6:T2000 sur la feuille de destination
ThisWorkbook.Sheets("BDD").Range("B6:T2000") = Plg.Value
' Fermer sans sauvegarde le classeur source
ActiveWorkbook.Close False
'réactiver l'affichage écran
Application.ScreenUpdating = True
End Sub

2 Le seul avantage de ma proposition est un gain de temps (c'est toujours le cas quand on ne selectionne ni n'active...)
Cordialement

EDIT Merci David et Pascal: je peux éditer mes posts.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 310
Messages
2 087 113
Membres
103 476
dernier inscrit
achref att