type de variable?

Le
Yan
Bonjour,
J'aimerais saoir s'il est possible de modifier le type d'une variable au
cours d'une procédure, sans perdre sa valeur?
je m'explique un peu, je commence ma Sub avec une string "correspondance",
puisque j'ai des caractère alpha dedans, que je "néttois" ensuite!
Il me reste un truc du genre "171127000"
j'aimerais obtenir une nouvelle variable de type long (toujours nommée
"correspondance") contenant 171127000
Pensez vous que ce soit possible?

Pour le moment la seule chose que j'ai réussi à faire c'est de créer une
nouvelle variable "corresp" que je déclare comme "long" puis j'y met
corresp = correspondance
Ca fait pas tres "clean", non?
Merci d'avance.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #18664421
Il n'y a pas de problème à utiliser plus d'une variable dans une procédure.

Dans le cas qui te concerne, déclare ta variable as variant
cette dernière pourra contenir ce que tu désires.

Fais un petit test comme ceci :
Sub Test()
Dim MyVar as Variant
MyVar = Date
Msgbox Typename(MyVar)
myVar = 122254
Msgbox Typename(MyVar)
MyVar = "Ok"
Msgbox Typename(MyVar)
End Sub


"Yan"
Bonjour,
J'aimerais saoir s'il est possible de modifier le type d'une variable au
cours d'une procédure, sans perdre sa valeur?
je m'explique un peu, je commence ma Sub avec une string "correspondance",
puisque j'ai des caractère alpha dedans, que je "néttois" ensuite!
Il me reste un truc du genre "171127000"
j'aimerais obtenir une nouvelle variable de type long (toujours nommée
"correspondance") contenant 171127000
Pensez vous que ce soit possible?

Pour le moment la seule chose que j'ai réussi à faire c'est de créer une
nouvelle variable "corresp" que je déclare comme "long" puis j'y met
corresp = correspondance
Ca fait pas tres "clean", non?
Merci d'avance.
Yan
Le #18664551
Merci pour ta réponse rapide.
J'ai essayé comme tu me l'a proposé, mais malheureusement ca garde le type
"string"
je me sert de la fenêtre d'exécution où je tape;
?vartype(mavariable)

ce qui me donne toujours 8!
et comme ensuite je me sert de cette variable dans un Vlookup, bein ca
plante!
Je me suis dépanné avec ca;

Dim corresp as long
dim correspondance as string

corresp = clng(correspondance)

et ca fonctionne, mais ca me fait une variable de plus (j'en ai déjà plus
d'une trentaine, et je commence à m'emmêler les pinceaux!




"michdenis" news:
Il n'y a pas de problème à utiliser plus d'une variable dans une
procédure.

Dans le cas qui te concerne, déclare ta variable as variant
cette dernière pourra contenir ce que tu désires.

Fais un petit test comme ceci :
Sub Test()
Dim MyVar as Variant
MyVar = Date
Msgbox Typename(MyVar)
myVar = 122254
Msgbox Typename(MyVar)
MyVar = "Ok"
Msgbox Typename(MyVar)
End Sub


"Yan" discussion :

Bonjour,
J'aimerais saoir s'il est possible de modifier le type d'une variable au
cours d'une procédure, sans perdre sa valeur?
je m'explique un peu, je commence ma Sub avec une string "correspondance",
puisque j'ai des caractère alpha dedans, que je "néttois" ensuite!
Il me reste un truc du genre "171127000"
j'aimerais obtenir une nouvelle variable de type long (toujours nommée
"correspondance") contenant 171127000
Pensez vous que ce soit possible?

Pour le moment la seule chose que j'ai réussi à faire c'est de créer une
nouvelle variable "corresp" que je déclare comme "long" puis j'y met
corresp = correspondance
Ca fait pas tres "clean", non?
Merci d'avance.



Modeste
Le #18664541
Bonsour® Yan

J'aimerais saoir s'il est possible de modifier le type d'une variable
au cours d'une procédure, sans perdre sa valeur?
je m'explique un peu, je commence ma Sub avec une string
"correspondance", puisque j'ai des caractère alpha dedans, que je
"néttois" ensuite!
Il me reste un truc du genre "171127000"
j'aimerais obtenir une nouvelle variable de type long (toujours nommée
"correspondance") contenant 171127000
Pensez vous que ce soit possible?

Pour le moment la seule chose que j'ai réussi à faire c'est de créer
une nouvelle variable "corresp" que je déclare comme "long" puis j'y
met corresp = correspondance
Ca fait pas tres "clean", non?



Public Correspondance As Variant
Sub toto()
Correspondance = "qsdf389766780AS"
Correspondance = CLng(Yan_nettois(Correspondance))
MsgBox Correspondance
Correspondance = CDate(Correspondance / 10 ^ 4)
MsgBox Correspondance
Correspondance = CDbl(Correspondance)
MsgBox Correspondance
End Sub


Function Yan_nettois(mavariable)
Dim xxx As String
'--????--- ici j'ai des caractère alpha dedans, que je "néttois"
Yan_nettois = xxx
End function
Yan
Le #18664641
Ahh oui!
Très bonne idée comme ca aussi! Pis, j'adore le nom de la function! ;)





"Modeste" news:
Bonsour® Yan

J'aimerais saoir s'il est possible de modifier le type d'une variable
au cours d'une procédure, sans perdre sa valeur?
je m'explique un peu, je commence ma Sub avec une string
"correspondance", puisque j'ai des caractère alpha dedans, que je
"néttois" ensuite!
Il me reste un truc du genre "171127000"
j'aimerais obtenir une nouvelle variable de type long (toujours nommée
"correspondance") contenant 171127000
Pensez vous que ce soit possible?

Pour le moment la seule chose que j'ai réussi à faire c'est de créer
une nouvelle variable "corresp" que je déclare comme "long" puis j'y
met corresp = correspondance
Ca fait pas tres "clean", non?



Public Correspondance As Variant
Sub toto()
Correspondance = "qsdf389766780AS"
Correspondance = CLng(Yan_nettois(Correspondance))
MsgBox Correspondance
Correspondance = CDate(Correspondance / 10 ^ 4)
MsgBox Correspondance
Correspondance = CDbl(Correspondance)
MsgBox Correspondance
End Sub


Function Yan_nettois(mavariable)
Dim xxx As String
'--????--- ici j'ai des caractère alpha dedans, que je "néttois"
Yan_nettois = xxx
End function
michdenis
Le #18664781
| je me sert de la fenêtre d'exécution où je tape;
| ?vartype(mavariable)

Cette procédure affiche 3 valeurs dans la fenêtre Exécution
correspondant respectivement au contenu de la variable
à chacune des étapes :
La fenêtre exécution affiche :
Date
Long
String
Cela c'était pour démontrer que le type "Variant" s'adapte
selon l'affectation de la donnée que tu lui transmet.
'-------------------------
Sub Test()
Dim MyVar As Variant
MyVar = Date
Debug.Print TypeName(MyVar)
MyVar = 122254
Debug.Print TypeName(MyVar)
MyVar = "Ok"
Debug.Print TypeName(MyVar)
End Sub
'-------------------------
Tu peux regarder dans l'aide, il y a les fonctions de conversion
au besoin Clng(), Cdbl(), Cdate()... qui peuvent être utiles pour
convertir le TYPE de données. Garde cependant à l'esprit que
les fonctions de conversions utilisent les paramètres définis dans
le panneau de configuration pour effectuer la transformation.



ce qui me donne toujours 8!
et comme ensuite je me sert de cette variable dans un Vlookup, bein ca
plante!
Je me suis dépanné avec ca;

Dim corresp as long
dim correspondance as string

corresp = clng(correspondance)

et ca fonctionne, mais ca me fait une variable de plus (j'en ai déjà plus
d'une trentaine, et je commence à m'emmêler les pinceaux!




"michdenis" news:
Il n'y a pas de problème à utiliser plus d'une variable dans une
procédure.

Dans le cas qui te concerne, déclare ta variable as variant
cette dernière pourra contenir ce que tu désires.

Fais un petit test comme ceci :
Sub Test()
Dim MyVar as Variant
MyVar = Date
Msgbox Typename(MyVar)
myVar = 122254
Msgbox Typename(MyVar)
MyVar = "Ok"
Msgbox Typename(MyVar)
End Sub


"Yan" discussion :

Bonjour,
J'aimerais saoir s'il est possible de modifier le type d'une variable au
cours d'une procédure, sans perdre sa valeur?
je m'explique un peu, je commence ma Sub avec une string "correspondance",
puisque j'ai des caractère alpha dedans, que je "néttois" ensuite!
Il me reste un truc du genre "171127000"
j'aimerais obtenir une nouvelle variable de type long (toujours nommée
"correspondance") contenant 171127000
Pensez vous que ce soit possible?

Pour le moment la seule chose que j'ai réussi à faire c'est de créer une
nouvelle variable "corresp" que je déclare comme "long" puis j'y met
corresp = correspondance
Ca fait pas tres "clean", non?
Merci d'avance.



Publicité
Poster une réponse
Anonyme