VBA Constante

Bonjour à tous,

Dans un projet, beaucoup de procédures commencent par:

Sub essai()
Dim Eq%
Eq = Sheets("Inscriptions").Range("d2")
'--- suite macro ---
End Sub

N'y aurait-il pas moyen de déclarer qu'une seule fois "Eq" pour la totalité du projet, dans le genre:

Public Const Eq As Integer = Sheets("Inscriptions").Range("d2")

ce dernier code ne fonctionne évidemment pas !

ou autre astuce pour éviter de répéter et alléger l'ensemble ?

Bonne journée

Amicalement

Claude

Bonjour Claude,

tu peux faire tes déclarations en tête de module, avant les procédure :

La premier variable (s) peut être appeler par toutes les procédures du module

la deuxième variable(d), par toutes les procédures de tous les modules...

Option Explicit
Dim s As Integer
Public d As Integer

bon après midi

@+

re,

oui, mais je cherchais à éviter d'écrire dans chaque macro

Eq = Sheets("Inscriptions").Range("d2")

Claude

Bonjour,

Oui, il me semblait bien aussi que ma réponse était un peu simpliste.... A priori on ne peut pas définir une constante par une expression... on ne peut le faire qu'ainsi :

Public Const a As Integer = 123

Maintenat, il existe peut être une autre solution, mais perso je ne la connais pas.... Désolé....

Bonne journée

@+

Bonjour,

Bête question peut être mais Range("d2") risque de changer dans ton fichier pendant l'exécution d'un code ou on peut le fixer à l'ouverture du fichier ?

A te relire

Bonjour Dan, à tous,

à l'ouverture du fichier, non car :

En fait, il s'agit d'un concours de pétanque

Eq = Sheets("Inscriptions").Range("d2") => = Nombre d'équipes

Pa = Sheets("Inscriptions").Range("d4") => = Nombre de parties à jouer

ces 2 cellules sont variables jusqu'à ce que je clique un bouton "Fin des inscriptions",

à partir de là, ces 2 cellules ne peuvent plus changer,

Dans presque toutes les macros du projet, je fais référence à ces 2 cellules

If Pa >3 Then (par exemple)

N'est-il pas possible de déclarer les constantes à partir du bouton "Fin des inscriptions"

écrire cette ligne

Public Const Pa As Integer = 4

si Sheets("Inscriptions").Range("d4") = 4

mais là, je rêve surement !

Bonne journée

Amicalement

Claude

re,

Il faut oublier les "Const" pour ce que tu veux faire.

Réflection faite pourquoi ne pas utiliser des Noms via Insertion / Nom / définir (exemple --> EQ).

De cette manière tu peux reprendre ce nom (Range(EQ) dans tes codes plutôt que par exemple Sheets("Inscriptions").Range("d2").

Pour ce qui est de la cloture des inscritpions, on pourrait mettre le mot "cloturé" dans une cellule adjacente (exemple D3). Le code devrait bien entendu considérer cette cellule (D3) pour autoriser à ce que EQ puisse varier ou non.

A te relire

Bonjour Dan, forum,

Il faut oublier les "Const" pour ce que tu veux faire.

Oui, je me doutais bien que c'était un peu "Rock and Roll", mais bon !

Je retiens ton idée de noms/définis

ce qui donnerait:

Sub FinInscriptions() 'bouton
    Range("d2").Name = "Eq"
    Range("d4").Name = "Pa"

    '--- + loin dans les macros ---
    If Range("Eq") < 15 Then
        MsgBox ("Pour " & Range("Eq") & " équipes, il faut .....!")
    End If
'....

çà m'évite de déclarer à chaque macro et de préciser la feuille

Merci et bonne journée

Amicalement

Claude

Rechercher des sujets similaires à "vba constante"