OVH Cloud OVH Cloud

variable magique

10 réponses
Avatar
bruno
bonjour
comment fait on pour garder la valeur d'une variable d'une procedure a
l'autre (excel 2003)
exemple: une procedure sur la feuil1 et une autre sur le bouton ok d'un
formuaire et je veut garder la valeur de la variable i
declaration genre dim 1 as ...?
procedure sub sans le private ?
je n'sais pas !
merci des tuyaux
bruno

10 réponses

Avatar
JLuc
*Bonjour bruno*,
Deja, une variable doit commencee par une lettre.
Pour la rendre utilisable de partout, tu la met dans les declarations
du module :
Public MaVar as integer
(de memoire et si je fais pas d'erreurs)

bonjour
comment fait on pour garder la valeur d'une variable d'une procedure a
l'autre (excel 2003)
exemple: une procedure sur la feuil1 et une autre sur le bouton ok d'un
formuaire et je veut garder la valeur de la variable i
declaration genre dim 1 as ...?
procedure sub sans le private ?
je n'sais pas !
merci des tuyaux
bruno



--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/

Avatar
bruno
ça ne marche pas j'en suis désolé
j'essaye d'etre plus precis
j'ai une feuil et un formulaire
dans la feuil je fait double clic j'appelle le formulaire
la variable precedement declarer ( public i as integer)
prend le numero de la ligne
je voudrai garder ce numero dans la variable et la réutiliser dans la
procedure du bouton ok du formulaire

*Bonjour bruno*,
Deja, une variable doit commencee par une lettre.
Pour la rendre utilisable de partout, tu la met dans les declarations du
module :
Public MaVar as integer
(de memoire et si je fais pas d'erreurs)

bonjour
comment fait on pour garder la valeur d'une variable d'une procedure a
l'autre (excel 2003)
exemple: une procedure sur la feuil1 et une autre sur le bouton ok
d'un formuaire et je veut garder la valeur de la variable i
declaration genre dim 1 as ...?
procedure sub sans le private ?
je n'sais pas !
merci des tuyaux
bruno







Avatar
Philippe Noss
Bonsoir
Si j'ai compris la question, il me semble que déclarer la variable en
public devrait etre la solution
par ex :
public i
Public i as single

pour en savoir +, saisir Public dans le module et faire F1 pour avoir
l'aide

Philippe
http://nossphil.perso.cegetel.net/exoutils.html
Avatar
JLuc
*Bonjour bruno*,

ça ne marche pas j'en suis désolé
j'essaye d'etre plus precis
j'ai une feuil et un formulaire
dans la feuil je fait double clic j'appelle le formulaire
par quelle magie ?


la variable precedement declarer ( public i as integer)
prend le numero de la ligne
comment tu la met ?


je voudrai garder ce numero dans la variable et la réutiliser dans la
procedure du bouton ok du formulaire

*Bonjour bruno*,
Deja, une variable doit commencee par une lettre.
Pour la rendre utilisable de partout, tu la met dans les declarations du
module :
Public MaVar as integer
(de memoire et si je fais pas d'erreurs)

bonjour
comment fait on pour garder la valeur d'une variable d'une procedure a
l'autre (excel 2003)
exemple: une procedure sur la feuil1 et une autre sur le bouton ok d'un
formuaire et je veut garder la valeur de la variable i
declaration genre dim 1 as ...?
procedure sub sans le private ?
je n'sais pas !
merci des tuyaux
bruno








--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/



Avatar
JLuc
*Bonjour bruno*,
Est ce que ca peut t'aider ?

Public, instruction, exemple
Cet exemple utilise l'instruction Public au niveau module (section
Général) d'un module standard pour déclarer de manière explicite des
variables comme publiques, ce qui signifie qu'elles sont disponibles
pour toutes les procédures de tous les modules de toutes les
applications à moins que Option Private Module soit activée.

' Variable Integer de type Public.
Public Number As Integer
' Variable tableau de type Public.
Public NameArray(1 To 5) As String
' Plusieurs déclarations, deux de type Variant et une
' de type Integer, toutes Public.
Public MyVar, YourVar, ThisVar As Integer



ça ne marche pas j'en suis désolé
j'essaye d'etre plus precis
j'ai une feuil et un formulaire
dans la feuil je fait double clic j'appelle le formulaire
la variable precedement declarer ( public i as integer)
prend le numero de la ligne
je voudrai garder ce numero dans la variable et la réutiliser dans la
procedure du bouton ok du formulaire

*Bonjour bruno*,
Deja, une variable doit commencee par une lettre.
Pour la rendre utilisable de partout, tu la met dans les declarations du
module :
Public MaVar as integer
(de memoire et si je fais pas d'erreurs)

bonjour
comment fait on pour garder la valeur d'une variable d'une procedure a
l'autre (excel 2003)
exemple: une procedure sur la feuil1 et une autre sur le bouton ok d'un
formuaire et je veut garder la valeur de la variable i
declaration genre dim 1 as ...?
procedure sub sans le private ?
je n'sais pas !
merci des tuyaux
bruno








--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/



Avatar
michdenis
Bonjour Bruno,

Pour être accessible peu importe où tu te trouve dans ton projet vba, une variable doit être déclarée dans le haut d'un MODULE
STANDARD avec la caractéristique Public MaVariable As Integer par exemple.

Évidemment, tu adapteras le "TYPE" selon ton application.


Salutations!



"bruno" a écrit dans le message de news: 435d4574$0$995$
bonjour
comment fait on pour garder la valeur d'une variable d'une procedure a
l'autre (excel 2003)
exemple: une procedure sur la feuil1 et une autre sur le bouton ok d'un
formuaire et je veut garder la valeur de la variable i
declaration genre dim 1 as ...?
procedure sub sans le private ?
je n'sais pas !
merci des tuyaux
bruno
Avatar
bruno
procedure dans la feuille 1 :
Public Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
i = ActiveCell.Row 'i prend la valeur de la ligne
If Cells(i, 1) = "" Then GoTo saut1
Cells(1, 10) = i 'depose de la valeur
For Each Ctrl In formulaire1.Controls
If Ctrl.Name = "tb1" Then formulaire1.tb1 = Cells(i, 1)
If Ctrl.Name = "cb2" Then formulaire1.cb2 = Cells(i, 2)
If Ctrl.Name = "tb3" And Len(Cells(i, 5)) = 8 Then formulaire1.tb3 =
Format(Cells(i, 5), "## ## ## ##")
If Ctrl.Name = "tb3" And Len(Cells(i, 5)) = 9 Then formulaire1.tb3 =
Format(Cells(i, 5), "## ## ## ###")
If Cells(i, 3) = "" Then GoTo saut1
If Ctrl.Name = "tb5" Then formulaire1.tb5 = Cells(i, 3)
If Ctrl.Name = "cb6" Then formulaire1.cb6 = Cells(i, 7)
If Ctrl.Name = "tb8" Then formulaire1.tb8 = Cells(i, 8)
If Ctrl.Name = "cb9" Then formulaire1.cb9 = Cells(i, 9)
Next

saut1: If Cells(i, 1) = "" Then formulaire1.tb1.Value = Format(Date,
"dd/mm/yyyy")

formulaire1.Show
i = i + 1 ')
Cells(i, 1).Select ')pour desactiver la cellule qui a pris le double clic
End Sub

procedure du bouton ok du formulaire
ici la combine est de déposé dans la procedure precedente la valeur de i
dans la cellule (1,10) et de la recuperer dans cette procedure ca resoud
mon pb mais je passe a coté.
merci jluc de ton aide.


Private Sub cbok_Click()
i = Cells(1, 10)
Cells(i, 1) = tb1
Cells(i, 2) = cb2
Cells(i, 5) = tb3
Cells(i, 4) = lb10
Cells(i, 3) = tb5
Cells(i, 6) = cb7
Cells(i, 7) = cb6
Cells(i, 8) = tb8
Cells(i, 9) = cb9
Worksheets("feuil1").Cells(i, 6).AddComment
Worksheets("feuil1").Cells(i, 6).Comment.Visible = False
Worksheets("feuil1").Cells(i, 6).Comment.Text "Détail:" &
Chr(10) & (formulaire1.tb4)


Unload formulaire1
End Sub


*Bonjour bruno*,
Est ce que ca peut t'aider ?

Public, instruction, exemple
Cet exemple utilise l'instruction Public au niveau module (section
Général) d'un module standard pour déclarer de manière explicite des
variables comme publiques, ce qui signifie qu'elles sont disponibles
pour toutes les procédures de tous les modules de toutes les
applications à moins que Option Private Module soit activée.

' Variable Integer de type Public.
Public Number As Integer
' Variable tableau de type Public.
Public NameArray(1 To 5) As String
' Plusieurs déclarations, deux de type Variant et une
' de type Integer, toutes Public.
Public MyVar, YourVar, ThisVar As Integer



ça ne marche pas j'en suis désolé
j'essaye d'etre plus precis
j'ai une feuil et un formulaire
dans la feuil je fait double clic j'appelle le formulaire
la variable precedement declarer ( public i as integer)
prend le numero de la ligne
je voudrai garder ce numero dans la variable et la réutiliser dans la
procedure du bouton ok du formulaire


*Bonjour bruno*,
Deja, une variable doit commencee par une lettre.
Pour la rendre utilisable de partout, tu la met dans les declarations
du module :
Public MaVar as integer
(de memoire et si je fais pas d'erreurs)

bonjour
comment fait on pour garder la valeur d'une variable d'une procedure
a l'autre (excel 2003)
exemple: une procedure sur la feuil1 et une autre sur le bouton ok
d'un formuaire et je veut garder la valeur de la variable i
declaration genre dim 1 as ...?
procedure sub sans le private ?
je n'sais pas !
merci des tuyaux
bruno














Avatar
Michael
Chez moi (Win XP Excel 2000 non SP) ceci marche :

Dans un module standard (nimporte lequel) et tout au debut

Public MaVar as integer

Je la retrouve partout (Forms Feuilles autres modules...) à condition que le
classeur reste ouvert. J'avais déjà fait un post à ce sujet le 30/09 si ça
peut t'aider ...

Bon courage !

Sinon declare MaVar comme une valeur de cellule sur une feuille cachée par
exemple et retrouve la de cette manière !

Bye.
Avatar
bruno

Chez moi (Win XP Excel 2000 non SP) ceci marche :

Dans un module standard (nimporte lequel) et tout au debut

Public MaVar as integer

Je la retrouve partout (Forms Feuilles autres modules...) à condition que le
classeur reste ouvert. J'avais déjà fait un post à ce sujet le 30/09 si ça
peut t'aider ...

Bon courage !

Sinon declare MaVar comme une valeur de cellule sur une feuille cachée par
exemple et retrouve la de cette manière !

Bye.



merci michael


Avatar
JLuc
*Bonjour bruno*,
C'est bizarre, chez moi ca marche, que je mette la variable dans les
declarations de ThisWorkbook ou dans les declarations d'un module.
Pourrai tu nous joindre ton fichier (si rien d'indiscret) pour voir
plus avant ce qui bloque ?
JLuc


procedure dans la feuille 1 :
Public Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
i = ActiveCell.Row 'i prend la valeur de la ligne
If Cells(i, 1) = "" Then GoTo saut1
Cells(1, 10) = i 'depose de la valeur
For Each Ctrl In formulaire1.Controls
If Ctrl.Name = "tb1" Then formulaire1.tb1 = Cells(i, 1)
If Ctrl.Name = "cb2" Then formulaire1.cb2 = Cells(i, 2)
If Ctrl.Name = "tb3" And Len(Cells(i, 5)) = 8 Then formulaire1.tb3 =
Format(Cells(i, 5), "## ## ## ##")
If Ctrl.Name = "tb3" And Len(Cells(i, 5)) = 9 Then formulaire1.tb3 =
Format(Cells(i, 5), "## ## ## ###")
If Cells(i, 3) = "" Then GoTo saut1
If Ctrl.Name = "tb5" Then formulaire1.tb5 = Cells(i, 3)
If Ctrl.Name = "cb6" Then formulaire1.cb6 = Cells(i, 7)
If Ctrl.Name = "tb8" Then formulaire1.tb8 = Cells(i, 8)
If Ctrl.Name = "cb9" Then formulaire1.cb9 = Cells(i, 9)
Next

saut1: If Cells(i, 1) = "" Then formulaire1.tb1.Value = Format(Date,
"dd/mm/yyyy")

formulaire1.Show
i = i + 1 ')
Cells(i, 1).Select ')pour desactiver la cellule qui a pris le double clic
End Sub

procedure du bouton ok du formulaire
ici la combine est de déposé dans la procedure precedente la valeur de i dans
la cellule (1,10) et de la recuperer dans cette procedure ca resoud mon pb
mais je passe a coté.
merci jluc de ton aide.


Private Sub cbok_Click()
i = Cells(1, 10)
Cells(i, 1) = tb1
Cells(i, 2) = cb2
Cells(i, 5) = tb3
Cells(i, 4) = lb10
Cells(i, 3) = tb5
Cells(i, 6) = cb7
Cells(i, 7) = cb6
Cells(i, 8) = tb8
Cells(i, 9) = cb9
Worksheets("feuil1").Cells(i, 6).AddComment
Worksheets("feuil1").Cells(i, 6).Comment.Visible = False
Worksheets("feuil1").Cells(i, 6).Comment.Text "Détail:" & Chr(10) &
(formulaire1.tb4)


Unload formulaire1
End Sub


*Bonjour bruno*,
Est ce que ca peut t'aider ?

Public, instruction, exemple
Cet exemple utilise l'instruction Public au niveau module (section Général)
d'un module standard pour déclarer de manière explicite des variables comme
publiques, ce qui signifie qu'elles sont disponibles pour toutes les
procédures de tous les modules de toutes les applications à moins que
Option Private Module soit activée.

' Variable Integer de type Public.
Public Number As Integer
' Variable tableau de type Public.
Public NameArray(1 To 5) As String
' Plusieurs déclarations, deux de type Variant et une
' de type Integer, toutes Public.
Public MyVar, YourVar, ThisVar As Integer



ça ne marche pas j'en suis désolé
j'essaye d'etre plus precis
j'ai une feuil et un formulaire
dans la feuil je fait double clic j'appelle le formulaire
la variable precedement declarer ( public i as integer)
prend le numero de la ligne
je voudrai garder ce numero dans la variable et la réutiliser dans la
procedure du bouton ok du formulaire


*Bonjour bruno*,
Deja, une variable doit commencee par une lettre.
Pour la rendre utilisable de partout, tu la met dans les declarations du
module :
Public MaVar as integer
(de memoire et si je fais pas d'erreurs)

bonjour
comment fait on pour garder la valeur d'une variable d'une procedure a
l'autre (excel 2003)
exemple: une procedure sur la feuil1 et une autre sur le bouton ok d'un
formuaire et je veut garder la valeur de la variable i
declaration genre dim 1 as ...?
procedure sub sans le private ?
je n'sais pas !
merci des tuyaux
bruno













--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/