Probleme macro sur emplacement des fichiers

Bonjour à tous,

Tout d'abord je m'excuse pour les fautes d'orthographe notamment les accents manquants car je suis actuellement aux USA donc j'utilise un clavier Américain...

Je suis en train de faire une macro pour le boulot qui est assez simple. Le but:

En lançant la macro, l'opérateur doit choisir un fichier Excel de référence à l'aide d'une boite de dialogue qui s'ouvre.

En suite toutes les manipulations sont gérées par la macro elle-même l’opérateur n'a plus qu'à attendre.

La macro identifie donc dans certaines cellules (toujours les mêmes) un numéro qui correspond à un nom d'un autre fichier, ouvre ce fichier copie 3 cellules (toujours les mêmes) les colles dans la première macro ouverte et referme ce deuxième fichier.

Ainsi de suite il peut y avoir jusqu'à une dizaine d'ouverture de fichiers "temporaires" dont on copie ces fameuses trois cellules que l'on colle dans le premier classeur ouvert et choisi par l'opérateur.

Toute la macro que j'ai faite fonctionne, je suis quand même assez fier pour une première macro

Mon souci, dont je me suis aperçu qu'à la fin, c'est que ce code marche que si le premier fichier choisi manuellement par l'opérateur a l'ouverture de la macro et tous les autres fichiers ouverts automatiquement par la macro elles même sont dans le MEME dossier...

Forcement la macro est prévue pour un projet et les fichiers que l’on sélectionne manuellement et les autres ne sont pas dans les mêmes dossiers mais dans deux bien distincts.

Même en mettant les bons liens dans la macro ca ne fonctionne pas.

Petite précision, les multiples fichiers ouverts automatiquement sont des fichiers .csv, je ne sais pas si ça change quelques choses.

Je vous mets le code complet de ma macro si vous avez une idée de ce problème qui a mon avis n'est pas très compliqué, même si j'ai déjà passé une journée dessus.

Merci a vous

CODE:

Sub multiselection()

Dim fd As FileDialog

Dim FileChosen As Integer

Dim Wbk1 As Workbook

Dim Wbk2 As Workbook

Dim cyclenumber As String

Dim File As String

Set fd = Application.FileDialog(msoFileDialogFilePicker)

FileChosen = fd.Show

fd.Title = "Chose overview table" ' Set the Title property

fd.InitialFileName = "C:\Users\*******\Desktop\macro" ' Determine the initial folder selected

fd.InitialView = msoFileDialogViewSmallIcons ' Appear on screen (as a list, icons, etc.)

fd.Filters.Clear

fd.Filters.Add "Excel Files", "*.xlsx" ' First clear any existing ones, then add them one by one

fd.ButtonName = "Choose file" ' Set the ButtonName property to control the text on

If FileChosen <> -1 Then

MsgBox "Exit" ' Didn't choose anything (clicked on CANCEL)

Exit Sub

Else

Set Wbk1 = Workbooks.Open(fd.SelectedItems(1)) ' Opening up table chose

End If

'************************************************************

'Loop from the first cycle detected until the end of the list

'************************************************************

For i = 5 To Range("A" & Rows.Count).End(xlUp).Row

cyclenumber = Wbk1.Worksheets(1).Cells(i, 1)

Do While Len(cyclenumber) < 4

cyclenumber = "0" & cyclenumber

Loop

'*********************************

'Opening up P31XXXX_XXX_TEST files

'*********************************

Const strRepertoire = "C:\Users\*******\Desktop\macro\P31XXXX_XXX_TEST_"

File = Dir(strRepertoire & cyclenumber & "*")

If File = "" Then

MsgBox "File not found"

Exit Sub

Else

Set Wbk2 = Workbooks.Open(Filename:=File, ReadOnly:=True)

End If

'*************************************************************************

' Copy and Paste date, start time and end time from P31XXXX files to Table

'*************************************************************************

Wbk1.Worksheets(1).Cells(i, 4) = Wbk2.Worksheets(1).Cells(5, 1) ' Paste date

Wbk1.Worksheets(1).Cells(i, 5) = Wbk2.Worksheets(1).Cells(5, 2) ' Paste start time

Wbk1.Worksheets(1).Cells(i, 6) = Wbk2.Worksheets(1).Cells(65536, 2).End(xlUp).Rows ' Past end time

Wbk2.Close

Next

Wbk1.Activate

End Sub

Je viens d'avancer un peu:

J'ai remplacé cette partie

'*********************************

'Opening up P31XXXX_XXX_TEST files

'*********************************

Const strRepertoire = "C:\Users\*******\Desktop\macro\P31XXXX_XXX_TEST_"

File = Dir(strRepertoire & cyclenumber & "*")

If File = "" Then

MsgBox "File not found"

Exit Sub

Else

Set Wbk2 = Workbooks.Open(Filename:=File, ReadOnly:=True)

End If

Par :

File = "C:\Users\******\Desktop\macro\New_folder\P31XXXX_XXX_TEST_"

File2 = cyclenumber

File3 = "_FTP.csv"

Set Wbk2 = Workbooks.Open(File & File2 & File3)

Et la ça fonctionne.

J'ai décomposé le nom du fichier en plusieurs morceaux juste pour faire des essais et voir ou cela bloque.

Et du coup je ne peux plus utiliser ceci:

File = Dir(strRepertoire & cyclenumber & "*")

le "*" me permettait de m'affranchir de la suite du nom du fichier qui s'ouvre automatiquement avec la macro car il se trouve que ce n'est jamais le même.

Du coup, ma question évolue, avez une solution quand on ne connait pas forcement les suite du nom du fichier mais une bonne partie pour l'ouvrir ?

Je vous remercie

Bon je me permets de répondre de nouveau à mon propre post !

J'ai trouvé la solution que je mets ici, non pas pour exhiber mes "exploits" de débutant mais surtout pour d'autres personnes de passage si elles sont dans le même cas que moi, car c'est grâce à de nombreux forum que j'ai écrit une bonne partie de mon code.

La solution est donc:

' Cette ligne permet d'obtenir le nom du fichier que je ne connaissais pas entièrement, l’Etoile comble les caractères manquants.

file_name = Dir("C:\Users\Peyrillous\Desktop\macro\New_folder\P312060_BCC_TEST_" & cyclenumber & "_*.csv")

' Connaissant juste le nom du fichier je le colle au liens de mon dossier pour avoir le lien global du fichier sur l'ordi

Path = ("C:\Users\Peyrillous\Desktop\macro\New_folder\" & file_name)

J'ai plus qu’à ouvrir le fichier avec le lien complet trouve si dessus

Set Wbk2 = Workbooks.Open(Path, ReadOnly:=True)

Rechercher des sujets similaires à "probleme macro emplacement fichiers"