Affecter une variable définie par l'utilisateur à un variant

skirby Messages postés 96 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 26 juillet 2007 - 5 avril 2006 à 16:40
MAXIMO71 Messages postés 46 Date d'inscription samedi 25 mars 2006 Statut Membre Dernière intervention 7 juin 2007 - 8 avril 2006 à 12:55
Bonjour tout le monde,

j'aurais voulu savoir si il était possible d'affecter une variable dont j'ai défini le type à une variable de type variant.
Mon but est de pouvoir utiliser la même variable dans mon code mais celle ci peut "pointer" vers une structure différente.

Cela donne un truc du genre :

' --- Dans un module
Public Type T_Norm160
texte As String * 160
crlf As String * 2
End Type

Public Type T_Norm480
texte As String * 480
crlf As String * 2
End Type

Public T160 As T_Norm160
Public T480 As T_Norm480

Public Function fnt_test()
Dim T As Variant

T = T160 ' ICI j'ai une erreur (cf capture plus bas)

MsgBox Len(T)
End Function

' --- Dans la form principale

Private Sub Form_Load()
fnt_test
End Sub

Merci d'avance pour vos réponse.

A+

7 réponses

MAXIMO71 Messages postés 46 Date d'inscription samedi 25 mars 2006 Statut Membre Dernière intervention 7 juin 2007
5 avril 2006 à 18:34
Je ne suis pas certain de la réponse mais as tu essayé



Set T = T160



C'est une solution pour affecter un variant à un objet, je ne sais pas si cela va fonctionner dans ton cas



De plus pourquoi déclarer T comme variant et non pas comme T_Norm160
quelle utilisation futur comptes tu faire de T qui nécessite qu'il soit
déclaré en variant?

MAXIMO71
PS Si la réponse vous satistait
pensez à la valider
0
skirby Messages postés 96 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 26 juillet 2007
6 avril 2006 à 08:01
Salut MAXIMO71,

Set T = T160 ne va pas car Set permet uniquement d'affecter des objets et ma variable n'est pas une variable de type objet.

Je ne peux pas déclarer T comme variable de type T_Norm160 car je veux pouvoir manipuler avec une même variable des variables de type T_Norm160 et T_Norm480 afin de simplifier mon code le plus possible et ne pas avoir à dupliquer mon code sous prétexte que je doit travailler avec deux strutures différentes.

En réalité, j'aurai un truc du genre:

Public Type T_Norm160
v1 As String * 10

v2 As String * 100


v3 As String * 50
crlf As String * 2

End Type

Public Type T_Norm480
v1 As String * 10
v2 As String * 100

v3 As String * 50

v4 As String * 320

crlf As String * 2

End Type

On peut voir que les deux tructures diffère uniquement à la fin et que le début et le même.
Ensuite, je veux écrire le contenu de ces structures dans un fichier.
Donc si je pouvais manipuler avec une même variable les deux types de structure, j'aurais un code plus simple.

Merci pour votre aide.
0
MAXIMO71 Messages postés 46 Date d'inscription samedi 25 mars 2006 Statut Membre Dernière intervention 7 juin 2007
7 avril 2006 à 12:41
Je te livre une autre réflexion, pourquoi ne déclarer T au fur et à mesure en fonction du besoin en début de routine par



Dim T as T_Norm160



puis quand tu as besoin



Dim T as T_Norm480



Je pense qu'il serait utile de ré initialiser T aussi avant de le redléclarer

MAXIMO71
PS Si la réponse vous satistait
pensez à la valider
0
skirby Messages postés 96 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 26 juillet 2007
7 avril 2006 à 13:36
Salut MAXIMO71,

Tu ne peux pas déclarer deux fois une même variable dans la même fonction ou procédure.

Une autre idée ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MAXIMO71 Messages postés 46 Date d'inscription samedi 25 mars 2006 Statut Membre Dernière intervention 7 juin 2007
7 avril 2006 à 20:26
Non désolé de t'avoir fait perdre tu temps mais je sui sec.

MAXIMO71
PS Si la réponse vous satistait
pensez à la valider
0
skirby Messages postés 96 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 26 juillet 2007
7 avril 2006 à 23:37
Merci quand même.

A+
0
MAXIMO71 Messages postés 46 Date d'inscription samedi 25 mars 2006 Statut Membre Dernière intervention 7 juin 2007
8 avril 2006 à 12:55
Bonjour,

La nuit m'a peut être porté conseil, si je comprend seul v4 est dans le
type T_Norm480 alors pourquoi ne pas juste tester v4 pour savoir
si tu as l'une ou l'autre des normes. Je m'explique, pour quoi ne pas
juste déclarer le type T_Norm comme tu le fais dans 480 et tester si la
variable v4 est nulle ou pas pour définir la norm 160. Cela t'évite de
doubler ton code, en revanche il introduit un test, si tu dois le faire
souvant passe par une fonction de test que tu appelles à volonté.

Voilà en espérant avoir un peu contribuer à t'aider.

Bonne journée.




MAXIMO71
PS Si la réponse vous satistait
pensez à la valider
0
Rejoignez-nous