OVH Cloud OVH Cloud

Ouvrir un fichier Excel 'comme'

14 réponses
Avatar
Maurice
Bonjour,

=C0 partir d'un champ, j'ouvre un fichier Access, par VBA,=20
dont le nom et mon champs sont en 'relations'.
Ex: Excel.exe C:\"&[champ]&".xls (je ne suis pas certain=20
de la propret=E9 de ce code, mais dans mon code vba, tout=20
est correct)

Le probl=E8me c'est que la fin du nom du fichier change=20
souvent (01;02;03) . Je voudrais donc qu'apr=E8s le nom de=20
mon champ, Access ouvre tout ce qui commence par mon champ.

Exemple: Le fichier C:\209-10-01-02.xls

Mon champ est ici 209. Je voudrais que Access ouvre le=20
fichier Excel en seule fonction du champ, m=EAme si le reste=20
(ici 10-01-02 est n'importe quoi.)

J'ai pens=E9 =E0: Excel.exe C:\"&[champ]&"-"&*&".xls =20
Mais =E7a ne fonctionne pas.

Merci,
Maurice

10 réponses

1 2
Avatar
Raymond [mvp]
Bonjour.

à ma connaissance on ne peux pas lancer excel par le shell et indiquer un
joker dans le nom du classeur.
il reste la solution de faire un FileSearch et de placer tous les fichiers à
la suite. dans ce cas ça marche.
ça donnerait ceci en résultat
Shell "excel.exe Fichier1 fichier2 fichier3", vbMaximizedFocus


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Maurice" a écrit dans le message de
news:392d01c47ef2$55b2c0a0$
Bonjour,

À partir d'un champ, j'ouvre un fichier Access, par VBA,
dont le nom et mon champs sont en 'relations'.
Ex: Excel.exe C:"&[champ]&".xls (je ne suis pas certain
de la propreté de ce code, mais dans mon code vba, tout
est correct)

Le problème c'est que la fin du nom du fichier change
souvent (01;02;03) . Je voudrais donc qu'après le nom de
mon champ, Access ouvre tout ce qui commence par mon champ.

Exemple: Le fichier C:209-10-01-02.xls

Mon champ est ici 209. Je voudrais que Access ouvre le
fichier Excel en seule fonction du champ, même si le reste
(ici 10-01-02 est n'importe quoi.)

J'ai pensé à: Excel.exe C:"&[champ]&"-"&*&".xls
Mais ça ne fonctionne pas.

Merci,
Maurice
Avatar
Maurice
Rebonjour et merci pour votre aide.

Je ne suis juste pas certain du format pour votre code.

Voici le mien, pour un bouton de commande(je n'ai mis que
la partie intéressante:
-----------
Dim stAppName As String

stAppName = "Excel.exe ""C:Fichiers ExcelA-" & Me.[Code_
page] & "-B.dwg"""

Call Shell(stAppName, 1)
-------------
Dans cet exemple-ci, le "B" peut être n'importe quoi
(disons entre A, B, ou C)


Je cherche à placer votre :
--
Shell "excel.exe Fichier1 fichier2 fichier3",
vbMaximizedFocus
--
Selon mon code


Merci,
Maurice
Avatar
Raymond [mvp]
ça convient comme ça pour un seul fichier connu.
maintenant il faut rajouter les n fichiers trouvés.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Maurice" a écrit dans le message de
news:369a01c47f0a$2a824f00$
Rebonjour et merci pour votre aide.

Je ne suis juste pas certain du format pour votre code.

Voici le mien, pour un bouton de commande(je n'ai mis que
la partie intéressante:
-----------
Dim stAppName As String

stAppName = "Excel.exe ""C:Fichiers ExcelA-" & Me.[Code_
page] & "-B.dwg"""

Call Shell(stAppName, 1)
-------------
Dans cet exemple-ci, le "B" peut être n'importe quoi
(disons entre A, B, ou C)


Je cherche à placer votre :
--
Shell "excel.exe Fichier1 fichier2 fichier3",
vbMaximizedFocus
--
Selon mon code


Merci,
Maurice
Avatar
Alexandre
Merci,

Je me suis peut-être mal exprimé, mais ce n'est pas ce que
je cherchais, même si c'est proche.

La procédure que vous m'avez donné marche bien, mais elle
ouvre tous les fichiers que j'ai nommé, alors qu'il n'en
existe qu'un. Donc à chacun qui n'existe pas elle dit
introuvable.

Exemple plus clair:
Le fichier 'champ-A.xls' change de nom pour 'champ-B.xls'
et ensuite pour 'champ-C.xls'.

Mais lorsqu'il change de nom, l'ancien n'existe plus. Donc
si je fais votre procédure, il essaie d'ouvrir 'champ-
A.xls' ET 'champ-B.xls' ET 'champ-C.xls' alors que je
voudrais 'ou' au lieu de 'et'.


Merci énormément pour votre aide passée , et future
j'espère :-P

Alexandre
Avatar
Raymond [mvp]
je ne donnais qu'un exemple de syntaxe de procédure et non une liste de
fichiers réels à ouvrir.
pour connaitre la liste des fichiers à ouvrir il faut utiliser la fonction
Filesearch et placer tous les fichiers trouvés dans la commande shell.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Alexandre" a écrit dans le message de
news:3b7601c47f0f$38f60220$
Merci,

Je me suis peut-être mal exprimé, mais ce n'est pas ce que
je cherchais, même si c'est proche.

La procédure que vous m'avez donné marche bien, mais elle
ouvre tous les fichiers que j'ai nommé, alors qu'il n'en
existe qu'un. Donc à chacun qui n'existe pas elle dit
introuvable.

Exemple plus clair:
Le fichier 'champ-A.xls' change de nom pour 'champ-B.xls'
et ensuite pour 'champ-C.xls'.

Mais lorsqu'il change de nom, l'ancien n'existe plus. Donc
si je fais votre procédure, il essaie d'ouvrir 'champ-
A.xls' ET 'champ-B.xls' ET 'champ-C.xls' alors que je
voudrais 'ou' au lieu de 'et'.


Merci énormément pour votre aide passée , et future
j'espère :-P

Alexandre
Avatar
Maurice
Bonjour,

J'ai essayé ceci:

---------
Private Sub Commande8_Click()
With Application.FileSearch
.NewSearch
.LookIn = "C:Maurice"
.SearchSubFolders = False
.FileName = "70000-" & [champ] & ".xls"
.MatchTextExactly = False
.FileType = msoFileTypeAllFiles
End With

End Sub
-----------
(apres [champ] il peut y avoir d'autres choses, donc j'ai
mis: .MatchTextExactly = False

Il y a un débogage qui se fait sur .FileType =
msoFileTypeAllFiles

Et de plus je ne sais pas comment amener les fichiers
trouvés à s'ouvrir avec shell.

J'ai cherché dans les différentes aides Access (Aide,
forums, etc...) mais je n'ai rien trouvé qui puisse
m'aider la-dessus.

Merci encore,
Maurice
Avatar
Raymond [mvp]
Il te faut cocher la référence Microsoft Office.
pour un exemple de filesearch regarde sur la page:
http://access.vba.free.fr/filesearch.htm
il correspond à ton problème.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Maurice" a écrit dans le message de
news:42b301c47fa1$777e61d0$
Bonjour,

J'ai essayé ceci:

---------
Private Sub Commande8_Click()
With Application.FileSearch
.NewSearch
.LookIn = "C:Maurice"
.SearchSubFolders = False
.FileName = "70000-" & [champ] & ".xls"
.MatchTextExactly = False
.FileType = msoFileTypeAllFiles
End With

End Sub
-----------
(apres [champ] il peut y avoir d'autres choses, donc j'ai
mis: .MatchTextExactly = False

Il y a un débogage qui se fait sur .FileType msoFileTypeAllFiles

Et de plus je ne sais pas comment amener les fichiers
trouvés à s'ouvrir avec shell.

J'ai cherché dans les différentes aides Access (Aide,
forums, etc...) mais je n'ai rien trouvé qui puisse
m'aider la-dessus.

Merci encore,
Maurice
Avatar
Maurice
Rebonjour et remerci pour toute votre aide.

Voici ce que j'ai tenté d'après vos codes, mais sans
succès:

-------------------------------------------------
Public Function Chercher(NomDuChemin As String,
NomDuFichier As String, Sous_répertoires As Boolean) As
String
On Error Resume Next
NomDuChemin = "C:Maurice"
NomDuFichier = "70000-*.xls"
With FileSearch
.NewSearch
.LookIn = NomDuChemin
.FileName = NomDuFichier
.SearchSubFolders = Sous_répertoires
.MatchTextExactly = True
.FileType = msoFileTypeAllFiles
If Execute(msoSortByFileName,
msoSortOrderAscending, True) > 0 Then
For I = 1 To .FoundFiles.Count
Chercher = Chercher & .FoundFiles(I) & ";"
Next I
End If
End With
End Function
------------------------

Private Sub Commande8_Click()
On Error GoTo Err_Commande8_Click

Dim stAppName As String

stAppName = Chercher("c:Maurice*.xls", True)

Call Shell(stAppName, vbMaximizedFocus)

Exit_Commande8_Click:
Exit Sub

Err_Commande8_Click:
MsgBox Err.Description
Resume Exit_Commande8_Click

End Sub
---------------------------------------------------

À stAppName , il me dit Erreur de compilation, argument
non facultatif.

À If Execute(msoSortByFileName, msoSortOrderAscending,
True) > 0 Then
Erreur de compilation, sub ou fonction non définie.
J'ai coché Microsoft Office 10.0 Object Library

Access 2000

Merci encore,
Maurice
Avatar
Maurice
Je voulais aussi dire que j'avais essayé d'entrer le
NomDuFichier et dossier à chercher directement à
FileSearch , mais lorsque je mettais le nom du fichier ou
emplacement dans

Public Function Chercher(NomDuChemin As String,
NomDuFichier As String, Sous_répertoires As Boolean) As
String

(Remplacer NomDuChemin par C:Maurice ou "C:Maurice"
Ça ne fonctionnait pas en raison du : VBA attendait que je
mette des parenthèses ou autre, il le prenait comme une
procédure.

Merci,
Maurice
Avatar
Raymond [mvp]
Comme pour tous les exemples il faut ajuster à son problème particulier. je
et'ai fait une procédure qui fonctionne:

Il faut rajouter
Dim I as Long 'erreur de la fonction
ne pas oublier le point dans .execute ' erreur de la fonction
rajouter le excel.exe 'erreur à toi
remplacer le ; par des guillemets pour pouvoir accepter les noms avec des
espaces.

Private Sub Commande8_Click()
Shell "Excel.exe " & Chercher(C:Maurice, "70000-*.xls", False) ' ou True
End Sub


Public Function Chercher(NomDuChemin As String, NomDuFichier As String,
Sous_répertoires As Boolean) As String
On Error Resume Next
Dim I As Long
With FileSearch
.NewSearch
.LookIn = NomDuChemin
.FileName = NomDuFichier
.SearchSubFolders = Sous_répertoires
.MatchTextExactly = True
.FileType = msoFileTypeAllFiles
If .Execute(msoSortByFileName, msoSortOrderAscending, True) > 0 Then
For I = 1 To .FoundFiles.Count
Chercher = Chercher & """" & .FoundFiles(I) & """ "
Next I
End If
End With
End Function


ça devrait faire.
les exemples resteront toujours des exemples.
j'ai modifié immédiatement mon site pour corriger.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Maurice" a écrit dans le message de
news:420001c47fd5$0cf682a0$
Rebonjour et remerci pour toute votre aide.

Voici ce que j'ai tenté d'après vos codes, mais sans
succès:

-------------------------------------------------
Public Function Chercher(NomDuChemin As String,
NomDuFichier As String, Sous_répertoires As Boolean) As
String
On Error Resume Next
NomDuChemin = "C:Maurice"
NomDuFichier = "70000-*.xls"
With FileSearch
.NewSearch
.LookIn = NomDuChemin
.FileName = NomDuFichier
.SearchSubFolders = Sous_répertoires
.MatchTextExactly = True
.FileType = msoFileTypeAllFiles
If Execute(msoSortByFileName,
msoSortOrderAscending, True) > 0 Then
For I = 1 To .FoundFiles.Count
Chercher = Chercher & .FoundFiles(I) & ";"
Next I
End If
End With
End Function
------------------------

Private Sub Commande8_Click()
On Error GoTo Err_Commande8_Click

Dim stAppName As String

stAppName = Chercher("c:Maurice*.xls", True)

Call Shell(stAppName, vbMaximizedFocus)

Exit_Commande8_Click:
Exit Sub

Err_Commande8_Click:
MsgBox Err.Description
Resume Exit_Commande8_Click

End Sub
---------------------------------------------------

À stAppName , il me dit Erreur de compilation, argument
non facultatif.

À If Execute(msoSortByFileName, msoSortOrderAscending,
True) > 0 Then
Erreur de compilation, sub ou fonction non définie.
J'ai coché Microsoft Office 10.0 Object Library

Access 2000

Merci encore,
Maurice
1 2