XL 2010 utiliser une macro pour copier des cellules d'un classeur à une autre

whiteshark

XLDnaute Nouveau
Bonjour à tous,
Pour commencer je suis un débutant dans le VBA, vraiment débutant. J'ai souvent du mal à comprendre les exemples qui sont donnés.
J'utilise l'enregistreur de macro pour réussir à me dépatouiller.
Et donc mon problème est le suivant :
J'ai deux classeurs excel ouvert le classeurA et le classeurB et je souhaite utiliser une macro pour copier certaine cellules de la feuilleA1 du classeurA vers d'autres cellules de la feuilleB1 du classeurB. Voici mon code.

Sub copier_coller_rendu()
'
' copier_coller Macro
'

'
Application.ScreenUpdating = False

Sheets("feuilleA1").Select
Range("D1").Select
Selection.Copy
Windows("classeurB.xlsm").Activate
Sheets("feuilleB1").Select
Range("C1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("ClasseurA.xlsm").Activate
Range("D2").Select
Application.CutCopyMode = False
Selection.Copy
Windows("classeurB").Activate
Range("C2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("classeurA").Activate
Range("D3").Select
Application.CutCopyMode = False
Selection.Copy
Windows("classeurB").Activate
Range("C3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Application.ScreenUpdating = True

End Sub

La macro marche très bien sauf que mon problème est que si le classeurB ne changera jamais de nom, ce n'est pas le cas du classeurA. Le classeurA est en lecture seul et sera utilisé à de nombreuse reprise mais en étant enregistré sous différents noms. Et là ma commande Windows("classeurA").Activate ne marche plus. Donc ma question est y aurait-il un moyen de rendre la macro plus "générale" pour qu'elle fonctionne quelque soit le nom du classeurA ?

Voilà, j'espère avoir été assez claire.

Merci pour votre aide
 

Jacky67

XLDnaute Barbatruc
Bonjour à tous,
Pour commencer je suis un débutant dans le VBA, vraiment débutant. J'ai souvent du mal à comprendre les exemples qui sont donnés.
J'utilise l'enregistreur de macro pour réussir à me dépatouiller.
Et donc mon problème est le suivant :
J'ai deux classeurs excel ouvert le classeurA et le classeurB et je souhaite utiliser une macro pour copier certaine cellules de la feuilleA1 du classeurA vers d'autres cellules de la feuilleB1 du classeurB. Voici mon code.

Sub copier_coller_rendu()
'
' copier_coller Macro
'

'
Application.ScreenUpdating = False

Sheets("feuilleA1").Select
Range("D1").Select
Selection.Copy
Windows("classeurB.xlsm").Activate
Sheets("feuilleB1").Select
Range("C1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("ClasseurA.xlsm").Activate
Range("D2").Select
Application.CutCopyMode = False
Selection.Copy
Windows("classeurB").Activate
Range("C2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("classeurA").Activate
Range("D3").Select
Application.CutCopyMode = False
Selection.Copy
Windows("classeurB").Activate
Range("C3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Application.ScreenUpdating = True

End Sub

La macro marche très bien sauf que mon problème est que si le classeurB ne changera jamais de nom, ce n'est pas le cas du classeurA. Le classeurA est en lecture seul et sera utilisé à de nombreuse reprise mais en étant enregistré sous différents noms. Et là ma commande Windows("classeurA").Activate ne marche plus. Donc ma question est y aurait-il un moyen de rendre la macro plus "générale" pour qu'elle fonctionne quelque soit le nom du classeurA ?

Voilà, j'espère avoir été assez claire.

Merci pour votre aide
Bonjour,
Si j'ai bien compris…..
Macro à exécuter dans les "ClasseurA"
VB:
Sub copier_coller_rendu()
    Application.ScreenUpdating = False
    ThisWorkbook.Sheets("FeuilleA1").[D1:d3].Copy
    Workbooks("ClasseurB.xlsm").Sheets("FeuilleB1").[c1].PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Une variante (sans copier/coller et en passant par un array)
VB:
Sub CopierColler_Mais_Sans_CopierColler()
Dim t
Application.ScreenUpdating = False
t = ThisWorkbook.Sheets("FeuilleA1").[D1:D3].Value
Workbooks("ClasseurB.xlsm").Sheets("FeuilleB1").[C1].Resize(UBound(t, 1)).Value = t
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 900
Membres
101 834
dernier inscrit
Jeremy06510