Aide Macro
m
Bonjour à tous,
Comment faire pour qu'une feuille qui vient d'être copié/collé (d'un classeur à un autre), une fois collé,change de nom en fonction d'un texte inscrit dans une de ces cellules?
J'ai essayé mais je n'y arrive pas.
Est-ce que quelqu'un pourrait me venir en aide ?
Merci
Marion
Sub test()
Dim wkA As Workbook, wkB As Workbook
Dim chemin As String, fichier As String, i As Integer
'classeur A qui contient la macro
Set wkA = ThisWorkbook
With wkA.Sheets(1) 'les noms des classeurs à ouvrir se trouvent dans la feuille 1 en colonne N
'chemin ou se trouve le fichier B
chemin = "U:\Organic farming\Data\2_Validated\ORG\2015\"
'nom du fichier B
'fichier = "ORG_T1OPER_A_AT_2015.xlsx"
'ouvre le fichier B
For i = 1 To Sheets("Database old data").Range("N65536").End(xlUp).Row
Workbooks.Open chemin & Sheets("Database old data").Range("N" & i) & ".xlsx"
'met en variable le classeur B
Set wkB = ActiveWorkbook
'copie la feuille "feuil1" du classeur A avant la feuille 1 dans le classeur B
wkB.Sheets("DATA ENTRY").Copy after:=wkA.Sheets("Data new data")
wkB.Sheets("DATA ENTRY").Select
wkB.Sheets("DATA ENTRY").Name = "AT"
'MsgBox ("Les feuilles sont maintenant copiées") 'message pour dire que la feuille est copiée.
wkB.Close True 'ferme et enregistre le classeur B
Next i
End With
MsgBox ("Les feuilles sont maintenant copiées") 'message pour dire que la feuille est copiée.
End Sub]
M
Bonsoir,
Sub test()
Dim wkB As Workbook, wsA As Worksheet
Dim chemin As String, fichier As String, i As Integer
chemin = "U:\Organic farming\Data\2_Validated\ORG\2015\"
With ThisWorkbook.Sheets(1)
For i = 1 To .Range("N" & .Rows.Count).End(xlUp).Row
Set wkB = Workbooks.Open(chemin & .Range("N" & i) & ".xlsx")
wkB.Sheets("DATA ENTRY").Copy after:=wkA.Sheets("Data new data")
Set wsA = ActiveSheet
wsA.Name = wsA.Range("?") 'référence ???
wkB.Sheets("DATA ENTRY").Name = "AT"
wkB.Close True
Next i
End With
MsgBox "Les feuilles sont maintenant copiées"
End SubSimple réécriture + une ligne si c'est bien ce que tu demandes...
NB- Indenter le code est une nécessité pour le relire sans effort.
m
MFerrand a écrit :Bonsoir,
Sub test() Dim wkB As Workbook, wsA As Worksheet Dim chemin As String, fichier As String, i As Integer chemin = "U:\Organic farming\Data\2_Validated\ORG\2015\" With ThisWorkbook.Sheets(1) For i = 1 To .Range("N" & .Rows.Count).End(xlUp).Row Set wkB = Workbooks.Open(chemin & .Range("N" & i) & ".xlsx") wkB.Sheets("DATA ENTRY").Copy after:=wkA.Sheets("Data new data") Set wsA = ActiveSheet wsA.Name = wsA.Range("?") 'référence ??? wkB.Sheets("DATA ENTRY").Name = "AT" wkB.Close True Next i End With MsgBox "Les feuilles sont maintenant copiées" End SubSimple réécriture + une ligne si c'est bien ce que tu demandes...
NB- Indenter le code est une nécessité pour le relire sans effort.
Grâce à vous, j'ai pu faire ce que je voulais:
Set wsA = ActiveSheet
wsa.Name = wsA.Range("B2")
Merci beaucoup
Effectivement c'est mieux quand le code est indenté ! Merci !