Problème avec "Public Const"

tiboo

XLDnaute Nouveau
Bonjour,

Je voudrais affecter la valeur d'une cellule d'une autre feuille (contact!A2)
à la variable CONTACT

J'ai essayé ça :

VB:
Public Const CONTACT As String = contact!A2

J'ai l'erreur "Variable non définie"
Comment dois-je la définir ?

Merci d'avance,

tiboo
 

tiboo

XLDnaute Nouveau
Re : Problème avec "Public Const"

Bonjour,

Merci pour cette réponse rapide.
J'ai essayé ce code :

VB:
Public Const CONTACT As String = ThisWorkbook.Sheets("contact").Range("A2").Value

J'ai l'erreur "Constante requise"
J'ai mal utilisé votre code ?
 

tiboo

XLDnaute Nouveau
Re : Problème avec "Public Const"

Bonjour Dranreb,

J'ai testé votre code.
J'ai l'erreur "Instruction incorrecte à l'extérieur d'une procédure"
Est-ce que je dois absolument travailler dans une procédure ?
Je voudrais que "CONTACT" puisse être lue par toutes les sub de mon module..

Merci d'avance.
 

Dranreb

XLDnaute Barbatruc
Re : Problème avec "Public Const"

L'affectation doit être faite dans une procédure
Si votre variable CONTACT n'a pas à être utilisée dans d'autres modules, Dim suffit, inutile de la déclarer Public. Mais il faut la déclarer en tête du module si elle doit être connue de toutes ses procédures.
À+
 

Paritec

XLDnaute Barbatruc
Re : Problème avec "Public Const"

Bonjour Tiboo, Michel Dranreb
déjà si tu utilisais un nom de variable différent d'un nom de feuille je pense que ce serait pas idiot, maintenant pour l'utilisation dans tous le module si tu as définis comme Dranreb t'a dit Public CONTACT As String c'est le cas
si bien sur tu es dans un module, pas dans une feuille!
a+
papou

 

job75

XLDnaute Barbatruc
Re : Problème avec "Public Const"

Bonjour tiboo, le fil,

Si vous voulez utiliser l'instruction Const, l'expression qui définie la variable doit être littérale.

Alors OK, ce peut être une adresse de cellule... Il faudra ensuite l'utiliser avec Range comme suit :

Code:
Public Const CONTACT As String = "contact!A2"

Sub Test()
MsgBox Range(CONTACT) 'exemple pour tester
End Sub
Tout cela dans un Module.

L'inconvénient est que si l'on déplace la cellule (par insertion ou suppression de lignes ou colonnes), la variable CONTACT conservera la même adresse...

Vous pouvez alors nommer la cellule MaCellule (menu Insertion-Nom).

Et vous écrirez :

Code:
Public Const CONTACT As String = "MaCellule"

Sub Test()
MsgBox Range(CONTACT) 'exemple pour tester
End Sub
A+
 
Dernière édition:

tiboo

XLDnaute Nouveau
Re : Problème avec "Public Const"

Bonjour Paritec,

Merci de votre réponse.
Je pense que je me suis mal exprimé et que je suis parti sur une mauvaise solution.
Ce que j'essaie de faire, c'est de récupérer la valeur d'une cellule et l'affecter à une variable.
Ensuite, cette variable sera appelée dans différent Sub.
Quelle est la meilleure solution ?
 

job75

XLDnaute Barbatruc
Re : Problème avec "Public Const"

Re,

Bien entendu, le 2ème exemple est un cas d'école...

Car si la cellule est nommée, il est tellement plus simple d'écrire :

Code:
Sub Test()
MsgBox [MaCellule] 'exemple pour tester
End Sub
Edit : je crains que tiboo n'ait pas vu mon post #8...

A+
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 976
dernier inscrit
kaizertv2001@gmailcom