Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Faire reconnaître une chaîne de caractère comme variable... [ Archives Visual Basic / VBA ] (edouard_berth)

samedi 6 août 2005 à 19:44:13 | Faire reconnaître une chaîne de caractère comme variable...

edouard_berth

Bonjour,

J'ai une macro qui me renvoie des valeurs en string qui correspondent à des variables que j'ai déclaré précedemment, et je n'arrive pas à faire reconnaître mes chaînes comme telles.
Dans l'exemple suivant, je voudrais obtenir 98 dans ma msgbox à partir de "ki"...

Sub Conversion()

k1 = 98
I = 1
MsgBox ("k" & i) 'Renvoie bien sûr "ki"

End Sub

J'ai essayé tout un tas de combinaisons avec Cint, Cstr ... comme me l'avait conseillé Daniel,
mais je n'arrive à rien.

Si quelqu'un pouvait m'aider...

Merci,

E.B.


samedi 6 août 2005 à 19:57:55 | Re : Faire reconnaître une chaîne de caractère comme variable...

DARKSIDIOUS

Membre Club Administrateur CodeS-SourceS
Utilise des tableaux plutôt :

Dim k(100) As integer
I = 1
Msgbox (k(I))

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) :

samedi 6 août 2005 à 21:09:51 | Re : Faire reconnaître une chaîne de caractère comme variable...

SupraDolph

Sub Conversion()
'déclaration de tes varibles en tant qu'entier
dim k1 as integer
dim i as integer

k1 = 98
i = 1
MsgBox ("k1=" &  str(k1) & " i=" & str(i))  'Renvoie bien sûr "k1=98 i=1""

End Sub

j'espère que c'est ce que tu voulais

SupraDolph.

samedi 6 août 2005 à 21:51:04 | Re : Faire reconnaître une chaîne de caractère comme variable...

etniqs

t'as essayé  ?
dim nm as string

k1 = 98
nm = cint(cstr("k" + i))

msgbox "result =" + nm


dimanche 7 août 2005 à 11:48:34 | Re : Faire reconnaître une chaîne de caractère comme variable...

edouard_berth

Désolé d'insiter, mais je n'y arrive toujours pas. La solution de etniks me renvoie une incompatibilité de type...

Ce que je ne comprends pas c'est pourquoi à partir du moment ou j'obtiens la chaîne de caractère correspondant à ma variable "k1" correspondant à k1, la fonction Cint ne suffit pas m'ôter les "" pour reconnaître la variable...

Je vais tenter de passer par un tableau, mais le problème, c'est que ma chaîne en string es déjà renvoyée par un tableau genre tblo(5)="k1"...

Merci pour votre aide

E.B.


dimanche 7 août 2005 à 13:08:01 | Re : Faire reconnaître une chaîne de caractère comme variable...

DARKSIDIOUS

Membre Club Administrateur CodeS-SourceS
Ben tu es en VB, tu n'est pas en LISP, tes variables sont typés. La fonction CInt convertit une chaîne en nombre, ca d'accord, mais elle n'interprête pas la chaîne. Par exemple, Cint("8 + 3") te renvoie pas 11 mais provoque une erreur de type incompatible, normal !

C'est pour cà, tu n'a guère le choix, à part passer par un tableau, je ne vois pas !

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/

dimanche 7 août 2005 à 17:53:06 | Re : Faire reconnaître une chaîne de caractère comme variable...

edouard_berth

J'ai trouvé une solution à mon problème qui, je dois le reconnaître n'est pas bien élégante...
Je vuolais initialement convertir les nombres en chiffres romains d'une chaîne en chiffres arabes, et ma question visait à m'éviter la lourdeur des "if" successifs pour t et t-1...
Je ne doute pas qu'il y ai plus simple, mais le plaisir de réussir tout seul...
Merci quand même


Sub Romains()

Dim VF As Integer

For k = 3 To 24

    Dim Tableau()
    Compteur = 1
   
    For I = 0 To Len(Cells(k, 1)) - 1
    clef = Mid(Cells(k, 1), I + 1, 1)
    ReDim Preserve Tableau(1 To Compteur)
    Tableau(Compteur) = clef
    Compteur = Compteur + 1
    Next

t = 2

If Len(Cells(k, 1)) > 1 Then

    While t <= Len(Cells(k, 1))
       
If Tableau(t) = "I" Then Tableau(t) = 1
If Tableau(t) = "V" Then Tableau(t) = 5
If Tableau(t) = "X" Then Tableau(t) = 10
If Tableau(t) = "L" Then Tableau(t) = 50
If Tableau(t) = "D" Then Tableau(t) = 100
If Tableau(t) = "M" Then Tableau(t) = 1000
If Tableau(t - 1) = "I" Then Tableau(t - 1) = 1
If Tableau(t - 1) = "V" Then Tableau(t - 1) = 5
If Tableau(t - 1) = "X" Then Tableau(t - 1) = 10
If Tableau(t - 1) = "L" Then Tableau(t - 1) = 50
If Tableau(t - 1) = "D" Then Tableau(t - 1) = 100
If Tableau(t - 1) = "M" Then Tableau(t - 1) = 1000
       

        If Tableau(t - 1) >= Tableau(t) Then
            If t < Len(Cells(k, 1)) Then
            VF = VF + Tableau(t - 1)
            Else: VF = VF + Tableau(t - 1) + Tableau(t)
            End If
        t = t + 1
        Else: VF = VF + Tableau(t) - Tableau(t - 1)
        t = t + 2
        End If
   
    Wend
   
ElseIf Len(Cells(k, 1)) = 1 Then
    If Tableau(1) = "I" Then Tableau(1) = 1
    If Tableau(1) = "V" Then Tableau(1) = 5
    If Tableau(1) = "X" Then Tableau(1) = 10
    If Tableau(1) = "L" Then Tableau(1) = 50
    If Tableau(1) = "D" Then Tableau(1) = 100
    If Tableau(1) = "M" Then Tableau(1) = 1000
   
    VF = Tableau(1)

ElseIf Len(Cells(k, 1)) = 0 Then
    VF = 0

End If

VF = 0

Next

End Sub


dimanche 7 août 2005 à 19:18:21 | Re : Faire reconnaître une chaîne de caractère comme variable...

RicoNuch

Membre Club

Il y avait aussi une solution, mais un peu lourde à mettre en place (c'est pourquoi je ne l'ai pas donnée), qui consistait à créer une collection "encapsulée" comme décrite dans les tutos msdn, qui te permet d'appeler indifféremment l'élément de la collection par son index numérique ou son index de type « string ».

 

Rico

dimanche 7 août 2005 à 22:38:23 | Re : Faire reconnaître une chaîne de caractère comme variable...

hassen

j'ai un petit solution je sais pas si elle te convient

en fait pour les variables t'a qu'a mettre des controles label invisible sur la feuille

Label1 = 20

MsgBox Form1.Controls("label1").Caption


Hassen TUNISIE


dimanche 7 août 2005 à 22:44:40 | Re : Faire reconnaître une chaîne de caractère comme variable...

hassen

mais c'est du visual basic pas du VBA

Hassen TUNISIE


1 2

Cette discussion est classé dans : variable, caractère, chaîne, renvoie, reconnaître


Répondre à ce message

Sujets en rapport avec ce message

1/suppression d'un caractère dans une chaîne - 2/ comparaison de deux chaines de caractères [ par guig ] 1/ comment faire pour supprimer un caractère dans une chainede caractères.Ex : Une phrase se termine par un point.JE SOUHAITE SUPPRIMER TOUS LES E.2/ caractère joker pour remplacer une chaîne dans une chaîne [ par couf ] coufBonjour à tous le groupe voilà je suis débutant en vbbasic et j'aimerai résoudre un petit probleme.voila j'ai la chaine de caractère suivanteA2000 recherche d'une chaine de caratères et souligner le mot contenant cette chaîne de caractère (WORD VBA) [ par coulpi ] je suis en train d'écrire une macro permettant de rechercher une chaîne de caractère et par la suite de souligner le mot contenant cette chaîne de car Caractère double-cote dans SQL [ par dany108 ] Quand une variable contient le caractère double-cote ou chr(34) cela plante mon SQL sous ADO.Avec la simple cote, j'encadre ma variable de 2 double co contrôle mis en variable [ par paulbader ] Bonjour.Est-il possible de mettre en variable le nom d'un contrôle VB ?Ex : comment faire une procédure avec comme argument 1 une chaîne de caractères recherche d'une chaîne de caractère [ par Cécé ] Salut à tous,Ceci est un appel urgent.Je veux faire la recherche d'une string tout en laissant possible les erreurs.EXEMPLEje cherche Cé et la réponse Urgent, gros pb de chaîne de caractère [ par Cécé ] Salut à tous, je craque alors merci à tous ceux qui m'aideront.J'expique mon problème.J'ai un module de recherche basé sur une chaîne alphanumérik et lecture de chaîne caractère par caractère [ par PrX ] Bonjour a tous !Je cherche a lire une variable chaine (genre str="Bonjour les amis") caractere par caractere ou mot par mot pour en extraire qu'un seu rechercher un guillemet dans une chaîne de caractères [ par hotsauce ] bonjour à tous,je souhaite rechercher dans une variable donnée le caractère guillemet; voici le code que j'utilise:if instr(1,val, " " ")0 then msgbox reprendre une chaine de caractère [ par berni85 ] Bonjours à tous !J'ai un petit problème qui est le suivant :J'ai une variable (string) qui a dedant des () avec quelque chose entre les deux ().Commen


Nos sponsors

Sondage...

CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,234 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.