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

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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....

@+
 
[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
 
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
 
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+++
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
581
  • Question Question
Microsoft 365 VBA sur outlook
Réponses
14
Affichages
1 K
Retour