Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ai s

25 réponses
Avatar
lecrol
Bonjour,

J'ai une variable "rep" commune à 2 formulaires.
Je l'ai définie dans un module:
--------
Public Sub Modul_rep( )
Public rep As Integer
End sub
---------------
Déjà, est-ce correct ? Je n'en suis pas sûr.

Mais je ne sais pas comment "lancer" ce module depuis l'un ou l'autre de mes
formulaires, par exemple dans mon code VBA d'évènement "sur activation"
Merci de vos lumières
Roland

10 réponses

1 2 3
Avatar
Michel__D
Bonjour,

"lecrol" a écrit dans le message de news:
Bonjour,

J'ai une variable "rep" commune à 2 formulaires.
Je l'ai définie dans un module:
--------
Public Sub Modul_rep( )
Public rep As Integer
End sub
---------------
Déjà, est-ce correct ? Je n'en suis pas sûr.

Mais je ne sais pas comment "lancer" ce module depuis l'un ou l'autre de mes
formulaires, par exemple dans mon code VBA d'évènement "sur activation"
Merci de vos lumières
Roland



Voici une façon de faire :

Au niveau du module mettre ceci :

Option Compare Database


Dim rep As Integer

...

Function Valeur_rep(Optional iValeur As Variant) As Integer
If TypeName(iValeur) = "Integer" Then rep = CInt(iValeur)
Valeur_rep = rep
End Function


Ensuite au niveau de tes formulaires :

Pour fixer par exemple la valeur de la variable rep sur 3
Valeur_rep 3

Et pour récupérer la valeur de la variable rep
Variable_formulaire = Valeur_rep
Avatar
lecrol
merci Michel de ton apport J'essaie ça et je te dis aussitôt
Roland


"Michel__D" wrote:

Bonjour,

"lecrol" a écrit dans le message de news:
> Bonjour,
>
> J'ai une variable "rep" commune à 2 formulaires.
> Je l'ai définie dans un module:
> --------
> Public Sub Modul_rep( )
> Public rep As Integer
> End sub
> ---------------
> Déjà, est-ce correct ? Je n'en suis pas sûr.
>
> Mais je ne sais pas comment "lancer" ce module depuis l'un ou l'autre de mes
> formulaires, par exemple dans mon code VBA d'évènement "sur activation"
> Merci de vos lumières
> Roland

Voici une façon de faire :

Au niveau du module mettre ceci :

Option Compare Database


Dim rep As Integer

....

Function Valeur_rep(Optional iValeur As Variant) As Integer
If TypeName(iValeur) = "Integer" Then rep = CInt(iValeur)
Valeur_rep = rep
End Function


Ensuite au niveau de tes formulaires :

Pour fixer par exemple la valeur de la variable rep sur 3
Valeur_rep 3

Et pour récupérer la valeur de la variable rep
Variable_formulaire = Valeur_rep




Avatar
lecrol
Voilà ce que j'ai écrit mais qui ne marche pas.
-----
Le module Module_rep:

Option Compare Database
Public rep As Integer
Function Valeur_rep(Optional iValeur As Variant) As Integer
If TypeName(iValeur) = "Integer" Then rep = CInt(iValeur)
Valeur_rep = rep
MsgBox ("rep module = " & rep)
End Function
-----------------------------------
Dans mon formulaire « stocks », à chaque entrée de données, pour chaque
«champ » :

Option Compare Database
Public rep As Integer

Private Sub Fille__oui_non__AfterUpdate()
Valeur_rep 1
Datedermaj = Date
End Sub
-----
Private Sub Date_d_entrée_AfterUpdate()
Valeur_rep 1
Datedermaj = Date
End Sub
----------------------------
Dans mon formulaire de clôture ( sous formulaire sur le menu général)
Option Compare Database

Public rep As Integer
Private Sub Form_Close()
rep = Valeur_rep
MsgBox ("Clôture: rep = " & rep & "; " & Date)
If rep = 1 Then
Derdat = Date
End If
End Sub
-------------------------------------------------
Le but du « jeu » est de stocker sur le menu d’entrée (dans un sous
formulaire) la date de la dernière modif effectuée sur une des fiches de la
table « stocks ».
J’ai créé pour cela un table « derdate » et un sous formulaire correspondant
Dans le formulaire « stocks » je mets à jour un repère « rep » à chaque «
after update » des contrôles
---
Mais ça ne marche pas. Mon « rep » se retrouve à 0 à la clôture, après
pourtant être passé par des 1 ( je le piste par des msgbox)
----------------------------------------------------------
Merci d'avance si tu me trouves mon erreur.
Amicalement
Roland
Avatar
Michel__D
Re,

"lecrol" a écrit dans le message de news:
Voilà ce que j'ai écrit mais qui ne marche pas.
-----
Le module Module_rep:

Option Compare Database
Public rep As Integer



Tu peux remplacer la ligne précédente par
Dim rep As Integer

Function Valeur_rep(Optional iValeur As Variant) As Integer
If TypeName(iValeur) = "Integer" Then rep = CInt(iValeur)
Valeur_rep = rep
MsgBox ("rep module = " & rep)
End Function
-----------------------------------
Dans mon formulaire « stocks », à chaque entrée de données, pour chaque
«champ » :

Option Compare Database



La ligne suivante doit être enlever

Public rep As Integer




Private Sub Fille__oui_non__AfterUpdate()
Valeur_rep 1
Datedermaj = Date
End Sub
-----
Private Sub Date_d_entrée_AfterUpdate()
Valeur_rep 1
Datedermaj = Date
End Sub
----------------------------
Dans mon formulaire de clôture ( sous formulaire sur le menu général)
Option Compare Database





La ligne suivante doit être enlever

Public rep As Integer




Private Sub Form_Close()



Et rajoute ici la déclaration de ta variable locale
Dim rep As Integer

rep = Valeur_rep
MsgBox ("Clôture: rep = " & rep & "; " & Date)
If rep = 1 Then
Derdat = Date
End If
End Sub
-------------------------------------------------
Le but du « jeu » est de stocker sur le menu d’entrée (dans un sous
formulaire) la date de la dernière modif effectuée sur une des fiches de la
table « stocks ».
J’ai créé pour cela un table « derdate » et un sous formulaire correspondant
Dans le formulaire « stocks » je mets à jour un repère « rep » à chaque «
after update » des contrôles
---
Mais ça ne marche pas. Mon « rep » se retrouve à 0 à la clôture, après
pourtant être passé par des 1 ( je le piste par des msgbox)
----------------------------------------------------------
Merci d'avance si tu me trouves mon erreur.
Amicalement
Roland


Avatar
lecrol
Michel,
Merci de ta patience. Mais j'ai toujours un "rep = 0" à la clôture de mon
formulaire "datmaj" !
----------
Voici mon nouveau code

Le module:
Option Compare Database
Dim rep As Integer

Function Valeur_rep(Optional iValeur As Variant) As Integer
If TypeName(iValeur) = "Integer" Then rep = CInt(iValeur)
Valeur_rep = rep
MsgBox ("rep module = " & rep)
End Function
--------------
Le formulaire "stocks" :

Option Compare Database

Private Sub Catégorie_AfterUpdate()
MsgBox ("rep avant = " & rep)
Valeur_rep 1
rep = Valeur_rep
MsgBox ("rep après = " & rep)
Datedermaj = Date
End Sub
----------------------- le "rep après" m'affiche bien "1" ----------
Option Compare Database

Private Sub Form_Close()
Dim rep As Integer
rep = Valeur_rep
MsgBox ("Clôture: rep = " & rep & "; " & Date)
If rep = 1 Then
Derdat = Date
End If
End Sub
---------------------------ici, le rep clôture s'affiche à "0" ----
Où me plante-je ????
Amicalement
Rolan
-----------------------------------------------------------------------------------------
"Michel__D" wrote:

Re,

"lecrol" a écrit dans le message de news:
> Voilà ce que j'ai écrit mais qui ne marche pas.
> -----
> Le module Module_rep:
>
> Option Compare Database
> Public rep As Integer

Tu peux remplacer la ligne précédente par
Dim rep As Integer

> Function Valeur_rep(Optional iValeur As Variant) As Integer
> If TypeName(iValeur) = "Integer" Then rep = CInt(iValeur)
> Valeur_rep = rep
> MsgBox ("rep module = " & rep)
> End Function
> -----------------------------------
> Dans mon formulaire « stocks », à chaque entrée de données, pour chaque
> «champ » :
>
> Option Compare Database

La ligne suivante doit être enlever

> Public rep As Integer


> Private Sub Fille__oui_non__AfterUpdate()
> Valeur_rep 1
> Datedermaj = Date
> End Sub
> -----
> Private Sub Date_d_entrée_AfterUpdate()
> Valeur_rep 1
> Datedermaj = Date
> End Sub
> ----------------------------
> Dans mon formulaire de clôture ( sous formulaire sur le menu général)
> Option Compare Database
>


La ligne suivante doit être enlever

> Public rep As Integer


> Private Sub Form_Close()

Et rajoute ici la déclaration de ta variable locale
Dim rep As Integer

> rep = Valeur_rep
> MsgBox ("Clôture: rep = " & rep & "; " & Date)
> If rep = 1 Then
> Derdat = Date
> End If
> End Sub
> -------------------------------------------------
> Le but du « jeu » est de stocker sur le menu d’entrée (dans un sous
> formulaire) la date de la dernière modif effectuée sur une des fiches de la
> table « stocks ».
> J’ai créé pour cela un table « derdate » et un sous formulaire correspondant
> Dans le formulaire « stocks » je mets à jour un repère « rep » à chaque «
> after update » des contrôles
> ---
> Mais ça ne marche pas. Mon « rep » se retrouve à 0 à la clôture, après
> pourtant être passé par des 1 ( je le piste par des msgbox)
> ----------------------------------------------------------
> Merci d'avance si tu me trouves mon erreur.
> Amicalement
> Roland




Avatar
Michel__D
Re,

Vérifie/recherche au niveau Module que tu n'ai pas une variable
nommé rep qui redéfinisse la valeur, je ne vois que cela ou plus
simple change le nom de la variable au niveau du module.

Option Compare Database
Dim rep_global As Integer

Function Valeur_rep(Optional iValeur As Variant) As Integer
If TypeName(iValeur) = "Integer" Then rep_global = CInt(iValeur)
Valeur_rep = rep_global
MsgBox ("rep module = " & rep_global)
End Function


"lecrol" a écrit dans le message de news:
Michel,
Merci de ta patience. Mais j'ai toujours un "rep = 0" à la clôture de mon
formulaire "datmaj" !
----------
Voici mon nouveau code

Le module:
Option Compare Database
Dim rep As Integer

Function Valeur_rep(Optional iValeur As Variant) As Integer
If TypeName(iValeur) = "Integer" Then rep = CInt(iValeur)
Valeur_rep = rep
MsgBox ("rep module = " & rep)
End Function
--------------
Le formulaire "stocks" :

Option Compare Database

Private Sub Catégorie_AfterUpdate()
MsgBox ("rep avant = " & rep)
Valeur_rep 1
rep = Valeur_rep
MsgBox ("rep après = " & rep)
Datedermaj = Date
End Sub
----------------------- le "rep après" m'affiche bien "1" ----------
Option Compare Database

Private Sub Form_Close()
Dim rep As Integer
rep = Valeur_rep
MsgBox ("Clôture: rep = " & rep & "; " & Date)
If rep = 1 Then
Derdat = Date
End If
End Sub
---------------------------ici, le rep clôture s'affiche à "0" ----
Où me plante-je ????
Amicalement
Roland
-----------------------------------------------------------------------------------------
"Michel__D" wrote:

Re,

"lecrol" a écrit dans le message de news:

> Voilà ce que j'ai écrit mais qui ne marche pas.
> -----
> Le module Module_rep:
>
> Option Compare Database
> Public rep As Integer

Tu peux remplacer la ligne précédente par
Dim rep As Integer

> Function Valeur_rep(Optional iValeur As Variant) As Integer
> If TypeName(iValeur) = "Integer" Then rep = CInt(iValeur)
> Valeur_rep = rep
> MsgBox ("rep module = " & rep)
> End Function
> -----------------------------------
> Dans mon formulaire « stocks », à chaque entrée de données, pour chaque
> «champ » :
>
> Option Compare Database

La ligne suivante doit être enlever

> Public rep As Integer


> Private Sub Fille__oui_non__AfterUpdate()
> Valeur_rep 1
> Datedermaj = Date
> End Sub
> -----
> Private Sub Date_d_entrée_AfterUpdate()
> Valeur_rep 1
> Datedermaj = Date
> End Sub
> ----------------------------
> Dans mon formulaire de clôture ( sous formulaire sur le menu général)
> Option Compare Database
>


La ligne suivante doit être enlever

> Public rep As Integer


> Private Sub Form_Close()

Et rajoute ici la déclaration de ta variable locale
Dim rep As Integer

> rep = Valeur_rep
> MsgBox ("Clôture: rep = " & rep & "; " & Date)
> If rep = 1 Then
> Derdat = Date
> End If
> End Sub
> -------------------------------------------------
> Le but du « jeu » est de stocker sur le menu d’entrée (dans un sous
> formulaire) la date de la dernière modif effectuée sur une des fiches de la
> table « stocks ».
> J’ai créé pour cela un table « derdate » et un sous formulaire correspondant
> Dans le formulaire « stocks » je mets à jour un repère « rep » à chaque «
> after update » des contrôles
> ---
> Mais ça ne marche pas. Mon « rep » se retrouve à 0 à la clôture, après
> pourtant être passé par des 1 ( je le piste par des msgbox)
> ----------------------------------------------------------
> Merci d'avance si tu me trouves mon erreur.
> Amicalement
> Roland






Avatar
lecrol
ok Merci J'essaie et je te dis !
Amitié
Roland


"Michel__D" wrote:

Re,

Vérifie/recherche au niveau Module que tu n'ai pas une variable
nommé rep qui redéfinisse la valeur, je ne vois que cela ou plus
simple change le nom de la variable au niveau du module.

Option Compare Database
Dim rep_global As Integer

Function Valeur_rep(Optional iValeur As Variant) As Integer
If TypeName(iValeur) = "Integer" Then rep_global = CInt(iValeur)
Valeur_rep = rep_global
MsgBox ("rep module = " & rep_global)
End Function


"lecrol" a écrit dans le message de news:
> Michel,
> Merci de ta patience. Mais j'ai toujours un "rep = 0" à la clôture de mon
> formulaire "datmaj" !
> ----------
> Voici mon nouveau code
>
> Le module:
> Option Compare Database
> Dim rep As Integer
>
> Function Valeur_rep(Optional iValeur As Variant) As Integer
> If TypeName(iValeur) = "Integer" Then rep = CInt(iValeur)
> Valeur_rep = rep
> MsgBox ("rep module = " & rep)
> End Function
> --------------
> Le formulaire "stocks" :
>
> Option Compare Database
>
> Private Sub Catégorie_AfterUpdate()
> MsgBox ("rep avant = " & rep)
> Valeur_rep 1
> rep = Valeur_rep
> MsgBox ("rep après = " & rep)
> Datedermaj = Date
> End Sub
> ----------------------- le "rep après" m'affiche bien "1" ----------
> Option Compare Database
>
> Private Sub Form_Close()
> Dim rep As Integer
> rep = Valeur_rep
> MsgBox ("Clôture: rep = " & rep & "; " & Date)
> If rep = 1 Then
> Derdat = Date
> End If
> End Sub
> ---------------------------ici, le rep clôture s'affiche à "0" ----
> Où me plante-je ????
> Amicalement
> Roland
> -----------------------------------------------------------------------------------------
> "Michel__D" wrote:
>
>> Re,
>>
>> "lecrol" a écrit dans le message de news:
>>
>> > Voilà ce que j'ai écrit mais qui ne marche pas.
>> > -----
>> > Le module Module_rep:
>> >
>> > Option Compare Database
>> > Public rep As Integer
>>
>> Tu peux remplacer la ligne précédente par
>> Dim rep As Integer
>>
>> > Function Valeur_rep(Optional iValeur As Variant) As Integer
>> > If TypeName(iValeur) = "Integer" Then rep = CInt(iValeur)
>> > Valeur_rep = rep
>> > MsgBox ("rep module = " & rep)
>> > End Function
>> > -----------------------------------
>> > Dans mon formulaire « stocks », à chaque entrée de données, pour chaque
>> > «champ » :
>> >
>> > Option Compare Database
>>
>> La ligne suivante doit être enlever
>>
>> > Public rep As Integer
>>
>>
>> > Private Sub Fille__oui_non__AfterUpdate()
>> > Valeur_rep 1
>> > Datedermaj = Date
>> > End Sub
>> > -----
>> > Private Sub Date_d_entrée_AfterUpdate()
>> > Valeur_rep 1
>> > Datedermaj = Date
>> > End Sub
>> > ----------------------------
>> > Dans mon formulaire de clôture ( sous formulaire sur le menu général)
>> > Option Compare Database
>> >
>>
>>
>> La ligne suivante doit être enlever
>>
>> > Public rep As Integer
>>
>>
>> > Private Sub Form_Close()
>>
>> Et rajoute ici la déclaration de ta variable locale
>> Dim rep As Integer
>>
>> > rep = Valeur_rep
>> > MsgBox ("Clôture: rep = " & rep & "; " & Date)
>> > If rep = 1 Then
>> > Derdat = Date
>> > End If
>> > End Sub
>> > -------------------------------------------------
>> > Le but du « jeu » est de stocker sur le menu d’entrée (dans un sous
>> > formulaire) la date de la dernière modif effectuée sur une des fiches de la
>> > table « stocks ».
>> > J’ai créé pour cela un table « derdate » et un sous formulaire correspondant
>> > Dans le formulaire « stocks » je mets à jour un repère « rep » à chaque «
>> > after update » des contrôles
>> > ---
>> > Mais ça ne marche pas. Mon « rep » se retrouve à 0 à la clôture, après
>> > pourtant être passé par des 1 ( je le piste par des msgbox)
>> > ----------------------------------------------------------
>> > Merci d'avance si tu me trouves mon erreur.
>> > Amicalement
>> > Roland
>>
>>




Avatar
lecrol
Michel, je suis désolé mais ça ne marche pas ! y'a un bidulle empoisonné
qui me remet ma variable à 0 au moment de la clôture J'ai tout essayé, mais
rien à faire. Si j'osais, je t'enverrai ma base toute entière ...
roland
----------------------------------
Avatar
Michel__D
Bonjour,

"lecrol" a écrit dans le message de news:
Michel, je suis désolé mais ça ne marche pas ! y'a un bidulle empoisonné
qui me remet ma variable à 0 au moment de la clôture J'ai tout essayé, mais
rien à faire. Si j'osais, je t'enverrai ma base toute entière ...
roland



Si elle n'est pas trop importante et s'il n'y a pas de donnée personnelle
tu peux la mettre sur http://cjoint.com
Avatar
lecrol
Génial. Tu es vraiment sympa Mais je n'ai pas ton adresse e-mail et
"cjoint.com" me la demande. Moi, c'est
Roland
1 2 3