Bonsoir,
j'ai un problème que je n'arrive pas à résoudre seul:
J'ai une fonction publique avec GetOpenFileName qui me met le nom du fichier
choisi dans la variable "fichier".
Je dois récupérer ce nom dans une autre macro qui apelle la fonction
précédente.
Seulement, au retour de la fonction, ma variable "fichier" ne contient rien.
J'ai tenté de la déclarer publique, mais cela ne change rien.
Quelqu'un saurait il me dire comment faire?
Mes recherches n'ont rien donné...
Merci
Mac Ab, chercheur...
--
Remplacez le 1 dans l'@ par un " i " pour répondre
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.502 / Virus Database: 300 - Release Date: 18/07/2003
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pierre Fauconnier
Bonsoir
Si tu souhaites déclarer ta variable publique, tu dois la dimensionner EN DEBUT de module standard, avant toute procédure ou fonction, et après l'éventuelle ( et conseillée!!) ligne Option Explicit
Cette solution rend ta variable publique et donc utilisable par n'importe quelle fonction ou procédure de n'importe quel module de ton projet vba.
Une autre technique est de passer la valeur en argument de la procédure qui en a besoin
Sub Proc1() Dim Variable1 as String Variable1 = "Pierre" Proc2 Variable1 ... End Sub
Sub Proc2(VarProc2 as String) MsgBox VarProc2 ... End Sub
Sub ProcGen() Proc1 Proc2 ... End Sub
Si tu lances ProcGen, tu auras un message à l'écran affichant Pierre.
-- Cela convient-il? ---- Pierre Fauconnier "N'insulte pas le crocodile avant d'avoir traversé la rivière" (Julos Beaucarne)
Mac Ab and O'Canada wrote:
Bonsoir, j'ai un problème que je n'arrive pas à résoudre seul:
J'ai une fonction publique avec GetOpenFileName qui me met le nom du fichier choisi dans la variable "fichier". Je dois récupérer ce nom dans une autre macro qui apelle la fonction précédente. Seulement, au retour de la fonction, ma variable "fichier" ne contient rien. J'ai tenté de la déclarer publique, mais cela ne change rien. Quelqu'un saurait il me dire comment faire? Mes recherches n'ont rien donné... Merci
Mac Ab, chercheur...
Bonsoir
Si tu souhaites déclarer ta variable publique, tu dois la dimensionner EN
DEBUT de module standard, avant toute procédure ou fonction, et après
l'éventuelle ( et conseillée!!) ligne Option Explicit
Cette solution rend ta variable publique et donc utilisable par n'importe
quelle fonction ou procédure de n'importe quel module de ton projet vba.
Une autre technique est de passer la valeur en argument de la procédure qui
en a besoin
Sub Proc1()
Dim Variable1 as String
Variable1 = "Pierre"
Proc2 Variable1
...
End Sub
Sub Proc2(VarProc2 as String)
MsgBox VarProc2
...
End Sub
Sub ProcGen()
Proc1
Proc2
...
End Sub
Si tu lances ProcGen, tu auras un message à l'écran affichant Pierre.
--
Cela convient-il?
----
Pierre Fauconnier
"N'insulte pas le crocodile avant d'avoir traversé la rivière" (Julos
Beaucarne)
Mac Ab and O'Canada wrote:
Bonsoir,
j'ai un problème que je n'arrive pas à résoudre seul:
J'ai une fonction publique avec GetOpenFileName qui me met le nom du
fichier choisi dans la variable "fichier".
Je dois récupérer ce nom dans une autre macro qui apelle la fonction
précédente.
Seulement, au retour de la fonction, ma variable "fichier" ne
contient rien. J'ai tenté de la déclarer publique, mais cela ne
change rien. Quelqu'un saurait il me dire comment faire?
Mes recherches n'ont rien donné...
Merci
Si tu souhaites déclarer ta variable publique, tu dois la dimensionner EN DEBUT de module standard, avant toute procédure ou fonction, et après l'éventuelle ( et conseillée!!) ligne Option Explicit
Cette solution rend ta variable publique et donc utilisable par n'importe quelle fonction ou procédure de n'importe quel module de ton projet vba.
Une autre technique est de passer la valeur en argument de la procédure qui en a besoin
Sub Proc1() Dim Variable1 as String Variable1 = "Pierre" Proc2 Variable1 ... End Sub
Sub Proc2(VarProc2 as String) MsgBox VarProc2 ... End Sub
Sub ProcGen() Proc1 Proc2 ... End Sub
Si tu lances ProcGen, tu auras un message à l'écran affichant Pierre.
-- Cela convient-il? ---- Pierre Fauconnier "N'insulte pas le crocodile avant d'avoir traversé la rivière" (Julos Beaucarne)
Mac Ab and O'Canada wrote:
Bonsoir, j'ai un problème que je n'arrive pas à résoudre seul:
J'ai une fonction publique avec GetOpenFileName qui me met le nom du fichier choisi dans la variable "fichier". Je dois récupérer ce nom dans une autre macro qui apelle la fonction précédente. Seulement, au retour de la fonction, ma variable "fichier" ne contient rien. J'ai tenté de la déclarer publique, mais cela ne change rien. Quelqu'un saurait il me dire comment faire? Mes recherches n'ont rien donné... Merci
Mac Ab, chercheur...
Frédéric Sigonneau
Bonsoir,
Pour utiliser la valeur d'une variable entre deux procédures :
'dans un module standard========== Public Fichier$
Sub Choisis() Dim tmp$ Fichier = Application.GetOpenFilename If Dir(Fichier) = "" Then Fichier = "Aucun fichier choisi" End If End Sub
Sub test() Fichier = "" Choisis MsgBox Fichier End Sub '================================= FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
Bonsoir, j'ai un problème que je n'arrive pas à résoudre seul:
J'ai une fonction publique avec GetOpenFileName qui me met le nom du fichier choisi dans la variable "fichier". Je dois récupérer ce nom dans une autre macro qui apelle la fonction précédente. Seulement, au retour de la fonction, ma variable "fichier" ne contient rien. J'ai tenté de la déclarer publique, mais cela ne change rien. Quelqu'un saurait il me dire comment faire? Mes recherches n'ont rien donné... Merci
Mac Ab, chercheur...
-- Remplacez le 1 dans l'@ par un " i " pour répondre
--- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.502 / Virus Database: 300 - Release Date: 18/07/2003
Bonsoir,
Pour utiliser la valeur d'une variable entre deux procédures :
'dans un module standard==========
Public Fichier$
Sub Choisis()
Dim tmp$
Fichier = Application.GetOpenFilename
If Dir(Fichier) = "" Then
Fichier = "Aucun fichier choisi"
End If
End Sub
Sub test()
Fichier = ""
Choisis
MsgBox Fichier
End Sub
'=================================
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Bonsoir,
j'ai un problème que je n'arrive pas à résoudre seul:
J'ai une fonction publique avec GetOpenFileName qui me met le nom du fichier
choisi dans la variable "fichier".
Je dois récupérer ce nom dans une autre macro qui apelle la fonction
précédente.
Seulement, au retour de la fonction, ma variable "fichier" ne contient rien.
J'ai tenté de la déclarer publique, mais cela ne change rien.
Quelqu'un saurait il me dire comment faire?
Mes recherches n'ont rien donné...
Merci
Mac Ab, chercheur...
--
Remplacez le 1 dans l'@ par un " i " pour répondre
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.502 / Virus Database: 300 - Release Date: 18/07/2003
Pour utiliser la valeur d'une variable entre deux procédures :
'dans un module standard========== Public Fichier$
Sub Choisis() Dim tmp$ Fichier = Application.GetOpenFilename If Dir(Fichier) = "" Then Fichier = "Aucun fichier choisi" End If End Sub
Sub test() Fichier = "" Choisis MsgBox Fichier End Sub '================================= FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
Bonsoir, j'ai un problème que je n'arrive pas à résoudre seul:
J'ai une fonction publique avec GetOpenFileName qui me met le nom du fichier choisi dans la variable "fichier". Je dois récupérer ce nom dans une autre macro qui apelle la fonction précédente. Seulement, au retour de la fonction, ma variable "fichier" ne contient rien. J'ai tenté de la déclarer publique, mais cela ne change rien. Quelqu'un saurait il me dire comment faire? Mes recherches n'ont rien donné... Merci
Mac Ab, chercheur...
-- Remplacez le 1 dans l'@ par un " i " pour répondre
--- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.502 / Virus Database: 300 - Release Date: 18/07/2003
Mac Ab and O'Canada
Merci. Je viens de trouver d'où vient le problème. Il faut déclarer la variable public, dans le module qui utilise getopenfilename et non pas, comme je le faisais, dans le module qui l'appelle... Tout bête, mais je ne l'avais lu nulle part. Je pensais que c'était définitif pour toute l'application, quel que soit l'endroit déclaré. Apparament pas. Merci encore
Mac Ab, content...
-- Remplacez le 1 dans l'@ par un " i " pour répondre
"Pierre Fauconnier" a écrit dans le message de news:
Bonsoir
Si tu souhaites déclarer ta variable publique, tu dois la dimensionner EN DEBUT de module standard, avant toute procédure ou fonction, et après l'éventuelle ( et conseillée!!) ligne Option Explicit
Cette solution rend ta variable publique et donc utilisable par n'importe quelle fonction ou procédure de n'importe quel module de ton projet vba.
Une autre technique est de passer la valeur en argument de la procédure qui
en a besoin
Sub Proc1() Dim Variable1 as String Variable1 = "Pierre" Proc2 Variable1 ... End Sub
Sub Proc2(VarProc2 as String) MsgBox VarProc2 ... End Sub
Sub ProcGen() Proc1 Proc2 ... End Sub
Si tu lances ProcGen, tu auras un message à l'écran affichant Pierre.
-- Cela convient-il? ---- Pierre Fauconnier "N'insulte pas le crocodile avant d'avoir traversé la rivière" (Julos Beaucarne)
--- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.502 / Virus Database: 300 - Release Date: 18/07/2003
Merci. Je viens de trouver d'où vient le problème.
Il faut déclarer la variable public, dans le module qui utilise
getopenfilename et non pas, comme je le faisais, dans le module qui
l'appelle... Tout bête, mais je ne l'avais lu nulle part. Je pensais que
c'était définitif pour toute l'application, quel que soit l'endroit déclaré.
Apparament pas.
Merci encore
Mac Ab, content...
--
Remplacez le 1 dans l'@ par un " i " pour répondre
"Pierre Fauconnier" <pierre.fauconnier@pfi.be> a écrit dans le message de
news: OsWIdEGWDHA.2568@tk2msftngp13.phx.gbl...
Bonsoir
Si tu souhaites déclarer ta variable publique, tu dois la dimensionner EN
DEBUT de module standard, avant toute procédure ou fonction, et après
l'éventuelle ( et conseillée!!) ligne Option Explicit
Cette solution rend ta variable publique et donc utilisable par n'importe
quelle fonction ou procédure de n'importe quel module de ton projet vba.
Une autre technique est de passer la valeur en argument de la procédure
qui
en a besoin
Sub Proc1()
Dim Variable1 as String
Variable1 = "Pierre"
Proc2 Variable1
...
End Sub
Sub Proc2(VarProc2 as String)
MsgBox VarProc2
...
End Sub
Sub ProcGen()
Proc1
Proc2
...
End Sub
Si tu lances ProcGen, tu auras un message à l'écran affichant Pierre.
--
Cela convient-il?
----
Pierre Fauconnier
"N'insulte pas le crocodile avant d'avoir traversé la rivière" (Julos
Beaucarne)
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.502 / Virus Database: 300 - Release Date: 18/07/2003
Merci. Je viens de trouver d'où vient le problème. Il faut déclarer la variable public, dans le module qui utilise getopenfilename et non pas, comme je le faisais, dans le module qui l'appelle... Tout bête, mais je ne l'avais lu nulle part. Je pensais que c'était définitif pour toute l'application, quel que soit l'endroit déclaré. Apparament pas. Merci encore
Mac Ab, content...
-- Remplacez le 1 dans l'@ par un " i " pour répondre
"Pierre Fauconnier" a écrit dans le message de news:
Bonsoir
Si tu souhaites déclarer ta variable publique, tu dois la dimensionner EN DEBUT de module standard, avant toute procédure ou fonction, et après l'éventuelle ( et conseillée!!) ligne Option Explicit
Cette solution rend ta variable publique et donc utilisable par n'importe quelle fonction ou procédure de n'importe quel module de ton projet vba.
Une autre technique est de passer la valeur en argument de la procédure qui
en a besoin
Sub Proc1() Dim Variable1 as String Variable1 = "Pierre" Proc2 Variable1 ... End Sub
Sub Proc2(VarProc2 as String) MsgBox VarProc2 ... End Sub
Sub ProcGen() Proc1 Proc2 ... End Sub
Si tu lances ProcGen, tu auras un message à l'écran affichant Pierre.
-- Cela convient-il? ---- Pierre Fauconnier "N'insulte pas le crocodile avant d'avoir traversé la rivière" (Julos Beaucarne)
--- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.502 / Virus Database: 300 - Release Date: 18/07/2003
Pierre Fauconnier
C'est vrai si le module appelant est un module de classe ( module de feuille, de classeur, de userform ou de classe personnalisée). sinon, une variable déclarée Public en début de n'importe quel module standard est utilisable par l'ensemble des modules du projet, que ces modules soient des modules de classe ou des modules standard...
Pierre
Mac Ab and O'Canada wrote:
Merci. Je viens de trouver d'où vient le problème. Il faut déclarer la variable public, dans le module qui utilise getopenfilename et non pas, comme je le faisais, dans le module qui l'appelle... Tout bête, mais je ne l'avais lu nulle part. Je pensais que c'était définitif pour toute l'application, quel que soit l'endroit déclaré. Apparament pas. Merci encore
Mac Ab, content...
"Pierre Fauconnier" a écrit dans le message de news:
Bonsoir
Si tu souhaites déclarer ta variable publique, tu dois la dimensionner EN DEBUT de module standard, avant toute procédure ou fonction, et après l'éventuelle ( et conseillée!!) ligne Option Explicit
Cette solution rend ta variable publique et donc utilisable par n'importe quelle fonction ou procédure de n'importe quel module de ton projet vba.
Une autre technique est de passer la valeur en argument de la procédure qui en a besoin
Sub Proc1() Dim Variable1 as String Variable1 = "Pierre" Proc2 Variable1 ... End Sub
Sub Proc2(VarProc2 as String) MsgBox VarProc2 ... End Sub
Sub ProcGen() Proc1 Proc2 ... End Sub
Si tu lances ProcGen, tu auras un message à l'écran affichant Pierre.
-- Cela convient-il? ---- Pierre Fauconnier "N'insulte pas le crocodile avant d'avoir traversé la rivière" (Julos Beaucarne)
--- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.502 / Virus Database: 300 - Release Date: 18/07/2003
C'est vrai si le module appelant est un module de classe ( module de
feuille, de classeur, de userform ou de classe personnalisée). sinon, une
variable déclarée Public en début de n'importe quel module standard est
utilisable par l'ensemble des modules du projet, que ces modules soient des
modules de classe ou des modules standard...
Pierre
Mac Ab and O'Canada wrote:
Merci. Je viens de trouver d'où vient le problème.
Il faut déclarer la variable public, dans le module qui utilise
getopenfilename et non pas, comme je le faisais, dans le module qui
l'appelle... Tout bête, mais je ne l'avais lu nulle part. Je pensais
que c'était définitif pour toute l'application, quel que soit
l'endroit déclaré. Apparament pas.
Merci encore
Mac Ab, content...
"Pierre Fauconnier" <pierre.fauconnier@pfi.be> a écrit dans le
message de news: OsWIdEGWDHA.2568@tk2msftngp13.phx.gbl...
Bonsoir
Si tu souhaites déclarer ta variable publique, tu dois la
dimensionner EN DEBUT de module standard, avant toute procédure ou
fonction, et après l'éventuelle ( et conseillée!!) ligne Option
Explicit
Cette solution rend ta variable publique et donc utilisable par
n'importe quelle fonction ou procédure de n'importe quel module de
ton projet vba.
Une autre technique est de passer la valeur en argument de la
procédure qui en a besoin
Sub Proc1()
Dim Variable1 as String
Variable1 = "Pierre"
Proc2 Variable1
...
End Sub
Sub Proc2(VarProc2 as String)
MsgBox VarProc2
...
End Sub
Sub ProcGen()
Proc1
Proc2
...
End Sub
Si tu lances ProcGen, tu auras un message à l'écran affichant Pierre.
--
Cela convient-il?
----
Pierre Fauconnier
"N'insulte pas le crocodile avant d'avoir traversé la rivière" (Julos
Beaucarne)
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.502 / Virus Database: 300 - Release Date: 18/07/2003
C'est vrai si le module appelant est un module de classe ( module de feuille, de classeur, de userform ou de classe personnalisée). sinon, une variable déclarée Public en début de n'importe quel module standard est utilisable par l'ensemble des modules du projet, que ces modules soient des modules de classe ou des modules standard...
Pierre
Mac Ab and O'Canada wrote:
Merci. Je viens de trouver d'où vient le problème. Il faut déclarer la variable public, dans le module qui utilise getopenfilename et non pas, comme je le faisais, dans le module qui l'appelle... Tout bête, mais je ne l'avais lu nulle part. Je pensais que c'était définitif pour toute l'application, quel que soit l'endroit déclaré. Apparament pas. Merci encore
Mac Ab, content...
"Pierre Fauconnier" a écrit dans le message de news:
Bonsoir
Si tu souhaites déclarer ta variable publique, tu dois la dimensionner EN DEBUT de module standard, avant toute procédure ou fonction, et après l'éventuelle ( et conseillée!!) ligne Option Explicit
Cette solution rend ta variable publique et donc utilisable par n'importe quelle fonction ou procédure de n'importe quel module de ton projet vba.
Une autre technique est de passer la valeur en argument de la procédure qui en a besoin
Sub Proc1() Dim Variable1 as String Variable1 = "Pierre" Proc2 Variable1 ... End Sub
Sub Proc2(VarProc2 as String) MsgBox VarProc2 ... End Sub
Sub ProcGen() Proc1 Proc2 ... End Sub
Si tu lances ProcGen, tu auras un message à l'écran affichant Pierre.
-- Cela convient-il? ---- Pierre Fauconnier "N'insulte pas le crocodile avant d'avoir traversé la rivière" (Julos Beaucarne)
--- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.502 / Virus Database: 300 - Release Date: 18/07/2003
gee-dee-
;-))) Bonsoir, $=String Le type de données String peut stocker des chaînes de longueur fixe dont la longueur est comprise entre 0 et environ 63 Ko de caractères et des chaînes dynamiques dont la longueur est comprise entre 0 et environ 2 milliards de caractères. Dans Visual Basic, le signe dollar ($) est le caractère de déclaration du type String.
et puis aussi : &=Long (entier long) stocké sur 4 octets valeurs de -2 147 483 648 à 2 147 483 647
@=Currency Type de données dont la plage de valeurs s'étend de -922 337 203 685 477,5808 à 922 337 203 685 477,5807. Ce type de données est utilisé dans les calculs monétaires ou dans les calculs à virgule fixe pour lesquels une grande précision est requise. Dans Visual Basic, le signe @ est le caractère de déclaration du type Currency.
@+
"Clément Marcotte" a écrit dans le message de news:
Bonjour,
Pourrais tu m'expliquer le role des $ dans le module? c'est pour les déclarer en tant que "string"?
Exact. En fait c'est la façon qu'avait le BASIC d'origine de définir une variable de type "String". Cette façon s,est perpétuée jusqu'à nos jours.
;-)))
Bonsoir,
$=String
Le type de données String peut stocker des chaînes de longueur fixe dont la
longueur est comprise entre 0 et environ 63 Ko de caractères et des chaînes
dynamiques dont la longueur est comprise entre 0 et environ 2 milliards de
caractères. Dans Visual Basic, le signe dollar ($) est le caractère de
déclaration du type String.
et puis aussi :
&=Long (entier long) stocké sur 4 octets
valeurs de -2 147 483 648
à 2 147 483 647
@=Currency Type de données dont la plage de valeurs s'étend de -922 337 203
685 477,5808 à 922 337 203 685 477,5807. Ce type de données est utilisé dans
les calculs monétaires ou dans les calculs à virgule fixe pour lesquels une
grande précision est requise. Dans Visual Basic, le signe @ est le caractère
de déclaration du type Currency.
@+
"Clément Marcotte" <clement.marcotte@sympatico.ca> a écrit dans le message
de news:eOFF5UHWDHA.2352@TK2MSFTNGP12.phx.gbl...
Bonjour,
Pourrais tu m'expliquer le role des $ dans le module? c'est pour les
déclarer en tant que "string"?
Exact. En fait c'est la façon qu'avait le BASIC d'origine de définir
une variable de type "String". Cette façon s,est perpétuée jusqu'à nos
jours.
;-))) Bonsoir, $=String Le type de données String peut stocker des chaînes de longueur fixe dont la longueur est comprise entre 0 et environ 63 Ko de caractères et des chaînes dynamiques dont la longueur est comprise entre 0 et environ 2 milliards de caractères. Dans Visual Basic, le signe dollar ($) est le caractère de déclaration du type String.
et puis aussi : &=Long (entier long) stocké sur 4 octets valeurs de -2 147 483 648 à 2 147 483 647
@=Currency Type de données dont la plage de valeurs s'étend de -922 337 203 685 477,5808 à 922 337 203 685 477,5807. Ce type de données est utilisé dans les calculs monétaires ou dans les calculs à virgule fixe pour lesquels une grande précision est requise. Dans Visual Basic, le signe @ est le caractère de déclaration du type Currency.
@+
"Clément Marcotte" a écrit dans le message de news:
Bonjour,
Pourrais tu m'expliquer le role des $ dans le module? c'est pour les déclarer en tant que "string"?
Exact. En fait c'est la façon qu'avait le BASIC d'origine de définir une variable de type "String". Cette façon s,est perpétuée jusqu'à nos jours.