Affecter une valeur présente dans un tableau à une variable
bonjour à vous
je viens vers vous j'ai un soucis pour l'affectation d'une variable.
j'aimerai que ma variable IA prenne la valeur présente entre parenthèse
le tableau fait parti d'un tableau appelé Fct_Mesure
j'ai déjà codé ceci :
Windows("HEM-AF-6300-001").Activate 'Rend le fichier GénérateurSV_v2.10 actif
Worksheets("General").Activate 'Rend la feuille Templet SV active
b = 5
k = 0
MaxIA = Sheets(Nom).Range("Fct_Mesure").Rows.Count - 4 'Ici on compte le nombre de IC
Windows("classeurtest1.0").Activate 'Rend le fichier classeurtest1.0 actif
Worksheets(Nom & "Section").Activate 'Rend la feuille Nom active
Do While k <> MaxIA 'faire tant que j different de MaxIC
If Cells(b, 2).Text Like "*\DEC_MEAS\*" Then ' est active si \IC\ existe dans la colonne B
Windows("HEM-AF-6300-001").Activate 'Rend le fichier GénérateurSV_v2.10 actif
Worksheets(Nom).Activate 'Rend la feuille Templet SV active
IA = Sheets(Nom).Range("Fct_Mesure").Cells(k + 4, 3) 'IA prend la valeur de la case unité
Windows("classeurtest1.0").Activate 'Rend le fichier GénérateurSV_v2.10 actif
Worksheets(Nom & "Section").Activate 'Rend la feuille Templet SV active
'MsgBox "Le mot ""FUNCTION"" existe dans la colonne."
Cells(a, 21).Activate
ActiveCell = IC
k = k + 1
End If
a = a + 1
Windows("classeurtest1.0").Activate 'Rend le fichier GénérateurSV_v2.10 actif
Worksheets(Nom & "Section").Activate 'Rend la feuille Templet SV active
merci à vous pour votre aide et le temps que vous passerez à m'aider
Grevious88 a écrit :j'aimerai que ma variable IA prenne la valeur présente entre parenthèse
Tu veux récupérer le contenu de Unité (virgule) c'est bien ça?
Si c'est bien ça
Supposons que dans une variable tu aies stocké bar(2) (avec des captures d'écran je peux pas te proposer mieux)
Dim maVariable As String
Dim maValeur As Integer
maVariable = "bar(2)"
maVariable = Split(maVariable, "(")(1)
maVariable = Split(maVariable, ")")(0)
maValeur = IIf(IsNumeric(maVariable), CInt(maVariable), 0)
oui voila je veut récuperer la valeur présente entre les parenthèses
j'ai tester ce que tu m'as donner le soucis c'est que j'aimerai que le programme balaye l'ensemble des cases du tableau et écrive la valeur entre parenthèse dans une variable (la même variable à chaque fois)
Sans fichier tu n'auras pas vraiment beaucoup plus d'aide.
Supposons que tu ais une boucle qui balaye tes lignes, et que les données sont stockées dans la colonne B
Dim maVariable As String
Dim maValeur As Integer
For ligne = 5 to 10
maVariable = Range("B" & ligne)
maVariable = Split(maVariable, "(")(1)
maVariable = Split(maVariable, ")")(0)
maValeur = IIf(IsNumeric(maVariable), CInt(maVariable), 0)
Next ligne
ne pourais - je pas utiliser :
IA = Sheets(Nom).Range("Fct_Mesure").Cells(k + 4, 3) 'IA prend la valeur de la Ligne N°x du tableau
Val (IA) = ValIA 'ici j'utilise la fonction VAL
?
'--------- en haut de la procédure
Dim maVariable As String
Dim IA As Integer
'dans ta boucle
maVariable = Sheets(Nom).Range("Fct_Mesure").Cells(k + 4, 3).Value
maVariable = Split(maVariable, "(")(1)
maVariable = Split(maVariable, ")")(0)
IA = IIf(IsNumeric(maVariable), CInt(maVariable), 0)
pour le deuxième post excuse moi mais j'ai pensé que reformuler la question plus clairement pourrais permettre plus de réponse et ensuite je l'ai fait avant ta réponse je suis désolé
en tous cas je te remercie pour ta solution qui fonctionne bien mais une question sir il y avait par exmple des choses apres genre bar(2)cars ? comment tu aurais pu faire ?
Excuses considérées et en phase d'acceptation.
La formule que je te propose fait la chose suivante:
je découpe mon texte à chaque "(" trouvé grâce au code Split(maVariable, "(")
montexte(12452)abc) sera découpé de la manière suivante:
- montexte
- 12452)abc)
Split(maVariable, "(")(0) = montexte
Split(maVariable, "(")(1) = 12452)abc)
Ce qui nous intéresse c'est 12452, on travaille donc pour la suite avec Split(maVariable, "(")(1)
maVariable = Split(maVariable, "(")(1)
Maintenant on veux faire la même chose, mais en gardant ce qui est à gauche du ")" grâce au code Split(maVariable, ")")
- 12452
- abc
Split(maVariable, "(")(0) = 12452
Split(maVariable, "(")(1) = abc
Le résultat souhaité est contenu dans Split(maVariable, "(")(0) d'où
maVariable = Split(maVariable, ")")(0)
Plus qu'à vérifier qu'on a bien extrait un nombre
IA = IIf(IsNumeric(maVariable), CInt(maVariable), 0)
En somme, tant que ta donnée à extraire est contenue dans les premières parenthèses, ça fonctionnera
blabla(indice)(blabla) -> extraira indice
blabla(blabla)(indice) -> extraira blabla
d'accord merci pour tes explications très censés et concrètes
en tous cas cela fonctionne très bien c'est super je vous remercie et je pense avoir besoin de vous encore de temps en temps vu que je suis un débutant en VB et que mon projet de stage est très complexe et en VB
d3d9x a écrit :Excuses considérées et en phase d'acceptation.
La formule que je te propose fait la chose suivante:
je découpe mon texte à chaque "(" trouvé grâce au code Split(maVariable, "(")
montexte(12452)abc) sera découpé de la manière suivante:
- montexte
- 12452)abc)
Split(maVariable, "(")(0) = montexte
Split(maVariable, "(")(1) = 12452)abc)
Ce qui nous intéresse c'est 12452, on travaille donc pour la suite avec Split(maVariable, "(")(1)
maVariable = Split(maVariable, "(")(1)
Maintenant on veux faire la même chose, mais en gardant ce qui est à gauche du ")" grâce au code Split(maVariable, ")")
- 12452
- abc
Split(maVariable, "(")(0) = 12452
Split(maVariable, "(")(1) = abc
Le résultat souhaité est contenu dans Split(maVariable, "(")(0) d'où
maVariable = Split(maVariable, ")")(0)
Plus qu'à vérifier qu'on a bien extrait un nombre
IA = IIf(IsNumeric(maVariable), CInt(maVariable), 0)
En somme, tant que ta donnée à extraire est contenue dans les premières parenthèses, ça fonctionnera
blabla(indice)(blabla) -> extraira indice
blabla(blabla)(indice) -> extraira blabla
et du coup si je veut recuperer seulement n'unité (genre bar °C rpm ect ect ) ?? comment je dois procceder ?