Aide pour ma macro
Bonjour à tous,
J'aurais besoin d'aide pour ma macro( voir, ci-dessous), je vous explique le problème qui se trouve au niveau de la commande pour le chemin.
Lorsque j'écris cette ligne de cette façon:
chemin = "U:\Organic farming\Data\2_Validated\ORG\2015\" & Range("N1") & ".xlsx"
La macro fonctionne.
Lorsque j'écris cette ligne de cette façon:
i = 1
chemin = "U:\Organic farming\Data\2_Validated\ORG\2015\" & Range("N" & i) & ".xlsx"
La macro ne fonctionne plus or j'ai besoin de faire une boucle sur la colonne N.
Est-ce que quelqu'un serait me dire pourquoi ?
Merci beaucoup.
Sub test()
Dim wkA As Workbook, wkB As Workbook
Dim chemin As String, fichier As String, i As Integer
'i = 1
'classeur A qui contient la macro
Set wkA = ThisWorkbook
'chemin ou se trouve le fichier B
chemin = "U:\Organic farming\Data\2_Validated\ORG\2015\" & Range("N1") & ".xlsx"
'nom du fichier B
'fichier = "ORG_T1OPER_A_AT_2015.xlsx"
'ouvre le fichier B
'For i = 1 To i = Sheets("Database").Range("N65536").End(xlUp).Row
Workbooks.Open chemin '& fichier
'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(3)
MsgBox ("La feuille est maintenant copiée") 'message pour dire que la feuille est copiée.
wkB.Close True 'ferme et enregistre le classeur B
'Next i
End Sub
bonjour,
je te propose le code suivant :
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("Database") 'les noms des classeurs à ouvrir se trouvent dans la feuille database
'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 .Range("N65536").End(xlUp).Row
Workbooks.Open chemin & .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(3)
MsgBox ("La feuille est maintenant copiée") 'message pour dire que la feuille est copiée.
wkB.Close True 'ferme et enregistre le classeur B
Next i
End With
End Sub
h2so4 a écrit :bonjour,
ta variable i est vide lorsque tu executes le code que tu nous as mis, l'instruction i=1 est en commentaire. C'est donc normal que tu aies une erreur.
je vois qu'entretemps le code a changé, donc ignore ce message
Malheureusement même quand i = 1 n'est pas en commentaire ça ne fonctionne quand même pas
h2so4 a écrit :bonjour,
je te propose le code suivant :
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").Range("N65536").End(xlUp).Row Workbooks.Open chemin & 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(3) MsgBox ("La feuille est maintenant copiée") 'message pour dire que la feuille est copiée. wkB.Close True 'ferme et enregistre le classeur B Next i End With End Sub
ca ne marche pas non plus
Pourtant ça devrait marcher, je ne vois pas ou est le problème !
Pour moi c'est la même chose Range("N1") ou i= 1 Range("N" & i)
Merci en tout cas pour votre aide
Bonjour à vous
il manque le nom de la feuille
enfin il me semble
Workbooks.Open chemin & Sheets("Database").Range("N" & i) & ".xlsx"
car comme ceci ça marche chez moi
exact c'est d'ailleurs pour cela que j'avais ajouté une instruction with mais j'ai oublié de mettre le . devant l'instruction range(
BOB71AU a écrit :Bonjour à vous
il manque le nom de la feuille
enfin il me semble
Workbooks.Open chemin & Sheets("Database").Range("N" & i) & ".xlsx"
car comme ceci ça marche chez moi
Merci beaucoup à vous deux ça fonctionne parfaitement merci