Se connecter avec
S'enregistrer | Connectez-vous

[EXCEL] Recherche d'un fichier par macro

Dernière réponse : dans Programmation

Bijour!
Voici mon problème:
Je travaille dans un fichier Feuille_de_Calcul.xls
J'appelle un fichier Tarifs.xls dans lequel j'ai mes grilles de tarifs et je dois l'avoir ouvert pour que ca fonctionne avec mes  
workbooks("tarifs.xls").sheets(feuil1).Range(col1 & lig1).Value  
(qui vont chercher les cellules de mes grilles selon mes variables-parametres feuil1, col1 et lig1)
 
Je voudrais pouvoir travailler sur ma Feuille_de_Calcul.xls sans avoir a ouvrir Tarifs.xls et idéalement en faisant a l'ouverture de Feuille_de_Calcul.xls, une recherche du fichier Tarifs.xls sur l'ensemble du disque dur (voire sur le reseau) (je suis sur Mac OS X), en le rendant actif sans l'ouvrir et en affichant un message si je ne trouve pas le fichier en question.

Ca permettrait de pouvoir déplacer les fichiers sans avoir a actualiser le chemin à chaque fois dans le code (surtout que c'est pas moi qui vais utiliser ses fichiers).
 
Ce serait le panard :bounce: 
 
Merci d'avance!

Autres pages sur : excel recherche fichier macro

Lassé par la pub ? Créez un compte

jai trouvé un truc super:

[code]
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

End Sub




Option Compare Text
Private Type
FILETIME dwLowDateTime As Long
dwHighDateTime As Long
End Type Private Type WIN32_FIND_DATA dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * 260
cAlternate As String * 14
End Type

Private Declare Function
FindFirstFileA Lib "Kernel32" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long

Private Declare Function
FindNextFileA Lib "Kernel32" (ByVal hFindfile As Long, lpFindFileData As WIN32_FIND_DATA) As Long

Private Declare Function
FindClose Lib "Kernel32" (ByVal hFindfile As Long) As Long

Declare Function
GetFileAttributesA Lib "Kernel32" (ByVal lpFileName As String) As Long
Const Masque = "*.xls"
Dim Arr() As String
Dim NbFichiers As Long
Dim FileFindData As WIN32_FIND_DATA
Dim Fichier As String

Sub Test() ReDim Arr(1 To 1)
NbFichiers = 0 Recurse "C:\" Application.ScreenUpdating = False
With Range("A1")
.Resize(NbFichiers) .Value = Application.Transpose(Arr) .Sort [A1]
.EntireColumn.AutoFit
End With
End Sub

Private Sub Recurse(ByVal Chemin As String)
Dim hFindfile As Long h
FindFile = FindFirstFileA(Chemin & "*.*", FileFindData)
If Chemin <> "C:\" Then
FindNextFileA hFindfile, FileFindData
If FindNextFileA(hFindfile, FileFindData) = 0 Then
FindClose hFindfile
Exit Sub
End If
End If
Do Fichier = Chemin & Left$(FileFindData.cFileName, _
InStr(1, FileFindData.cFileName, vbNullChar) - 1)
If GetFileAttributesA(Fichier) And vbDirectory Then
Recurse Fichier & "\"
ElseIf Fichier Like Masque Then
NbFichiers = NbFichiers + 1
ReDim Preserve Arr(1 To NbFichiers)
Arr(NbFichiers) = Fichier
End If
Loop While FindNextFileA(hFindfile, FileFindData) FindClose hFindfile
End Sub
[code]

Mais ca marche pas sur mac evidemment et je me sens pas a la hauteur de corriger tout ce qui passe pas .. :/ 

Je trouve dingue que ce soit aussi compliqué de chercher un fichier fichier.xls sur un disque dur :( 
Lassé par la pub ? Créez un compte