Declaration & initialisation variables [RESOLU]

merinos

XLDnaute Accro
Bonjour a tous,

Je cherche à simplifier la reprise de code d'un spreadsheet à l'autre.
Ce serais plus facile et "joli".

Et pour ce faire je compte sortir du code des procédures les variables qui sont spécifiques au document et en faire quelque chose comme ceci:

Dim a
Public zone_active As Range
Public contenu_liste As Range
Set zone_active = Range("client_selector")
Set contenu_liste = Sheet4.Range("unique")




Private Sub Worksheet_SelectionChange(ByVal Target As Range)
mon code procedure 1
End Sub


Private Sub ComboBox1_Change()
mon code procedure 2
End Sub

Déclarer une variable fonctionne... mais je n'arrive pas a leur donner une valeur.

Merci à tous,

Mérinos
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : Declaration & initialisation variables

Bonjour merinos

Source Silkyroads

Les données peuvent être modifiées pendant l'éxécution de la macro. Un exemple pour affecter une valeur numérique à une variable, l'afficher dans un MsgBox, ajouter la valeur de la cellule A1 à cette variable, puis afficher le nouveau résultat:

Sub afficherValeur()
Dim maVariable As Integer

maVariable = 10
MsgBox maVariable

maVariable = maVariable + Range("A1")
MsgBox maVariable
End Sub




A+ :cool:
 

Dan

XLDnaute Barbatruc
Re : Declaration & initialisation variables

Bonjour

Pas sur d'avoir bien saisi ton problème, mais si tu veux utiliser tes variables spécifiques à tout ton document, déclare les PUBLIC en entête d'un module et ce, avant toutes tes macros. De cette sorte elles seront utilisables à chaque fois qu'elles seront requises.

Mais est-ce l'objet de ta demande ?

Cordialement
 

Dranreb

XLDnaute Barbatruc
Re : Declaration & initialisation variables

Bonjour.

Et par conséquent vous devez choisir l'occasion où ça devra être fait. Vous ne pouvez pas mettre du code exécutable comme ça, juste derrière des déclaration globales. C'est essentiellement pour ce genre de besoin que sont prévus les évènements Workbook_Open et autres Worksheet_Activate ou UserForm_Initialize.
 

merinos

XLDnaute Accro
Re : Declaration & initialisation variables

Bonjour

Pas sur d'avoir bien saisi ton problème, mais si tu veux utiliser tes variables spécifiques à tout ton document, déclare les PUBLIC en entête d'un module et ce, avant toutes tes macros. De cette sorte elles seront utilisables à chaque fois qu'elles seront requises.

Mais est-ce l'objet de ta demande ?

Cordialement


Salut Dan, (et les autres)

J'ai très bien compris la possibilité de déclarer des variables publiques... d'ailleur j'en ai mis dans mon exemple.

Mais je veux faire plus: déja mettre une valeur dans la variable.
J'y suis arrivé en declarant "zone_active" en public.
ET EN METTANT "Set zone_active = Range("client_selector")" dans la première procédure qui est employée...

il y a deux types de réponses correctes:
- une procédure de déclaration de CONSTANTES (que je ne connais pas) ( ce qui serait suffisant pour aujourd'hui)
- une déclaration de variables publiques suivi d'une initialisation quand on arrive sur la feuille.

Merci

Merinos
 

merinos

XLDnaute Accro
Re : Declaration & initialisation variables

Bonjour.

Et par conséquent vous devez choisir l'occasion où ça devra être fait. Vous ne pouvez pas mettre du code exécutable comme ça, juste derrière des déclaration globales. C'est essentiellement pour ce genre de besoin que sont prévus les évènements Workbook_Open et autres Worksheet_Activate ou UserForm_Initialize.

Worksheet_Activate .... cela devrais le faire...

Je teste et je reviens


Merci.

Merinos
 

merinos

XLDnaute Accro
Re : Declaration & initialisation variables [RÉSOLU]

Cela marche... Merci DRANREB
Dim a
Public zone_active As Range
Public contenu_liste As Range

private Sub Worksheet_Activate()
Set zone_active = Range("client_selector")
Set contenu_liste = Sheet4.Range("unique")
End Sub




Private Sub Worksheet_SelectionChange(ByVal Target As Range)
mon code procedure 1
End Sub


Private Sub ComboBox1_Change()
mon code procedure 2
End Sub
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Declaration & initialisation variables [RESOLU]

Vos variables zone-active et contenu_liste sont elle bien des propriétés que vous voulez ajouter à votre objet Worksheet pour pouvoir les utiliser ailleurs ?
Parce que par définition une variable Public dans un module non standard (donc objet) est une propriété,
de même qu'une procédure Public y devient par définition une méthode.
Ce qui signifie simplement toujours que pour les invoquer à l'extérieur il faut obligatoirement spécifier devant le nom de l'objet suivi d'un point.
Les variables globales et procédures qui ne sont utilisées qu'à l'intérieur du module non standard doivent normalement être déclarées Private.
 
Dernière édition:

merinos

XLDnaute Accro
Re : Declaration & initialisation variables [RESOLU]

oui oui.

bien conscient.

l'objectif est de pouvoir copier des routines, et de changer via des variables les info spécifiques afin q'elles fonctionnent dans le document qui les recoit:

les infos qui vont remplir un combobox sont dans des ranges nommés .... et le nom va changer selon ce que l'on fait.

mes variables sont actives DANS la feuille ou elles sont initiées.
 

Lone-wolf

XLDnaute Barbatruc
Re : Declaration & initialisation variables [RESOLU]

Bonjour à tous,

je ne sais pas si j'ai bien compris, mais voici ce que j'ai fait. Dans un Module Standard


Code:
Public points As Range
Public nombre As Integer


Sub test()
nombre = 1
Set points = [D5]
 nombre = nombre + [E5]
points.Value = "Points Obtenus :"
[E5] = nombre
End Sub


Et dans Worksheet_Activate() j'ai appelé la macro.



A+ :cool:
 

Discussions similaires

Réponses
7
Affichages
453