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
5org-coptyp.xlsm (98.38 Ko)

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 à cause de la fameuse ligne Workbooks.Open chemin & Range("N" & i) & ".xlsx"

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

Rechercher des sujets similaires à "aide macro"