|
|
|
|
Bonjour,
Private maVariable As String
Public Sub setMaVariable(ByVal str as String) 'En écriture
maVariable = str
End Sub
Public Function getMaVariable() As String 'En lecture
getMaVariable = maVariable
End Function
;o) polux
|
Je t'ai mis un petit exemple sur ce lien http://cjoint.com/?eipdeDIX2K ... pour te montrer comment utiliser une variable dans un module indépendant.
|
Aieaieaie...je n'y arrive toujours pas, je ne comprends pas la logique de ces variables etendues ...
Private sous_res As String
Public Sub setsous_res(ByVal str As String)
sous_res = str
End Sub
Public Function getsous_res() As String
getsous_res = sous_res
End Function
Dans le Userform1 :
Private Const SC_CLOSE = &HF060&
Private Const MF_BYCOMMAND = &H0&
Private Declare Function GetSystemMenu Lib "user32" _
(ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" _
(ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function FindWindowA Lib "user32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub UserForm_Initialize()
Dim hSysMenu As Long
Dim MeHwnd As Long
MeHwnd = FindWindowA(vbNullString, Me.Caption)
If MeHwnd > 0 Then
hSysMenu = GetSystemMenu(MeHwnd, False)
RemoveMenu hSysMenu, SC_CLOSE, MF_BYCOMMAND
Else
MsgBox "Handle de " & Me.Caption & " Introuvable", vbCritical
End If
End Sub
Private Sub sr251_click()
Call Doc.setsous_res("251")
Unload Me
End Sub
Private Sub sr252_click()
Call Doc.setsous_res("252")
Unload Me
End Sub
Private Sub sr253_click()
Call Doc.setsous_res("253")
Unload Me
End Sub
Je desespère ... Au fait, je ne peux pas mettre de "Option Explicit" car dans mon script principal j'ai une tonne de variables non déclarées, un peu du style de conf1 à conf 26...ça vient de là tu penses ? |
Oulala .... il faut déclarer Option Explicit dans tous les modules .... je ne sais pas si ça peut venir de là, mais le fait de déclarer les variables permet de mieux les gérer. Ce n'est pas indispensable pour des petits programmes, tel qu'une macro en Excel, mais dès que l'on veut manipuler des variables il est necessaire de toutes les déclarer. Je ne commence jamais un module sans Option Explicit. Tu as vu mon exemple, ça fonctionne. Il n'y a aucune raison que ça ne marche pas chez toi ...
|
Tu veux sans doute dire un tableau de données variables, ici avec 429 éléments de type String.
Private conf(429) As Stringet faire les 2 accesseurs en écriture et lecture comme ça : Public Sub setConf(ByVal i As Integer, ByVal str As String)
conf(i) = str
End Sub
Public Function getConf(ByVal i As Integer) As String
getConf = conf(i)
End Function
Ca fait plus de code à taper mais au moins on peut maîtriser les variables et les manipuler plus facilement. ;o) Polux
|
Bon je te l'envoie, par contre j'ai supprimé tout les conf1, conf2, conf3 etc...car il y a des informations sensibles dedans :)
|
Bonjour,
|
Voilà le lien : http://cjoint.com/?eknMwz5VfG
|
Re,
Public Sub setConf(ByVal i As Integer, ByVal str As String)
conf(i) = str
End Sub
Public Function getConf(ByVal i As Integer) As String
getConf = conf(i)
End Function
Je te rappelle que pour mes conf j'utilise un truc un peu comme ça conf1 = "blabla" conf2 = "blibli ... conf400 = "bloblo" conf = conf1 & conf2 & conf3 & conf4 ... & conf400 J'espère que tu aura trouvé la "faille" :P Encore merci pour ton soutien ! |
Ok, mais à vrai dire je ne sais pas ce que représente : conf ... donc difficile d'anticipé.
Private nbConf As Integer Dans l'initVariable, il faut ajouter nbConf = 1 Il faut mettre ça à l'endroit où ça va bien : Call setConf(nbConf, "blabla") nbConf = nbConf + 1pour écrire dans le tableau et ensuite pour les lire, faire une boucle: For i = nbConf to 400
conf = conf & conf(i)
Next i
C'est la seule solution que je vois. polux
|