Modifier un nombre à virgule dans un texte (dans une textbox) - VB/VBA/VBS - Programmation
Marsh Posté le 18-01-2008 à 01:27:42
Tu peux essayer les expressions régulières c'est très puissant.
En VBA, pour pouvoir en faire il faut rajouter en utilisant une nouvelle bibliothèque.
Pour ce faire utilise le menu :
Outils->Références et dans la liste, cocher "Microsoft VBScript Regular Expressions 5.5"
Ensuite il faut l'utiliser d'une manière equivalente à
Code :
|
Voilà pour l'utilisation d'une expression régulière.
Histoire de ne pas faire tout le boulot (sinon c'est pas drôle), Il reste des truc à remplir : str doit être remplacé par ta textbox, récupérer X et Y, mettre l'expression régulière
Pour ce qui est l'écriture d'un expression régulière google est ton ami.
Néanmoins qq indices :
Bon courage,
Tiens nous au courant
Marsh Posté le 20-01-2008 à 14:42:05
Salut,
Pour l'expression régulière, je pense que ça devrait aller, j'obtiens quelque chose du genre :
rgxp.Pattern = "truc\(-?\d+,-?\d+\)"
Par contre je bloque au niveau de la boucle for...each...
le programme bloque à nb_1 = match_elt.SubMatches(0) + le nombre x
quelque soit le nombre x, qu'il existe ou pas, peut être qu'il y a une erreur au niveau des paramètres de l'expression régulière ou l'expression régulière elle-même, mais là je sèche un peu...
Marsh Posté le 20-01-2008 à 16:36:09
Donc tu y es presque...
il ne te manque plus que dire à VBA ce que tu veux récupérer avec des parenthèses...
Marsh Posté le 20-01-2008 à 18:24:16
Il manquait pas grand chose effectivement, 4 parenthèses et le problème est réglé
Le programme fonctionne maintenant, encore merci pour ton aide
Marsh Posté le 06-02-2008 à 22:44:03
edit: Bonjour,
Aujourd'hui, je cherche plus à faire du calcul non pas avec des nombres entiers mais à virgule, simple dans le principe mais je n'arrive à effectuer de calcul avec ceux-ci, j'ai un code d'erreur 13 "type incompatible" quelque soit le type de variable que j'applique au "nb_1" .
J'ajouterai que j'arrive bien à capturer le nombre à virgule entre ().
Ma question est donc la suivante : Comment effectuer un calcul de nombre à virgule issu d'une expression régulière ?
Marsh Posté le 07-02-2008 à 15:44:54
Bonjour,
il est fort probable que le problème vienne de la virgule (ou du point) : la conversion string ==> decimal ne fonctionne qu'avec l'un des deux (dépend de la conf système).
Pour ce faire, il faut que tu forces le remplacement :
- soit "." ==> ","
- soit "," ==> "."
Pour cela la fonction replace est bien utile (par exemple autour du match_elt.submatch)
Marsh Posté le 17-01-2008 à 22:19:06
Bonjour,
Voilà le problème :
A partir d'une textbox contenant par exemple :"blabla blabla truc(89,7689) blabla blabla truc(45,78)"
je cherche à modifier les 2 nombres entre parenthèses de tel façon que si je mets x= 3 et y = -456 que j'obtienne dans une nouvelle textbox quelque chose du genre :
"blabla blabla truc(92,7233) blabla blabla truc(48,-378)" (si je me suis pas trompé)
Sachant aussi que les nombres que je dois modifier doivent impérativement être ceux de "truc(,)" et pas autre chose.
Je vois pas par où commencer ou comment procéder, si il faut faire une recherche de caractère puis modifier d'abord les nombres...
J'espère être assez clair dans mes explications (je suis débutant).
Merci pour votre aide.
Message édité par restk le 06-02-2008 à 22:44:46