Bonjour,
J'ai regard=E9 dans la faq et cherch=E9 sur le forum mais aucune r=E9ponse
ne correspond =E0 ce que je cherche.
Y a t'il un equivalent de Public pour la d=E9claration de variables =E0
l'affectation de variables ?
bref je souhaiterai un moyen en vba d'affecter une seule fois les
donn=E9es d'une feuille =E0 des variables en dehors des proc=E9dures ou
fonction afin de les rendre disponible pour toutes les proc=E9dures ou
fonctions.
si en A1 j'ai une date de d=E9part que j'affecte =E0
date_d=E9part=3Dsheets(1).range("A1")
y a t'il un moyen pour effectuer cette op=E9ration qu'une seule fois, et
qu'=E0 chaque fois que dans une proc=E9dure ou fonction j'utilise
date_d=E9part d=E9clar=E9e en public dans mon module, cette variable soit
affect=E9e =E0 A1 ?
ou dois-je faire une proc=E9dure de d=E9claration de variables (une
globale ou une par variables?) et appeler cette ou ces proc=E9dures =E0
chaque fois dans les autres, serait-ce un gain de temsp et de
performances ?
La solution d'affecter mes variables dans workbook-open() ne ferait
elle pas que les initialiser ? le changement de valeur serait-il pris
en compte par la suite, et les affecter dans worksheet_change() ne
ralentirait pas trop le fichier ?
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
Paul V
hello,
Je ne suis pas sur d'avoir bien compris tes explication ou certaines choses me parraissent contradictoires ;-) Comme : j'affecte à date_départ=sheets(1).range("A1") Plus loin: cette variable soit affectée à A1
ceci étant dit et sauf erreur de ma part, Si tu déclare ta variable en public dans un module dans la partie déclaration ('haut de page), et que tu fais ton affectation en même temps, la portée de ta variable sera valable pour toutes tes procédures.
HTH
Paul V
"plexus" a écrit dans le message de news:
Bonjour, J'ai regardé dans la faq et cherché sur le forum mais aucune réponse ne correspond à ce que je cherche.
Y a t'il un equivalent de Public pour la déclaration de variables à l'affectation de variables ?
bref je souhaiterai un moyen en vba d'affecter une seule fois les données d'une feuille à des variables en dehors des procédures ou fonction afin de les rendre disponible pour toutes les procédures ou fonctions.
si en A1 j'ai une date de départ que j'affecte à date_départ=sheets(1).range("A1") y a t'il un moyen pour effectuer cette opération qu'une seule fois, et qu'à chaque fois que dans une procédure ou fonction j'utilise date_départ déclarée en public dans mon module, cette variable soit affectée à A1 ? ou dois-je faire une procédure de déclaration de variables (une globale ou une par variables?) et appeler cette ou ces procédures à chaque fois dans les autres, serait-ce un gain de temsp et de performances ?
La solution d'affecter mes variables dans workbook-open() ne ferait elle pas que les initialiser ? le changement de valeur serait-il pris en compte par la suite, et les affecter dans worksheet_change() ne ralentirait pas trop le fichier ?
Merci et désolé pour cette question basique
hello,
Je ne suis pas sur d'avoir bien compris tes explication ou certaines choses
me parraissent contradictoires ;-)
Comme :
j'affecte à date_départ=sheets(1).range("A1")
Plus loin:
cette variable soit affectée à A1
ceci étant dit et sauf erreur de ma part, Si tu déclare ta variable en
public dans un module dans la partie déclaration ('haut de page), et que tu
fais ton affectation en même temps, la portée de ta variable sera valable
pour toutes tes procédures.
HTH
Paul V
"plexus" <lucienplexus@mageos.com> a écrit dans le message de news:
1160130376.895177.174670@h48g2000cwc.googlegroups.com...
Bonjour,
J'ai regardé dans la faq et cherché sur le forum mais aucune réponse
ne correspond à ce que je cherche.
Y a t'il un equivalent de Public pour la déclaration de variables à
l'affectation de variables ?
bref je souhaiterai un moyen en vba d'affecter une seule fois les
données d'une feuille à des variables en dehors des procédures ou
fonction afin de les rendre disponible pour toutes les procédures ou
fonctions.
si en A1 j'ai une date de départ que j'affecte à
date_départ=sheets(1).range("A1")
y a t'il un moyen pour effectuer cette opération qu'une seule fois, et
qu'à chaque fois que dans une procédure ou fonction j'utilise
date_départ déclarée en public dans mon module, cette variable soit
affectée à A1 ?
ou dois-je faire une procédure de déclaration de variables (une
globale ou une par variables?) et appeler cette ou ces procédures à
chaque fois dans les autres, serait-ce un gain de temsp et de
performances ?
La solution d'affecter mes variables dans workbook-open() ne ferait
elle pas que les initialiser ? le changement de valeur serait-il pris
en compte par la suite, et les affecter dans worksheet_change() ne
ralentirait pas trop le fichier ?
Je ne suis pas sur d'avoir bien compris tes explication ou certaines choses me parraissent contradictoires ;-) Comme : j'affecte à date_départ=sheets(1).range("A1") Plus loin: cette variable soit affectée à A1
ceci étant dit et sauf erreur de ma part, Si tu déclare ta variable en public dans un module dans la partie déclaration ('haut de page), et que tu fais ton affectation en même temps, la portée de ta variable sera valable pour toutes tes procédures.
HTH
Paul V
"plexus" a écrit dans le message de news:
Bonjour, J'ai regardé dans la faq et cherché sur le forum mais aucune réponse ne correspond à ce que je cherche.
Y a t'il un equivalent de Public pour la déclaration de variables à l'affectation de variables ?
bref je souhaiterai un moyen en vba d'affecter une seule fois les données d'une feuille à des variables en dehors des procédures ou fonction afin de les rendre disponible pour toutes les procédures ou fonctions.
si en A1 j'ai une date de départ que j'affecte à date_départ=sheets(1).range("A1") y a t'il un moyen pour effectuer cette opération qu'une seule fois, et qu'à chaque fois que dans une procédure ou fonction j'utilise date_départ déclarée en public dans mon module, cette variable soit affectée à A1 ? ou dois-je faire une procédure de déclaration de variables (une globale ou une par variables?) et appeler cette ou ces procédures à chaque fois dans les autres, serait-ce un gain de temsp et de performances ?
La solution d'affecter mes variables dans workbook-open() ne ferait elle pas que les initialiser ? le changement de valeur serait-il pris en compte par la suite, et les affecter dans worksheet_change() ne ralentirait pas trop le fichier ?
Merci et désolé pour cette question basique
plexus
Bonjour Paul V,
le problème est que je ne peux pas effectuer d'affectation dans la partie déclaration (enfin je ne sais pas comment faire) si j'écris dans la partie décalaration de mon module : public a as range set a = sheets(1).range("a1") cela me retourne une erreur de compilation : instruction incorrecte en dehors d'une procédure. d'où mon problème.
Mon idée de départ était de m'alléger la saisie de variables qui ont toujours la même affectation. comme la fonction insérer, noms de excel mais pour mon code vba.
merci de ton aide
Bonjour Paul V,
le problème est que je ne peux pas effectuer d'affectation dans la
partie déclaration (enfin je ne sais pas comment faire)
si j'écris dans la partie décalaration de mon module :
public a as range
set a = sheets(1).range("a1")
cela me retourne une erreur de compilation : instruction incorrecte en
dehors d'une procédure.
d'où mon problème.
Mon idée de départ était de m'alléger la saisie de variables qui
ont toujours la même affectation. comme la fonction insérer, noms de
excel mais pour mon code vba.
le problème est que je ne peux pas effectuer d'affectation dans la partie déclaration (enfin je ne sais pas comment faire) si j'écris dans la partie décalaration de mon module : public a as range set a = sheets(1).range("a1") cela me retourne une erreur de compilation : instruction incorrecte en dehors d'une procédure. d'où mon problème.
Mon idée de départ était de m'alléger la saisie de variables qui ont toujours la même affectation. comme la fonction insérer, noms de excel mais pour mon code vba.
merci de ton aide
MichDenis
| equivalent de Public pour
Il existe une autre expression pour désigner une variable Public c'est Global
Ces 2 façons ont la même valeur, bien que l'expression Global n'est plus vraiment utilisée. Public toto As String Global toto As String
Pour qu'une variable soit Public ou Global, elle doit être déclarée dans le haut d'un module Standard, d'ailleurs Global ne peut être utilisé dans un module de classe que sont les modules "feuilles" d'un classeur.
Si on utilise Public pour définir une variable dans un module de classe, l'expression définit une "propriété de l'objet" et non pas une variable.
"plexus" a écrit dans le message de news:
Bonjour, J'ai regardé dans la faq et cherché sur le forum mais aucune réponse ne correspond à ce que je cherche.
Y a t'il un equivalent de Public pour la déclaration de variables à l'affectation de variables ?
bref je souhaiterai un moyen en vba d'affecter une seule fois les données d'une feuille à des variables en dehors des procédures ou fonction afin de les rendre disponible pour toutes les procédures ou fonctions.
si en A1 j'ai une date de départ que j'affecte à date_départ=sheets(1).range("A1") y a t'il un moyen pour effectuer cette opération qu'une seule fois, et qu'à chaque fois que dans une procédure ou fonction j'utilise date_départ déclarée en public dans mon module, cette variable soit affectée à A1 ? ou dois-je faire une procédure de déclaration de variables (une globale ou une par variables?) et appeler cette ou ces procédures à chaque fois dans les autres, serait-ce un gain de temsp et de performances ?
La solution d'affecter mes variables dans workbook-open() ne ferait elle pas que les initialiser ? le changement de valeur serait-il pris en compte par la suite, et les affecter dans worksheet_change() ne ralentirait pas trop le fichier ?
Merci et désolé pour cette question basique
| equivalent de Public pour
Il existe une autre expression pour désigner une variable Public c'est Global
Ces 2 façons ont la même valeur, bien que l'expression Global n'est plus vraiment utilisée.
Public toto As String
Global toto As String
Pour qu'une variable soit Public ou Global, elle doit être déclarée dans le haut d'un
module Standard, d'ailleurs Global ne peut être utilisé dans un module de
classe que sont les modules "feuilles" d'un classeur.
Si on utilise Public pour définir une variable dans un module de classe,
l'expression définit une "propriété de l'objet" et non pas une variable.
"plexus" <lucienplexus@mageos.com> a écrit dans le message de news:
1160130376.895177.174670@h48g2000cwc.googlegroups.com...
Bonjour,
J'ai regardé dans la faq et cherché sur le forum mais aucune réponse
ne correspond à ce que je cherche.
Y a t'il un equivalent de Public pour la déclaration de variables à
l'affectation de variables ?
bref je souhaiterai un moyen en vba d'affecter une seule fois les
données d'une feuille à des variables en dehors des procédures ou
fonction afin de les rendre disponible pour toutes les procédures ou
fonctions.
si en A1 j'ai une date de départ que j'affecte à
date_départ=sheets(1).range("A1")
y a t'il un moyen pour effectuer cette opération qu'une seule fois, et
qu'à chaque fois que dans une procédure ou fonction j'utilise
date_départ déclarée en public dans mon module, cette variable soit
affectée à A1 ?
ou dois-je faire une procédure de déclaration de variables (une
globale ou une par variables?) et appeler cette ou ces procédures à
chaque fois dans les autres, serait-ce un gain de temsp et de
performances ?
La solution d'affecter mes variables dans workbook-open() ne ferait
elle pas que les initialiser ? le changement de valeur serait-il pris
en compte par la suite, et les affecter dans worksheet_change() ne
ralentirait pas trop le fichier ?
Il existe une autre expression pour désigner une variable Public c'est Global
Ces 2 façons ont la même valeur, bien que l'expression Global n'est plus vraiment utilisée. Public toto As String Global toto As String
Pour qu'une variable soit Public ou Global, elle doit être déclarée dans le haut d'un module Standard, d'ailleurs Global ne peut être utilisé dans un module de classe que sont les modules "feuilles" d'un classeur.
Si on utilise Public pour définir une variable dans un module de classe, l'expression définit une "propriété de l'objet" et non pas une variable.
"plexus" a écrit dans le message de news:
Bonjour, J'ai regardé dans la faq et cherché sur le forum mais aucune réponse ne correspond à ce que je cherche.
Y a t'il un equivalent de Public pour la déclaration de variables à l'affectation de variables ?
bref je souhaiterai un moyen en vba d'affecter une seule fois les données d'une feuille à des variables en dehors des procédures ou fonction afin de les rendre disponible pour toutes les procédures ou fonctions.
si en A1 j'ai une date de départ que j'affecte à date_départ=sheets(1).range("A1") y a t'il un moyen pour effectuer cette opération qu'une seule fois, et qu'à chaque fois que dans une procédure ou fonction j'utilise date_départ déclarée en public dans mon module, cette variable soit affectée à A1 ? ou dois-je faire une procédure de déclaration de variables (une globale ou une par variables?) et appeler cette ou ces procédures à chaque fois dans les autres, serait-ce un gain de temsp et de performances ?
La solution d'affecter mes variables dans workbook-open() ne ferait elle pas que les initialiser ? le changement de valeur serait-il pris en compte par la suite, et les affecter dans worksheet_change() ne ralentirait pas trop le fichier ?
Merci et désolé pour cette question basique
MichDenis
Une variable Public lorsqu'elle a été déclarée se doit d'être initialée à l'intérieur d'une procédure ou d'une fonction.
'Haut du module standard Public A As range
'------------------------ Sub MaProc()
Set A = worksheets("Feuil1").Range("A1:A10") ' reste de ta procédure.
End Sub '------------------------
"plexus" a écrit dans le message de news:
Bonjour Paul V,
le problème est que je ne peux pas effectuer d'affectation dans la partie déclaration (enfin je ne sais pas comment faire) si j'écris dans la partie décalaration de mon module : public a as range set a = sheets(1).range("a1") cela me retourne une erreur de compilation : instruction incorrecte en dehors d'une procédure. d'où mon problème.
Mon idée de départ était de m'alléger la saisie de variables qui ont toujours la même affectation. comme la fonction insérer, noms de excel mais pour mon code vba.
merci de ton aide
Une variable Public lorsqu'elle a été déclarée se doit d'être
initialée à l'intérieur d'une procédure ou d'une fonction.
'Haut du module standard
Public A As range
'------------------------
Sub MaProc()
Set A = worksheets("Feuil1").Range("A1:A10")
' reste de ta procédure.
End Sub
'------------------------
"plexus" <lucienplexus@mageos.com> a écrit dans le message de news:
1160138061.912978.44510@m73g2000cwd.googlegroups.com...
Bonjour Paul V,
le problème est que je ne peux pas effectuer d'affectation dans la
partie déclaration (enfin je ne sais pas comment faire)
si j'écris dans la partie décalaration de mon module :
public a as range
set a = sheets(1).range("a1")
cela me retourne une erreur de compilation : instruction incorrecte en
dehors d'une procédure.
d'où mon problème.
Mon idée de départ était de m'alléger la saisie de variables qui
ont toujours la même affectation. comme la fonction insérer, noms de
excel mais pour mon code vba.
Une variable Public lorsqu'elle a été déclarée se doit d'être initialée à l'intérieur d'une procédure ou d'une fonction.
'Haut du module standard Public A As range
'------------------------ Sub MaProc()
Set A = worksheets("Feuil1").Range("A1:A10") ' reste de ta procédure.
End Sub '------------------------
"plexus" a écrit dans le message de news:
Bonjour Paul V,
le problème est que je ne peux pas effectuer d'affectation dans la partie déclaration (enfin je ne sais pas comment faire) si j'écris dans la partie décalaration de mon module : public a as range set a = sheets(1).range("a1") cela me retourne une erreur de compilation : instruction incorrecte en dehors d'une procédure. d'où mon problème.
Mon idée de départ était de m'alléger la saisie de variables qui ont toujours la même affectation. comme la fonction insérer, noms de excel mais pour mon code vba.
merci de ton aide
Paul V
hello à tous,
L'initialisation se fera dans ta premère procédure. regharde ou elle se trouve et ajoute l'initialisation.
Pour plus de lisibilité tu peux la mettre dans une procédure spécifique dans ton module et faire un call a partir de la procédure qui démarre ta macro.
HTH
Paul V
"plexus" a écrit dans le message de news:
Bonjour Paul V,
le problème est que je ne peux pas effectuer d'affectation dans la partie déclaration (enfin je ne sais pas comment faire) si j'écris dans la partie décalaration de mon module : public a as range set a = sheets(1).range("a1") cela me retourne une erreur de compilation : instruction incorrecte en dehors d'une procédure. d'où mon problème.
Mon idée de départ était de m'alléger la saisie de variables qui ont toujours la même affectation. comme la fonction insérer, noms de excel mais pour mon code vba.
merci de ton aide
hello à tous,
L'initialisation se fera dans ta premère procédure.
regharde ou elle se trouve et ajoute l'initialisation.
Pour plus de lisibilité tu peux la mettre dans une procédure spécifique dans
ton module et faire un call a partir de la procédure qui démarre ta macro.
HTH
Paul V
"plexus" <lucienplexus@mageos.com> a écrit dans le message de news:
1160138061.912978.44510@m73g2000cwd.googlegroups.com...
Bonjour Paul V,
le problème est que je ne peux pas effectuer d'affectation dans la
partie déclaration (enfin je ne sais pas comment faire)
si j'écris dans la partie décalaration de mon module :
public a as range
set a = sheets(1).range("a1")
cela me retourne une erreur de compilation : instruction incorrecte en
dehors d'une procédure.
d'où mon problème.
Mon idée de départ était de m'alléger la saisie de variables qui
ont toujours la même affectation. comme la fonction insérer, noms de
excel mais pour mon code vba.
L'initialisation se fera dans ta premère procédure. regharde ou elle se trouve et ajoute l'initialisation.
Pour plus de lisibilité tu peux la mettre dans une procédure spécifique dans ton module et faire un call a partir de la procédure qui démarre ta macro.
HTH
Paul V
"plexus" a écrit dans le message de news:
Bonjour Paul V,
le problème est que je ne peux pas effectuer d'affectation dans la partie déclaration (enfin je ne sais pas comment faire) si j'écris dans la partie décalaration de mon module : public a as range set a = sheets(1).range("a1") cela me retourne une erreur de compilation : instruction incorrecte en dehors d'une procédure. d'où mon problème.
Mon idée de départ était de m'alléger la saisie de variables qui ont toujours la même affectation. comme la fonction insérer, noms de excel mais pour mon code vba.
merci de ton aide
plexus
Merci à tous pour ces précisions
Cela va rallonger considérablement mon code..... et je me demande même si cela en vaut la peine. Il me serait peut-être plus simple de traiter mes données avec les fonctions d'excel et ensuite d'en attribuer certaines à des variables que de vouloir tout traiter par vba. mon but est de a partir d'une feuille qui sert de formulaire, exporter cette feuille vers un autre classeur de liaison ou ses données seront copiées afin qu'un troisième classeur puisse les traiter... et je me disais qu'il me serait plus simple de déclarer et d'affecter une fois pour toutes mes variables et de les récupérer dans les autres classeurs.....
Merci à tous pour ces précisions
Cela va rallonger considérablement mon code..... et je me demande
même si cela en vaut la peine. Il me serait peut-être plus simple de
traiter mes données avec les fonctions d'excel et ensuite d'en
attribuer certaines à des variables que de vouloir tout traiter par
vba.
mon but est de a partir d'une feuille qui sert de formulaire, exporter
cette feuille vers un autre classeur de liaison ou ses données seront
copiées afin qu'un troisième classeur puisse les traiter... et je me
disais qu'il me serait plus simple de déclarer et d'affecter une fois
pour toutes mes variables et de les récupérer dans les autres
classeurs.....
Cela va rallonger considérablement mon code..... et je me demande même si cela en vaut la peine. Il me serait peut-être plus simple de traiter mes données avec les fonctions d'excel et ensuite d'en attribuer certaines à des variables que de vouloir tout traiter par vba. mon but est de a partir d'une feuille qui sert de formulaire, exporter cette feuille vers un autre classeur de liaison ou ses données seront copiées afin qu'un troisième classeur puisse les traiter... et je me disais qu'il me serait plus simple de déclarer et d'affecter une fois pour toutes mes variables et de les récupérer dans les autres classeurs.....
Paul V
Quatre ou cinq lignes, c'est pas une très grande rallonge ;-)
A+
Paul V
"plexus" a écrit dans le message de news:
Merci à tous pour ces précisions
Cela va rallonger considérablement mon code..... et je me demande même si cela en vaut la peine. Il me serait peut-être plus simple de traiter mes données avec les fonctions d'excel et ensuite d'en attribuer certaines à des variables que de vouloir tout traiter par vba. mon but est de a partir d'une feuille qui sert de formulaire, exporter cette feuille vers un autre classeur de liaison ou ses données seront copiées afin qu'un troisième classeur puisse les traiter... et je me disais qu'il me serait plus simple de déclarer et d'affecter une fois pour toutes mes variables et de les récupérer dans les autres classeurs.....
Quatre ou cinq lignes, c'est pas une très grande rallonge ;-)
A+
Paul V
"plexus" <lucienplexus@mageos.com> a écrit dans le message de news:
1160145337.443584.256890@i3g2000cwc.googlegroups.com...
Merci à tous pour ces précisions
Cela va rallonger considérablement mon code..... et je me demande
même si cela en vaut la peine. Il me serait peut-être plus simple de
traiter mes données avec les fonctions d'excel et ensuite d'en
attribuer certaines à des variables que de vouloir tout traiter par
vba.
mon but est de a partir d'une feuille qui sert de formulaire, exporter
cette feuille vers un autre classeur de liaison ou ses données seront
copiées afin qu'un troisième classeur puisse les traiter... et je me
disais qu'il me serait plus simple de déclarer et d'affecter une fois
pour toutes mes variables et de les récupérer dans les autres
classeurs.....
Quatre ou cinq lignes, c'est pas une très grande rallonge ;-)
A+
Paul V
"plexus" a écrit dans le message de news:
Merci à tous pour ces précisions
Cela va rallonger considérablement mon code..... et je me demande même si cela en vaut la peine. Il me serait peut-être plus simple de traiter mes données avec les fonctions d'excel et ensuite d'en attribuer certaines à des variables que de vouloir tout traiter par vba. mon but est de a partir d'une feuille qui sert de formulaire, exporter cette feuille vers un autre classeur de liaison ou ses données seront copiées afin qu'un troisième classeur puisse les traiter... et je me disais qu'il me serait plus simple de déclarer et d'affecter une fois pour toutes mes variables et de les récupérer dans les autres classeurs.....