Constante

J-Charles

XLDnaute Occasionnel
Bonsoir à tous,

Je voudrais vous soumettre deux petits problèmes concernant un fichier dans lequel j'ai un des modules qui comprend une dizaine de procédures.
1°) Je voudrais définir une constante qui correspond à une cellule (D3) d'un onglet et dans laquelle se trouve une date (qui varie souvent). Cette constante que je vais nommer "DateTransmission" est utilisée dans la dizaine de procédures. Avant la première procédure, j'ai ainsi défini ma constante:
Const DateTransmission = Sheets("Nomonglet").Range("D3") mais sans succés car j'obtiens le message d'erreur suivant: Erreur de compilation: Constante requise (avec le mot "Range" surligné).

2°) Toujours dans ces mêmes procédures, j'utilise une plage de cellules dans laquelle je boucle. Ma plage est ainsi définie: Range("X7:X" & Range("X65536").End(xlup).row. J'ai lu que pour accélérer le code et par commodité, il était intéressant de définir cette plage comme une variable objet du style: Set Maplage = Range("X7:X" & Range("X65536").End(xlup).row
Je voudrais que la portée de cette variable objet se fasse au niveau du module entier et de toutes ses procédures, hors je n' ai réussi qu'à l'inclure dans une procédure sous peine d'un message d'erreur.

Si quelqu'un peut me renseigner pour mon pb de constante et de variable objet, je lui en serais fort reconnaissant.
Merci d'avance
 

ROGER2327

XLDnaute Barbatruc
Re : Constante

Bonsoir
Pour ce qui est de la première question, la cause est entendue, car :
Vous ne pouvez utiliser ni variables, ni fonctions définies par l'utilisateur ni fonctions Visual Basic intrinsèques (telles que Chr) dans des expressions attribuées à des constantes.
dit l'aide d'Excel.
_
Quant-à la deuxième, il me semble bien que la réponse à la première ne laisse guère d'espoir. Mais sait-on jamais ?
À suivre, donc...​
ROGER2327
 

vbacrumble

XLDnaute Accro
Re : Constante

Bonsoir


Comme ceci cela fonctionne mais ...

Code:
Option Explicit
Public DateTransmission As Date
Public Ligne As Long
Sub test()
With ThisWorkbook.Sheets(1)
    .[A1] = Date: DateTransmission = .[A1]
    Ligne = .[A65536].End(xlUp).Row
    .Range("B1:B" & Ligne).Resize(, 2) = _
            StrConv(Format(DateTransmission, _
            "dddd d mmmm yyyy"), vbProperCase)
End With
MsgBox "Nous sommes le : " & DateTransmission & "."
End Sub
 
Dernière édition:

Statistiques des forums

Discussions
312 378
Messages
2 087 760
Membres
103 661
dernier inscrit
fcleves