Déclaration Public Const : soucis en vue

CAPRI_456

XLDnaute Occasionnel
Bonsoir le Forum,

Dans une procédure ou je dois déclarer à plusieurs reprises des chemins de répertoire où se trouvent des fichiers, je souhaiterai éliminer la répétition de ces données dans de multiples modules....

Pour ce faire, j'ai tenté de regrouper les "constantes" dans un module standard nommé "Module_Public_Const"

cela prend la forme suivante:

Public Const Annee As Date = Year(Now)
Public Const Mois As Date = Month(Now)
Public Const Jour As Date = Day(Now)
Public Const today As Date = Jour & "-" & Mois & "-" & Annee

Public Const JA As Date = Format(DateAdd("n", 1, today), "dd-mm-yyyy") 'renvoie today
Public Const JAD As Date = Format(DateAdd("n", 1, today), "dd-mm-yyyy") 'renvoie 00:01 soit 1 minute après minuit
Public Const JARUPT As Date = Format(DateAdd("h", 6, today), "dd-mm-yyyy hh-mm")
Public Const JAF As Date = Format(DateAdd("n", 1439, today), "dd-mm-yyyy hh-mm")

'identifie le chemin du dossier de sauvegarde

Public Const Chemin3 As String = "\\10.120.49.253\Serveur-XLS-PAS-ANALYSES\man-xls-du-" & JAD
Public Const Chemin4 As String = "\\10.120.49.253\Serveur--XLS-ANALYSES\man-xls-du-" & JAD

etc.. avec d'autres Chemins ...

Eh bien voilà...... j'ai un msg d'erreur

Erreur de compilation - "constante requise " et mise en surbrillance de Year, puis, Month, etc....

D'où vient ?



Je vous remercie pour votre aide

CAPRI_456
 

Habitude

XLDnaute Accro
Re : Déclaration Public Const : soucis en vue

les fontions
Year
Month
Day

Retournent des Integer et non des DATE

Essaie

Public Const Annee As Integer = Year(Now)
Public Const Mois As Integer = Month(Now)
Public Const Jour As Integer = Day(Now)
 

ROGER2327

XLDnaute Barbatruc
Re : Déclaration Public Const : soucis en vue

Bonsoir CAPRI_456, Habitude
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 Monsieur Porte dans ses fichiers d'aide...
Les seules choses autorisées sont
Littéral, autre constante ou toute autre combinaison pouvant contenir tout opérateur arithmétique ou logique à l'exception de Is.
dit-il encore.

Conclusion : déclaré comme entier, date, variant, ... Public Const Annee As ... = Year(Now) ne saura que planter.​
ROGER2327
#2889
 

ChTi160

XLDnaute Barbatruc
Re : Déclaration Public Const : soucis en vue

Salut CAPRI_456
Bonsoir le Fil
Bonsoir le Forum

arff peut être une solution
dans ton Module tu Déclares un Tablo_Const par exemple
tu le dimensionnes à besoin
Exemple

Dim Tablo_Const (8,2) as variant
Public Chemin3 As String
Public Chemin4 As String

Code:
Tablo_Const(0,0)="[SIZE=2]Annee[/SIZE]":Tablo_Const(0,1) = Year(Now)
[SIZE=3]Tablo_Const(1,0)=  "[SIZE=2]Mois[/SIZE]"  :Tablo_Const(1,1) = Month(Now)
Tablo_Const(2,0) = "[SIZE=2]Jour[/SIZE]"  :Tablo_Const(2,1) = Day(Now)
Tablo_Const(3,0) = "[SIZE=2]Date[/SIZE]": Tablo_Const(3,1) = Tablo_Const(2, 1) & "-" & Tablo_Const(1, 1) & "-" & Tablo_Const(0,1)
Tablo_Const(4,0)=  "[SIZE=2]JA[/SIZE]"    :Tablo_Const(4,1) = Format(DateAdd("n", 1, today), "dd-mm-yyyy")  'renvoie today
Tablo_Const(5,0)=  "[SIZE=2]JAD[/SIZE]"  :Tablo_Const(5,1) = Format(DateAdd("n", 1, today), "dd-mm-yyyy")  'renvoie 00:01 soit 1 minute[/SIZE]
puis dans tes procédures ou dans le tableau

tu mets
par exemple
Chemin3 = "\\10.120.49.253\Serveur-XLS-PAS-ANALYSES\man-xls-du-" & Tablo_Const(5,1)
Chemin4 = "\\10.120.49.253\Serveur--XLS-ANALYSES\man-xls-du-" &
Tablo_Const(5,1)
ou
Tablo_Const(6,0)= "Chemin3" :Tablo_Const(6,1)= "\\10.120.49.253\Serveur-XLS-PAS-ANALYSES\man-xls-du-" & Tablo_Const(5,1)
Tablo_Const(7,0)= "Chemin4" :Tablo_Const(7,1)= "\\10.120.49.253\Serveur--XLS-ANALYSES\man-xls-du-" & Tablo_Const(5,1)
pas sur d'avoir compris
non Testé lol
bonne fin de Soirée
 
Dernière édition:

Bebere

XLDnaute Barbatruc
Re : Déclaration Public Const : soucis en vue

bonjour Capri,Roger,Chti,Habitude
déclare ce qui ne va pas en variable public
fait une procédure qui s'exécute à l'ouverture du classeur(thisworkbook)
exemple

Public MaDate As Date

Sub IniVar()
j = Day(Date)
m = Month(Date)
an = Year(Date)
MaDate = DateSerial(an, m, j)
'MsgBox MaDate
End Sub

dans thisworbook

Private Sub Workbook_Open()
IniVar
End Sub

à bientôt
 

ChTi160

XLDnaute Barbatruc
Re : Déclaration Public Const : soucis en vue

Salut egman
Bonsoir ROGER2327 ,Bebere

Arf sous cette forme on ne risque pas grand chose Lol

j'ai ensuite testé ,mais bon à part ,comme Bebere , récupérer une des variable dans un MsgBox

Bonne fin de Soirée
 

CAPRI_456

XLDnaute Occasionnel
Re : Déclaration Public Const : soucis en vue

ai teste successivement:

-prop "HABITUDE" : même avec Integer = bug identique.
cela semblerait interdit comme l'explique "ROGER 2327"

-prop "CHTI 160" : Message d'erreur =
"instruction incorrecte à l'extérieur d'une procédure pour
"année", .....;

-prop "Bebere" : je ne vois pas comment continuer avec mes chemins 3 , 4 après avoir initialisé les variables.

J'y repenserai demain...
Car il se fait tard

Merci
Bonne nuit

CAPRI_456
 

ChTi160

XLDnaute Barbatruc
Re : Déclaration Public Const : soucis en vue

Salut egman
bonjour le fil
Bonjour le Forum

Voila ce que j'ai testé dans un module
Code:
Option Explicit

Public Tablo_Const(8, 2) As Variant
Public Chemin3 As String
Public Chemin4 As String


Sub test()

Tablo_Const(0, 0) = "Annee": Tablo_Const(0, 1) = Year(Now)
Tablo_Const(1, 0) = "Mois": Tablo_Const(1, 1) = Month(Now)
Tablo_Const(2, 0) = "Jour": Tablo_Const(2, 1) = Day(Now)
Tablo_Const(3, 0) = "Date": Tablo_Const(3, 1) = Tablo_Const(2, 1) & "-" & Tablo_Const(1, 1) & "-" & Tablo_Const(0, 1)
Tablo_Const(4, 0) = "JA": Tablo_Const(4, 1) = Format(DateAdd("n", 1, Date), "dd-mm-yyyy")   'renvoie today
Tablo_Const(5, 0) = "JAD": Tablo_Const(5, 1) = Format(DateAdd("n", 1, Date), "dd-mm-yyyy")
Tablo_Const(6, 0) = "Chemin3": Tablo_Const(6, 1) = "\\10.120.49.253\Serveur-XLS-PAS-ANALYSES\man-xls-du-" & Tablo_Const(5, 1)
Tablo_Const(7, 0) = "Chemin4": Tablo_Const(7, 1) = "\\10.120.49.253\Serveur--XLS-ANALYSES\man-xls-du-" & Tablo_Const(5, 1)

MsgBox Tablo_Const(7, 1)

End Sub
à voir ensuite pour adapter
Bonne journée
 

CAPRI_456

XLDnaute Occasionnel
Re : Déclaration Public Const : soucis en vue

Bonjour le Fil ,
Chti,

Génial, ce tableau m'éclaircit vraiment l'horizon et donne de l'air à mes modules où je déclarait systématiquement les chemns de repertoires avec des fonctions dates ou des variables à incorporer dans la définition du Chemin?

Merci beaucoup à Chti et au Forum pour ces précisions et cette rapidité.

CAPRI_456
 

CAPRI_456

XLDnaute Occasionnel
Re : Déclaration Public Const : soucis en vue

et voilà déjà de retour.. ;),

Puis je aussi ajouter ce qui suit et qui tient au Chemin ainsi déclaré comme constante dans ce module qui sert aux autres modules aussi ?

'If Dir(Chemin4, vbDirectory + vbHidden) = "" Then MkDir (Chemin4)
'si le dossier n'existe pas, le créer

S'agit-il là aussi de quelque chose que l'on puisse intégrer en tant que constante.?

Merci le Fil

CAPRI_456
 

CAPRI_456

XLDnaute Occasionnel
Re : Déclaration Public Const : soucis en vue

A nouveau,

A mon avai me suis laissé éblouir... ai cru que cela fonctionnait, or dans le module testté, mon Chemin était toujours déclaré à l'ancienne comme variable.. et donc il fonctionnait.

la question est donc:
Si le résultat apparait correctement dans la MsgBox = c'est parfait
Alors comment dois je faire pour pointer sur le répertoire ad hoc repris à plusieurs reprises dans mes modules:

je pensai simplement à Chemin3 etc...
pour lequel le constante à été créé dans le module des constantes

Merci CAPRI_456
 

ChTi160

XLDnaute Barbatruc
Re : Déclaration Public Const : soucis en vue

Salut CAPRI_456
Bonsoir le Fil
Bonsoir le Forum


arff je ne comprends pas tout lol

pour ce qui est de ta demande (si j'ai compris bien sûr)
Si Chemin4 se trouve dans
Code:
Tablo_Const(7, 0) = "Chemin4":[I][B] Tablo_Const(7, 1)[/B][/I] = _
 "\\10.120.49.253\Serveur--XLS-ANALYSES\man-xls-du-" & Tablo_Const(5, 1)
Code:
If Dir(" &[I][B] Tablo_Const(7, 1)[/B][/I] & _
 ", vbDirectory + vbHidden) = "" Then MkDir [I][B]Tablo_Const(7, 1)[/B][/I]
'si le dossier n'existe pas, le créer
arff pas sur d'avoir compris
Lol
mais tu vas nous éclairer
Bonne fin de Soirée
 
Dernière édition:

CAPRI_456

XLDnaute Occasionnel
Re : Déclaration Public Const : soucis en vue

Bonsoir le Forum, Chti,

Au fait je ne vois pas comment écrire le code dans mon module en y intégrant les constantes déclarées dans le "Tablo".

Le but étant d'éliminer un max de code pour définir ces chemins (pas seulement dans ce module , mais dans une série de module) je ne vois pas.

voici à titre d'exemple mon module qui va utiliser les constantes
- en brun, celles que je ne devrai plus utiliser , donc gain de place

Comment donc faire références valablement à mes chemins dans le code (ici en bleu). Dois je conserver le mot Chemin.... et le déclarer Dim dans le code ou le remplacer par Tablo_const (...,....)partout...

'--------------------------------------------------------------------------------------
' A1 ---- RECHERCHE DU REPERTOIRE "CSV" DU JOUR D'ANALYSE A TRAITER (Chemin0)
'''--------------------------------------------------------------------------------------
Sub convertisseur()
'ici déclarer variables
'Dim JA As String
'Dim today
'Dim Jour As String, Mois As String, Annee As String
Dim SaveChanges
Dim i As Integer
'Annee = Year(Now)
'Mois = Month(Now)
'Jour = Day(Now)
'today = Jour & "-" & Mois & "-" & Annee
'JA = Format(DateAdd("n", 1, today), "dd-mm-yyyy") 'renvoie today + 1 minute
Dim Chemin0 As String
Chemin0 = Tablo_Const(8, 1)
' Chemin0 = "\\10.120.49.253\Serveur-CSV\manifestes-csv-du-" & JA & "\" '.....'sur mon serveur T
Dim Chemin00 As String 'affecte variable
Chemin00 = Tablo_Const(9, 1)
'Chemin00 = "\\10.120.49.253\Serveur-XLS-PAS-ANALYSES\manifestes-xls-du-" & JA & "\" 'identifie le chemin du dossier de sauvegarde des XLS
If Dir(Chemin00, vbDirectory + vbHidden) = "" Then MkDir (Chemin00) 'si le dossier n'existe pas, le créer
'ChDir Chemin00
If Dir(" & Tablo_Const(9, 1) & ", vbDirectory + vbHidden) = "" Then MkDir Tablo_Const(9, 1)

Dim maitre As String ' déclaration de la variable de type chaîne
Dim lefichier As String
Dim b As Long
Dim t As Integer
Dim recherche As String
Dim nvfi As String

Application.ScreenUpdating = False ' désactive l'affichage
maitre = ActiveWorkbook.Name ' le nom du classeur actif est affecté à maître
lefichier = Dir(Chemin0) ' soit tous les fichiers se trouvant dans répertoire à scruter

'While Right(lefichier, 3) = "csv" 'And lefichier <> ""
While lefichier <> "" 's'il existe un fichier

If Right(lefichier, 3) = "csv" Then 'UNIQUEMENT SI CSV


'A2 ========= ======= CODE QUI CONVERTIT LES CSV en XLS

'a) ====== ouverture du fichier
Workbooks.OpenText (Chemin0) & lefichier, DataType:=xlDelimited, Other:=True, OtherChar:=","
ChDir (Chemin0) 'B ======ligne qui convertit les CSV en XLS


'A3 ==== ARCHIVAGE PAR JOUR D'ANALYSE... des fichiers XLS CONVERTIS ======(Chemin00)

'b) =======enregistrement sous rep "XLS-PAS-ANALYSES" (Chemin (00)
ActiveWorkbook.SaveAs FileName:=(Chemin00) + Mid(ActiveWorkbook.Name, 1, Len(ActiveWorkbook.Name) _
- 4) & ".xls", FileFormat:=xlExcel5, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False

ActiveWorkbook.Close SaveChanges:=True

'c)'réouvre le fichier CSV
Workbooks.Open (Chemin0) & lefichier


'd) ======= re-enregistrement sous rep "CSV" avec l'extension XLS(Chemin0)
'ainsi n'ira pas reconvertir des CSV déjà traités
ActiveWorkbook.SaveAs FileName:=(Chemin0) + Mid(ActiveWorkbook.Name, 1, Len(ActiveWorkbook.Name) _
- 4) & ".xls"

'e) dans ces XLS supprime tous les datas (conserve uniq nom du fichier avec incrément
ActiveWorkbook.Worksheets(1).Range("A1:AV10000").Clear
'f) enregistre les modifications lors fermeture dans ce fichier xls
ActiveWorkbook.Close SaveChanges:=True

'g) SUPPRIME le fichier INITIAL CSV
Kill (Chemin0) & lefichier

End If '(fin de la restriction pour les fichiers CSV)

lefichier = Dir() ' pour affecter le nom de fichier suivant dans
Workbooks(maitre).Activate



Wend 'continuer
Application.ScreenUpdating = True ' active l'affichage "flash d'écran"


End Sub

Finalement, je me demande si je gagne beaucoup à avoir des lignes de code avec des chiffres Tablo_const (9,1) qui tout compte fait sont moins visibles que Chemin00


Merci pour votre aide
CAPRI_456
 

Discussions similaires

Réponses
2
Affichages
287
Réponses
4
Affichages
865

Statistiques des forums

Discussions
312 755
Messages
2 091 707
Membres
105 053
dernier inscrit
HAMOUD