Aide Macro

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]

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 Sub

Simple 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.

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 Sub

Simple 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 !

Rechercher des sujets similaires à "aide macro"