Bonjour,
Essayez plutôt d'utiliser la méthode GetOpenFilename.
Cordialement.
PMO
Patrick Morange
Bonjour,
Essayez plutôt d'utiliser la méthode GetOpenFilename.
Cordialement.
PMO
Patrick Morange
Bonjour,
Essayez plutôt d'utiliser la méthode GetOpenFilename.
Cordialement.
PMO
Patrick Morange
Bonsoir,
Ce n'est pas le père Noël quoique ...
Me revoilà avec, ci-dessous, votre code que j'ai
quelque peu modifié.
Je crois que cela devrait convenir.
'*******************
'### A adapter ###
Const MON_CHEMIN As String = "E:Toto"
'#################
Private Declare Function ShellExecute& _
Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long)
Private Sub Rep_E_Click()
Dim typeFichier As String
Dim Titre As String
Dim nomFichier As Variant
''obligatoirement Variant car interprété dans le code
''tantôt comme un Boolean, tantôt comme une String
Call FermeMenuPublic 'ferme le UF
typeFichier = "Fichiers, *.gif; *.txt"
Titre = "sélectionnez le fichier à ouvrir"
On Error GoTo rRr
If Dir(MON_CHEMIN, vbDirectory) <> "" Then
ChDrive MON_CHEMIN
ChDir MON_CHEMIN
Else
Error 76
End If
nomFichier = Application.GetOpenFilename _
(FileFilter:=typeFichier, Title:=Titre)
If nomFichier = False Then
ChDrive Application.DefaultFilePath
ChDir Application.DefaultFilePath
Exit Sub
End If
ShellExecute Application.hwnd, "Open", nomFichier, _
vbNullString, ThisWorkbook.Path, 1
ChDrive Application.DefaultFilePath
ChDir Application.DefaultFilePath
Exit Sub
rRr:
MsgBox Err.Description
End Sub
'*******************
Cordialement.
PMO
Patrick Morange
Bonsoir,
Ce n'est pas le père Noël quoique ...
Me revoilà avec, ci-dessous, votre code que j'ai
quelque peu modifié.
Je crois que cela devrait convenir.
'*******************
'### A adapter ###
Const MON_CHEMIN As String = "E:Toto"
'#################
Private Declare Function ShellExecute& _
Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long)
Private Sub Rep_E_Click()
Dim typeFichier As String
Dim Titre As String
Dim nomFichier As Variant
''obligatoirement Variant car interprété dans le code
''tantôt comme un Boolean, tantôt comme une String
Call FermeMenuPublic 'ferme le UF
typeFichier = "Fichiers, *.gif; *.txt"
Titre = "sélectionnez le fichier à ouvrir"
On Error GoTo rRr
If Dir(MON_CHEMIN, vbDirectory) <> "" Then
ChDrive MON_CHEMIN
ChDir MON_CHEMIN
Else
Error 76
End If
nomFichier = Application.GetOpenFilename _
(FileFilter:=typeFichier, Title:=Titre)
If nomFichier = False Then
ChDrive Application.DefaultFilePath
ChDir Application.DefaultFilePath
Exit Sub
End If
ShellExecute Application.hwnd, "Open", nomFichier, _
vbNullString, ThisWorkbook.Path, 1
ChDrive Application.DefaultFilePath
ChDir Application.DefaultFilePath
Exit Sub
rRr:
MsgBox Err.Description
End Sub
'*******************
Cordialement.
PMO
Patrick Morange
Bonsoir,
Ce n'est pas le père Noël quoique ...
Me revoilà avec, ci-dessous, votre code que j'ai
quelque peu modifié.
Je crois que cela devrait convenir.
'*******************
'### A adapter ###
Const MON_CHEMIN As String = "E:Toto"
'#################
Private Declare Function ShellExecute& _
Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long)
Private Sub Rep_E_Click()
Dim typeFichier As String
Dim Titre As String
Dim nomFichier As Variant
''obligatoirement Variant car interprété dans le code
''tantôt comme un Boolean, tantôt comme une String
Call FermeMenuPublic 'ferme le UF
typeFichier = "Fichiers, *.gif; *.txt"
Titre = "sélectionnez le fichier à ouvrir"
On Error GoTo rRr
If Dir(MON_CHEMIN, vbDirectory) <> "" Then
ChDrive MON_CHEMIN
ChDir MON_CHEMIN
Else
Error 76
End If
nomFichier = Application.GetOpenFilename _
(FileFilter:=typeFichier, Title:=Titre)
If nomFichier = False Then
ChDrive Application.DefaultFilePath
ChDir Application.DefaultFilePath
Exit Sub
End If
ShellExecute Application.hwnd, "Open", nomFichier, _
vbNullString, ThisWorkbook.Path, 1
ChDrive Application.DefaultFilePath
ChDir Application.DefaultFilePath
Exit Sub
rRr:
MsgBox Err.Description
End Sub
'*******************
Cordialement.
PMO
Patrick Morange
Bonsoir Patrick,
5 - Dans le GetOpenFile, j'avais omis "FIleFilter:"" et "Tittle:=" ; ça
fonctionnait néanmoins !
Bonsoir Patrick,
5 - Dans le GetOpenFile, j'avais omis "FIleFilter:"" et "Tittle:=" ; ça
fonctionnait néanmoins !
Bonsoir Patrick,
5 - Dans le GetOpenFile, j'avais omis "FIleFilter:"" et "Tittle:=" ; ça
fonctionnait néanmoins !
patrick étant encore sous le coup du foie gras, il m'a chargé de répondre
à sa place...
c'est quand même avec "title" et un seul T (enfin...deux en tout) que ça
fonctionne le mieux
Mgr T.B.
"j-pascal" a écrit dans le message de news:
OH7yZX%Bonsoir Patrick,
5 - Dans le GetOpenFile, j'avais omis "FIleFilter:"" et "Tittle:=" ; ça
fonctionnait néanmoins !
patrick étant encore sous le coup du foie gras, il m'a chargé de répondre
à sa place...
c'est quand même avec "title" et un seul T (enfin...deux en tout) que ça
fonctionne le mieux
Mgr T.B.
"j-pascal" <nospam-j-pascal@free.fr> a écrit dans le message de news:
OH7yZX%23RIHA.5976@TK2MSFTNGP05.phx.gbl...
Bonsoir Patrick,
5 - Dans le GetOpenFile, j'avais omis "FIleFilter:"" et "Tittle:=" ; ça
fonctionnait néanmoins !
patrick étant encore sous le coup du foie gras, il m'a chargé de répondre
à sa place...
c'est quand même avec "title" et un seul T (enfin...deux en tout) que ça
fonctionne le mieux
Mgr T.B.
"j-pascal" a écrit dans le message de news:
OH7yZX%Bonsoir Patrick,
5 - Dans le GetOpenFile, j'avais omis "FIleFilter:"" et "Tittle:=" ; ça
fonctionnait néanmoins !
Ci-dessous, un petit code quisimule les erreurs et renvoit leurs N° et
descriptif
dans une nouvelle feuille.
Les arguments nommés permettent de ne pas tenir compte des paramètres
ou de les sauter si on n'en pas l'utilité
nomFichier = Application.GetOpenFilename _
(FileFilter:=typeFichier, Title:=Titre)
là seuls les arguments utilisés sont indiqués
Si vous faites menu Outils/Options/onglet Général
vous trouvez Dossier par défaut qui correspond à
"Application.DefaultFilePath"
Const MAX_ERR As Long = 1004
Bonnes fêtes.
Cordialement.
PMO
Patrick Morange
Ci-dessous, un petit code quisimule les erreurs et renvoit leurs N° et
descriptif
dans une nouvelle feuille.
Les arguments nommés permettent de ne pas tenir compte des paramètres
ou de les sauter si on n'en pas l'utilité
nomFichier = Application.GetOpenFilename _
(FileFilter:=typeFichier, Title:=Titre)
là seuls les arguments utilisés sont indiqués
Si vous faites menu Outils/Options/onglet Général
vous trouvez Dossier par défaut qui correspond à
"Application.DefaultFilePath"
Const MAX_ERR As Long = 1004
Bonnes fêtes.
Cordialement.
PMO
Patrick Morange
Ci-dessous, un petit code quisimule les erreurs et renvoit leurs N° et
descriptif
dans une nouvelle feuille.
Les arguments nommés permettent de ne pas tenir compte des paramètres
ou de les sauter si on n'en pas l'utilité
nomFichier = Application.GetOpenFilename _
(FileFilter:=typeFichier, Title:=Titre)
là seuls les arguments utilisés sont indiqués
Si vous faites menu Outils/Options/onglet Général
vous trouvez Dossier par défaut qui correspond à
"Application.DefaultFilePath"
Const MAX_ERR As Long = 1004
Bonnes fêtes.
Cordialement.
PMO
Patrick Morange
La numérotation me paraît assez étrange dans la mesure où plusieurs numéros
font référence à une seule cause, ie "Erreur définie par l'application ou
par l'objet" !
Le code est une bidouille qui ne fait que simuler des erreurs
Const MAX_ERR As Long = 1004
Pourquoi pas "Integer" ?
Je ne suis pas très à l'aise avec la déclaration des variables. Afin de
limiter la mémoire de mon application, j'ai essayé d'enlever tous les
"Variant", et je me retrouve avec pas mal de "String" ; mais je crois
comprendre qu'il est préférable de limiter aussi la valeur de ces chaines !!
Dans ce cas particulier, la constante n'occupe qu'une seule place
La numérotation me paraît assez étrange dans la mesure où plusieurs numéros
font référence à une seule cause, ie "Erreur définie par l'application ou
par l'objet" !
Le code est une bidouille qui ne fait que simuler des erreurs
Const MAX_ERR As Long = 1004
Pourquoi pas "Integer" ?
Je ne suis pas très à l'aise avec la déclaration des variables. Afin de
limiter la mémoire de mon application, j'ai essayé d'enlever tous les
"Variant", et je me retrouve avec pas mal de "String" ; mais je crois
comprendre qu'il est préférable de limiter aussi la valeur de ces chaines !!
Dans ce cas particulier, la constante n'occupe qu'une seule place
La numérotation me paraît assez étrange dans la mesure où plusieurs numéros
font référence à une seule cause, ie "Erreur définie par l'application ou
par l'objet" !
Le code est une bidouille qui ne fait que simuler des erreurs
Const MAX_ERR As Long = 1004
Pourquoi pas "Integer" ?
Je ne suis pas très à l'aise avec la déclaration des variables. Afin de
limiter la mémoire de mon application, j'ai essayé d'enlever tous les
"Variant", et je me retrouve avec pas mal de "String" ; mais je crois
comprendre qu'il est préférable de limiter aussi la valeur de ces chaines !!
Dans ce cas particulier, la constante n'occupe qu'une seule place
Bonsoir,La numérotation me paraît assez étrange dans la mesure où plusieurs
numéros
font référence à une seule cause, ie "Erreur définie par l'application ou
par l'objet" !
Le code est une bidouille qui ne fait que simuler des erreurs
de 1 à MAX_ERR.
Cela a le mérite d'afficher de descriptif des erreurs qui sont
véritablement répertoriées. Ensuite, pour celles qui ne le
sont pas, le Basic doit faire au plus près.Const MAX_ERR As Long = 1004
Pourquoi pas "Integer" ?
Je ne suis pas très à l'aise avec la déclaration des variables. Afin de
limiter la mémoire de mon application, j'ai essayé d'enlever tous les
"Variant", et je me retrouve avec pas mal de "String" ; mais je crois
comprendre qu'il est préférable de limiter aussi la valeur de ces chaines
!!
Dans ce cas particulier, la constante n'occupe qu'une seule place
mémoire et la différence d'occupation entre un Integer et un Long est
très minime et n'a pas d'impact avec les machines actuelles.
Le Long occupe 4 octets et l'Integer 2 octets.
Pour ma part, j'ai pris l'habitude d'utiliser systématiquement des Long
en lieu et place des Integer (sauf cas exceptionnels).
En voici la raison par un exemple concret :
Avant Excel 2007, on comptait 256 colonnes dans Excel et on pouvait coder
Dim numColonne As Integer
numColonne = Selection.Column
Mais, dans le Basic et à contrario du C ou d'autres languages, les
variables numériques sont signées c'est à dire qu'elles ont des valeurs
négatives
ou positives. Ainsi, l'Integer sur 2 octets (soit 16 bits) a :
2 puissance 16 = 65536 contenants avec des contenus s'échelonnant de
-32768 à +32767 (32768 négatifs + 1 zéro + 32767 positifs = 65536)
Maintenant on a Excel 2007 et ses 16000 et quelques colonnes. Et si,
dans un avenir proche, Excel 200x comptait 100 000 colonnes et bien
le code (comme l'exemple ci-dessus) planterait. Tous les programmes
conçus seraient à revoir pour une économie de bout de chandelle.
Conclusion : au diable l'avarice.
Quant aux variables String pas d'inquiétude. Elles n'occupent en
mémoire que leur taille (un caractère = 1 octet)
Cordialement,
PS : désolé pour mon "vouvoiement" intempestif.
PMO
Patrick Morange
Bonsoir,
La numérotation me paraît assez étrange dans la mesure où plusieurs
numéros
font référence à une seule cause, ie "Erreur définie par l'application ou
par l'objet" !
Le code est une bidouille qui ne fait que simuler des erreurs
de 1 à MAX_ERR.
Cela a le mérite d'afficher de descriptif des erreurs qui sont
véritablement répertoriées. Ensuite, pour celles qui ne le
sont pas, le Basic doit faire au plus près.
Const MAX_ERR As Long = 1004
Pourquoi pas "Integer" ?
Je ne suis pas très à l'aise avec la déclaration des variables. Afin de
limiter la mémoire de mon application, j'ai essayé d'enlever tous les
"Variant", et je me retrouve avec pas mal de "String" ; mais je crois
comprendre qu'il est préférable de limiter aussi la valeur de ces chaines
!!
Dans ce cas particulier, la constante n'occupe qu'une seule place
mémoire et la différence d'occupation entre un Integer et un Long est
très minime et n'a pas d'impact avec les machines actuelles.
Le Long occupe 4 octets et l'Integer 2 octets.
Pour ma part, j'ai pris l'habitude d'utiliser systématiquement des Long
en lieu et place des Integer (sauf cas exceptionnels).
En voici la raison par un exemple concret :
Avant Excel 2007, on comptait 256 colonnes dans Excel et on pouvait coder
Dim numColonne As Integer
numColonne = Selection.Column
Mais, dans le Basic et à contrario du C ou d'autres languages, les
variables numériques sont signées c'est à dire qu'elles ont des valeurs
négatives
ou positives. Ainsi, l'Integer sur 2 octets (soit 16 bits) a :
2 puissance 16 = 65536 contenants avec des contenus s'échelonnant de
-32768 à +32767 (32768 négatifs + 1 zéro + 32767 positifs = 65536)
Maintenant on a Excel 2007 et ses 16000 et quelques colonnes. Et si,
dans un avenir proche, Excel 200x comptait 100 000 colonnes et bien
le code (comme l'exemple ci-dessus) planterait. Tous les programmes
conçus seraient à revoir pour une économie de bout de chandelle.
Conclusion : au diable l'avarice.
Quant aux variables String pas d'inquiétude. Elles n'occupent en
mémoire que leur taille (un caractère = 1 octet)
Cordialement,
PS : désolé pour mon "vouvoiement" intempestif.
PMO
Patrick Morange
Bonsoir,La numérotation me paraît assez étrange dans la mesure où plusieurs
numéros
font référence à une seule cause, ie "Erreur définie par l'application ou
par l'objet" !
Le code est une bidouille qui ne fait que simuler des erreurs
de 1 à MAX_ERR.
Cela a le mérite d'afficher de descriptif des erreurs qui sont
véritablement répertoriées. Ensuite, pour celles qui ne le
sont pas, le Basic doit faire au plus près.Const MAX_ERR As Long = 1004
Pourquoi pas "Integer" ?
Je ne suis pas très à l'aise avec la déclaration des variables. Afin de
limiter la mémoire de mon application, j'ai essayé d'enlever tous les
"Variant", et je me retrouve avec pas mal de "String" ; mais je crois
comprendre qu'il est préférable de limiter aussi la valeur de ces chaines
!!
Dans ce cas particulier, la constante n'occupe qu'une seule place
mémoire et la différence d'occupation entre un Integer et un Long est
très minime et n'a pas d'impact avec les machines actuelles.
Le Long occupe 4 octets et l'Integer 2 octets.
Pour ma part, j'ai pris l'habitude d'utiliser systématiquement des Long
en lieu et place des Integer (sauf cas exceptionnels).
En voici la raison par un exemple concret :
Avant Excel 2007, on comptait 256 colonnes dans Excel et on pouvait coder
Dim numColonne As Integer
numColonne = Selection.Column
Mais, dans le Basic et à contrario du C ou d'autres languages, les
variables numériques sont signées c'est à dire qu'elles ont des valeurs
négatives
ou positives. Ainsi, l'Integer sur 2 octets (soit 16 bits) a :
2 puissance 16 = 65536 contenants avec des contenus s'échelonnant de
-32768 à +32767 (32768 négatifs + 1 zéro + 32767 positifs = 65536)
Maintenant on a Excel 2007 et ses 16000 et quelques colonnes. Et si,
dans un avenir proche, Excel 200x comptait 100 000 colonnes et bien
le code (comme l'exemple ci-dessus) planterait. Tous les programmes
conçus seraient à revoir pour une économie de bout de chandelle.
Conclusion : au diable l'avarice.
Quant aux variables String pas d'inquiétude. Elles n'occupent en
mémoire que leur taille (un caractère = 1 octet)
Cordialement,
PS : désolé pour mon "vouvoiement" intempestif.
PMO
Patrick Morange