Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Je cherche un code qui trouve dans un rep. des classeurs contenant des macros.

43 réponses
Avatar
Emile63
Bonjour a tous,

Je recherche un code qui me permettrait de lister dans un classeur,
depuis un r=E9pertoire, donn=E9 tous les fichiers (Excel + Word, serrait
encore mieux) qu'il contient et la colonne d'=E0 c=F4t=E9, s'ils comprennen=
t
des macros VBA.
Je vous remercie d'avance pour vos propositions,
Cordialement,
Emile

10 réponses

1 2 3 4 5
Avatar
michdenis
Dans la fenêtre de l'éditeur de code,
Menu / outils / références / dans la fenêtre, décoche les références manquantes.

Sous Excel 2003, il n'y a aucune raison pour cette ligne de code
Dim x As Office.FileSearch
de générer une erreur.

Utilise un classeur tout neuf.
Insère cette procédure. Est-ce que cela génère une erreur ?
'-----------------------
Sub test()
Dim x As Office.FileSearch
End Sub
'-----------------------
--
MichD
--------------------------------------------


"Emile63" a écrit dans le message de groupe de discussion :

Bonjour Isabelle et MichDenis,

Michel, Oui, les deux cases sont cochées.
Isabelle, malheureusement la déclaration: Dim FS As Office.FileSearch
n'arrange rien, et j'ai la même erreur.
Et le remplacement de Test1 par Test2 ne fonctionne pas non plus.
En fait, je souhaite me renseigner des fichier + macros existant dans
le serveur de la société.
et déclare le sPath comme suit:

sPath = "servecentreEmile"
ChDir sPath
sFil = Dir("*.xls")

Malheureusement, le fichier qu'il rapporte de Dir dans sFil, provient
du repertoire (actuel) de la machine dans ce cas le Temporaire, et
bien sur il ne trouve pas ce fichier dans le répertoire
indiqué(sPath).
Une idée.. :-))
Cordialement,

Emile
Avatar
Emile63
On 17 sep, 17:16, "michdenis" wrote:
Dans la fenêtre de l'éditeur de code,
Menu / outils / références / dans la fenêtre, décoche les réf érences manquantes.

Sous Excel 2003, il n'y a aucune raison pour cette ligne de code
Dim x As Office.FileSearch
de générer une erreur.

Utilise un classeur tout neuf.
Insère cette procédure. Est-ce que cela génère une erreur ?
'-----------------------
Sub test()
Dim x As Office.FileSearch
End Sub
'-----------------------
--
MichD
--------------------------------------------



Bonjour Michel,
Merci pour ta solicitude. :-)

Je n'ai pas bien compris quelles references dois-je décrocher
exactement?
Manquantes par rapport au nouveau classeur?

Je n'ai pas d'erreurs depuis le nouveau classeur...

Là, j'avoue que je ne comprends pas... :-(
Avatar
Emile63
re bonjour a tous,

Pour si cela peut contribuer à la cause..
Avec le déboggueur je test le fonctionnement de la procédure Test1:

Sub test1()
Dim I&, t$, ww As Object ---------> OK
Dim FS As Office.FileSearch -------> OK
Set FS = Application.FileSearch ---> Erreur 1004 - Erreur de la
Methode 'FileSearch' de l'objet '_Application'
Avatar
michdenis
Dans la fenêtre des références, si certaines sont indiquées "Manquantes"
tu les décoches. S'il n'y en a pas, tu n'as rien à faire !

Tu as testé la procédure dans un fichier tout neuf ?

--
MichD
--------------------------------------------


"Emile63" a écrit dans le message de groupe de discussion :

On 17 sep, 17:16, "michdenis" wrote:
Dans la fenêtre de l'éditeur de code,
Menu / outils / références / dans la fenêtre, décoche les références manquantes.

Sous Excel 2003, il n'y a aucune raison pour cette ligne de code
Dim x As Office.FileSearch
de générer une erreur.

Utilise un classeur tout neuf.
Insère cette procédure. Est-ce que cela génère une erreur ?
'-----------------------
Sub test()
Dim x As Office.FileSearch
End Sub
'-----------------------
--
MichD
--------------------------------------------



Bonjour Michel,
Merci pour ta solicitude. :-)

Je n'ai pas bien compris quelles references dois-je décrocher
exactement?
Manquantes par rapport au nouveau classeur?

Je n'ai pas d'erreurs depuis le nouveau classeur...

Là, j'avoue que je ne comprends pas... :-(
Avatar
isabelle
bonjour Emile,

est ce qu'il y a un message d'erreur sur la macro test2 ?

isabelle

Le 2010-09-17 10:55, Emile63 a écrit :
Bonjour Isabelle et MichDenis,

Michel, Oui, les deux cases sont cochées.
Isabelle, malheureusement la déclaration: Dim FS As Office.FileSearch
n'arrange rien, et j'ai la même erreur.
Et le remplacement de Test1 par Test2 ne fonctionne pas non plus.
En fait, je souhaite me renseigner des fichier + macros existant dans
le serveur de la société.
et déclare le sPath comme suit:

sPath = "servecentreEmile"
ChDir sPath
sFil = Dir("*.xls")

Malheureusement, le fichier qu'il rapporte de Dir dans sFil, provient
du repertoire (actuel) de la machine dans ce cas le Temporaire, et
bien sur il ne trouve pas ce fichier dans le répertoire
indiqué(sPath).
Une idée.. :-))
Cordialement,

Emile
Avatar
Emile63
Bonjour MichDenis et Isabelle,
J'espère que vous avez passé un bon Week-end :-)

MichDenis:
Je n'ai pas de reférences manquantes.
et la proc. ci-dessous ne génère pas d'erreurs.
'-----------------------
Sub test9()
Dim x As Office.FileSearch
End Sub
'-----------------------


Isabelle:
Comme j'essayais de l'expliquer... (Msg du 17 sep. 16:55)
il y a bien un message d'erreur sur cette nouvelle proc. mais ce n'est
pas un dysfonctionnement cette fois, c'est qu'il ne trouve pas le
fichier qu'il cherche dans le répertoire désigné.
Je lui indique de chercher dans un répertoire qui se trouve sur un
serveur déclaré avec sPath.
sPath = "serveurEmile"

Et (en vérifiant je constate que) le "dir" de la procédure pointe sur
le rép. Windows/temp (mon répertoire actuel), autrement dit j'ai
l'impression que la commande: "ChDir sPath" ne fonctionne pas
correctement.

Du coup, comme il ne peut pas trouver le fichier (généré par le dir)
qui se trouve dans le répertoire (temp) dans le répertoire indiqué, (
serveur) il génère un message d'erreur:
"1004; Ne peut pas trouver le fichier. Vérifier le nom du fichier...
etc.. "
Ce qui fait que je n'ai pas pu encore tester le reste de la procédure,
puisque je me retrouve bloqué à la 5ème ligne.
ICI -> Set fich = Workbooks.Open(sPath & "" & sFil)
Je vous remercie pour votre aide,
Cordialement,
Emile
Avatar
michdenis
une procédure pour remplacer ChDir avec un lecteur/répertoire réseau

'Déclaration de l'API dans le haut d'un module Standard

Declare Function SetCurrentDirectoryA Lib _
"kernel32" (ByVal lpPathName As String) As Long
'------------------------------------
Sub ChDirNet(szPath As String)
'collectif, d'après Laurent Longre, mpep
Dim lReturn As Long
lReturn = SetCurrentDirectoryA(szPath)
If lReturn = 0 Then Err.Raise vbObjectError + 1, "Error setting path."
End Sub
'------------------------------------

Exemple :
'-----------------------------------
Sub GetFile()
On Error GoTo ErrHandler
ChDirNet "serveurEmile"
Exit Sub
ErrHandler:
MsgBox "Couldn't set path"
End Sub
'------------------------------------

Dans ton code, au lieu d'utiliser ceci :

ChDir sPath
Tu remplaces par cela :
ChDirNet "serveurEmile"



--
MichD
--------------------------------------------


"Emile63" a écrit dans le message de groupe de discussion :

Bonjour MichDenis et Isabelle,
J'espère que vous avez passé un bon Week-end :-)

MichDenis:
Je n'ai pas de reférences manquantes.
et la proc. ci-dessous ne génère pas d'erreurs.
'-----------------------
Sub test9()
Dim x As Office.FileSearch
End Sub
'-----------------------


Isabelle:
Comme j'essayais de l'expliquer... (Msg du 17 sep. 16:55)
il y a bien un message d'erreur sur cette nouvelle proc. mais ce n'est
pas un dysfonctionnement cette fois, c'est qu'il ne trouve pas le
fichier qu'il cherche dans le répertoire désigné.
Je lui indique de chercher dans un répertoire qui se trouve sur un
serveur déclaré avec sPath.
sPath = "serveurEmile"

Et (en vérifiant je constate que) le "dir" de la procédure pointe sur
le rép. Windows/temp (mon répertoire actuel), autrement dit j'ai
l'impression que la commande: "ChDir sPath" ne fonctionne pas
correctement.

Du coup, comme il ne peut pas trouver le fichier (généré par le dir)
qui se trouve dans le répertoire (temp) dans le répertoire indiqué, (
serveur) il génère un message d'erreur:
"1004; Ne peut pas trouver le fichier. Vérifier le nom du fichier...
etc.. "
Ce qui fait que je n'ai pas pu encore tester le reste de la procédure,
puisque je me retrouve bloqué à la 5ème ligne.
ICI -> Set fich = Workbooks.Open(sPath & "" & sFil)
Je vous remercie pour votre aide,
Cordialement,
Emile
Avatar
Emile63
Bonjour MichDenis,
Et merci pour ta patience... :-)

J'ai copié cette procédure dans le module, en prenant garde de bien
indiquer la déclaration tout en haut du module, mais ça "croche"
toujours au niveau du Path...
Je résume:

Declare Function SetCurrentDirectoryA Lib "kernel32" (ByVal lpPathName
As String) As Long

Sub ChDirNet(szPath As String)
'collectif, d'après Laurent Longre, mpep
Dim lReturn As Long
lReturn = SetCurrentDirectoryA(szPath)
If lReturn = 0 Then Err.Raise vbObjectError + 1, "Error setting
path."
End Sub
'------------------------------------
Sub GetFile()
On Error GoTo ErrHandler
ChDirNet "serveurEmile"
Exit Sub
ErrHandler:
MsgBox "Couldn't set path"
End Sub
'-------------------------------------
Sub test2()
Dim wks As Object, fich, sPath, sFil
Application.ScreenUpdating = False
Set wks = ThisWorkbook
ChDirNet "serveurEmile"
sFil = Dir("*.xls")
Do While sFil <> ""
Set fich = Workbooks.Open(sPath & "" & sFil)
wks.Activate
Liste (fich.Name)
fich.Close SaveChanges:úlse
sFil = Dir
Loop
Application.ScreenUpdating = True
End Sub
Avatar
isabelle
bonjour Emile,

il faudrait peut être faire un ChDrive avant le ChDir.

isabelle

Le 2010-09-20 11:04, Emile63 a écrit :
Bonjour MichDenis,
Et merci pour ta patience... :-)

J'ai copié cette procédure dans le module, en prenant garde de bien
indiquer la déclaration tout en haut du module, mais ça "croche"
toujours au niveau du Path...
Avatar
michdenis
A ) Comme je ne travaille pas en réseau, je ne peux pas effectuer de test...

B ) Dans un de tes messages précédents, tu utilises comme chemin ceci :
sPath = "servecentreEmile"

Tu dis avoir testé la proposition de ce matin avec ce chemin :
sPath = "serveEmile"

Es-tu vraiment sûr du chemin que tu indiques ?
Si un message d'erreur est généré, quel est-il ?

Comme cette procédure est signée de Laurent Longre,
ça lui confère une crédibilité certaine...


--
MichD
--------------------------------------------


"Emile63" a écrit dans le message de groupe de discussion :

Bonjour MichDenis,
Et merci pour ta patience... :-)

J'ai copié cette procédure dans le module, en prenant garde de bien
indiquer la déclaration tout en haut du module, mais ça "croche"
toujours au niveau du Path...
Je résume:

Declare Function SetCurrentDirectoryA Lib "kernel32" (ByVal lpPathName
As String) As Long

Sub ChDirNet(szPath As String)
'collectif, d'après Laurent Longre, mpep
Dim lReturn As Long
lReturn = SetCurrentDirectoryA(szPath)
If lReturn = 0 Then Err.Raise vbObjectError + 1, "Error setting
path."
End Sub
'------------------------------------
Sub GetFile()
On Error GoTo ErrHandler
ChDirNet "serveurEmile"
Exit Sub
ErrHandler:
MsgBox "Couldn't set path"
End Sub
'-------------------------------------
Sub test2()
Dim wks As Object, fich, sPath, sFil
Application.ScreenUpdating = False
Set wks = ThisWorkbook
ChDirNet "serveurEmile"
sFil = Dir("*.xls")
Do While sFil <> ""
Set fich = Workbooks.Open(sPath & "" & sFil)
wks.Activate
Liste (fich.Name)
fich.Close SaveChanges:úlse
sFil = Dir
Loop
Application.ScreenUpdating = True
End Sub
1 2 3 4 5