VB6 Replace ???

Signaler
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
-
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
-
Salut...

Encore une patite question à propos du replace... ou enfin un autre fonction....

Si j'ai ce nombre "00020" ou "00120"

Comment je fais pour coder si je veux arrievr à ces résultats
si "00020" je dois arriver à 20 (les deux derniers chiffres)
Si "00120" je dois arriver à 120 (les trois derniers chiffrs)

je ne peux pas faire de Replace et je ne vois pas comment je peux utiliser le Left ou Right étant donné que j'ai toujours 5 caractères mais le résultat peux varier soit avoir 1, 2 ou 3 chiffres

Je suis perdu...

J'attends votre aide pour m'éclairer un peu...

merci

8 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
125
S'il ne s'agit que de chiffres avec des zéros devant, récupère leur valeur (avec un Val(tonNombre) ) ainsi ca t'enlèvera les 0 devant.

_
Avant de poster dans le forum,
prière d'aller lire ceci :
http://www.codes-sources.com/reglement.aspx
<s></s>
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
1
Salut c'est encore moi... ok la Val fonctionne tres bien si c'est du numérique mais si j'ai par exemple "000T2" bon ici je peux utiliser un replace... mais si j'ai "00T20" et je veux donc les trois dernières lettres/chiffres

Je veux T20

Quel est la fonction magique ????

S'cuse moi j'aurais du en parler à mon premiere message je croyais que qu'il y avait qu'une seule fonction pour faire cela... sorry
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
36
Salut

Regardes du coté des regexp et replace
http://www.vbfrance.com/codes/UTILISATION-EXPRESSIONS-REGULIERES_4185.aspx

1. ' Retourne la chaine dénudée de ses balises html
2. Public Function enleveMoiLesBalisesHTML(chaine As String)
3. Dim regExp As VBScript_RegExp.regExp
4. Set regExp = New VBScript_RegExp.regExp
5. regExp.Pattern = "<(.*)>" ' Définition de la balise HTML
6. regExp.Global = True ' On traite toute la chaine
7. enleveMoiLesBalisesHTML = regExp.Replace(chaine, "")
8. End Function

Mais le probleme est de trouver la bonne expression pour le faire.
Et la je seche.

Mais ca peut donner une piste pour un prochain post ;-)
Et te quider dans ta recherche.
Donne nous la solution si tu trouves.
Messages postés
14821
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 septembre 2021
156
Bonjour

Result=Replace(ChaineAvec0,"0","")

Il est plus facile de batiser quelqu'un que de la convertir. (surtout en programmation)
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)

<fon></fon>
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
36
Salut,

Le probleme est que les derniers zeros seront supprimés?

Ex 000T20  --> T2 a la place de T20

Une solution est de
if ismureric (eval(machaine)) then
eval(machaine)
else
boucle

for i=0 to machaine.length  -1
if machaine(i) = 0 then
machaine(i)  ="'
else
'premiere lettre
exit for
endif

Un algo du genre devrait marché????

Bon courage
next
 
Messages postés
14821
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 septembre 2021
156
Bonjour

Oui, en effet.
Une petite erreur :
if machaine(i) = 0 then
serait plutot
if mid( machaine,i,1) = "0" then

Et j'opterais plutot pour un code du style :

public function SupprZero(byval pStr as string) as string
    Dim i as long
    Dim Start as long
    for i=1 to len(pStr) 'Voir si base 0 ou 1
       if mid(pStr,i,1)<>"0" then
          Start=i
          exit for
       end if
    Next
    SupprZero=right(pStr,len(pStr)-Start-1)
End Function  

Il est plus facile de batiser quelqu'un que de la convertir. (surtout en programmation)
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)

<fon></fon>
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
pour une RegExp possible :

"^0*"

0 ou plus caractères '0' placés en début de chaine...

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
Attention, NHenry, ce n'est pas :

right(pStr,len(pStr)-Start-1)

mais :

right(pStr,len(pStr)-Start + 1)

Renfield
Admin CodeS-SourceS- MVP Visual Basic