[VBA] - Supprimer des caractère ilisite dans une chaine

  • Initiateur de la discussion Ke$mO
  • Date de début
K

Ke$mO

Guest
Bonjour a tous,

Je suis un débutant en VBA et je voulais savoir si quelqu'un pouvait m'aider ! ?

Pour un travail que je fait pour le boulot je dois supprimer quelques caractères qui rendent une string ilisible !

Ayant fait pas mal de C j'ai un peu codé de la même manière, mais sans résultat puisque qu'il m'affiche plusieur erreurs.

ma source:

'===================================================

Dim strLen As Integer
Dim i As Integer

strLen = Len(strMyValue) 'strMyValue etant ma string ou je veut sup quelques caractère !

For i = 0 To strLen
If Not strLen(k) = IsNumeric(strLen(k)) Then
strLen(k) = ""
End If
Next i

MsgBox (strMyValue)

'===================================================

Voilà ! Alors si quelqu'un aurait eu fait un script qui ferait se dont j'ai besoin j'en serai très reconnaisant si il pouvait me le fair parvenir !

Merci d'avance....

@+
 
K

Ke$mO

Guest
[Edit]

désolé je fait juste un changement:

'====================================================

Dim strLen As Integer
Dim i As Integer

strLen = Len(strMyValue) 'strMyValue etant ma string ou je veut sup quelques caractère !

For i = 0 To strLen
If Not strLen(i) = IsNumeric(strLen(i)) Then
strLen(i) = ""
End If
Next i

MsgBox (strMyValue)

'====================================================

Merci
 
J

Jacques

Guest
Bonjour Ke$m0,
Il y a plusieurs chose qui me semble bizarre dans ton code.
Tout d'abord ta variable strLen que tu définis comme étant un entier mais pas comme tableau et en même temps tu l'utilise comme tableau(strLen(i)).
Je crois que dans ce dernier cas tu veux sans doute désigner le caractère de ta variable strMyvalue ayant pour rang i.
Ensuite, "IsNumeric(strLen(i)) " ne peut je pense prendre que deux valeurs : true ou false.
donc si j'ai bien compris ce que tu veux faire (mais j'ai un doute immense car je ne suis pas sûr d'avoir tout compris) je te propose plutôt le code suivant:

Dim strLen As Integer
Dim i As Integer

For i = strLen To 1 Step (-1)
newlen = Len(strMyvalue)
caract$ = Mid(strMyvalue, i, 1)
If Not (IsNumeric(Mid(strMyvalue, i, 1))) Then
strMyvalue = Left(strMyvalue, i - 1) & Right(strMyvalue, newlen - i)
End If
Next i

est-ce que ça répond à ton besoin ????

Bonne fin de journée
 
Z

zon

Guest
Bonjour à tous,


J'avais raté ce post hier...
Mais en voyant ta réponse Jacques, j'ai pensé qu'il serait bien de créer une fonction qui transforme une chaîne de caractères(ici expression alphanumérique) en un nombre (de type double): cela peut servir même si elle existe déjà..

Function AlphadevientNum(chaine As String) As Double
Dim Strmyvalue As String, Strlen As Long, Newlen As Long, i as Long
Strmyvalue = chaine
Strlen = Len(Strmyvalue)
For i = Strlen To 1 Step (-1)
Newlen = Len(Strmyvalue)
If Not (IsNumeric(Mid(Strmyvalue, i, 1))) Then
Strmyvalue = Left(Strmyvalue, i - 1) & Right(Strmyvalue, Newlen - i)
End If
Next i
AlphadevientNum = Strmyvalue
End Function


ensuite pour s'en servir dans une procédure
sub res()
dim toto as double

toto=AlphadevientNum(unechaine)

end sub

ou encore dans une feuille de calcul, dans une celulle....

taper en A2, =alphadevientnum(A1)


A+++
 

Discussions similaires

Réponses
9
Affichages
241

Statistiques des forums

Discussions
314 012
Messages
2 104 531
Membres
109 066
dernier inscrit
Tinou99