traitement de chane de caractere

Le
seb leg
BOnjour,

j'ai une chaine de caractere du type
3a5b(10)1g2p5p(10)5p1d2t(09)1g4p

et je cherche une fonction ou une formule qui ne prednais pas les
lettre ni les nombre entre parenthèse ce qui me donnerais
3512551214.

merci de votre aide.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gloops
Le #23621421
seb leg a écrit, le 01/08/2011 13:24 :
BOnjour,

j'ai une chaine de caractere du type
3a5b(10)1g2p5p(10)5p1d2t(09)1g4p

et je cherche une fonction ou une formule qui ne prednais pas les
lettre ni les nombre entre parenthèse ce qui me donnerais
3512551214.

merci de votre aide.



Bonjour,

Voici une fonction qui peut valoir une adaptation à VBA (je me
débrouille avec ce que j'ai sous la main pour les tests) :

Cette fonction parcourt la chaîne de caractères reçue en argument, et
lorsqu'elle rencontre une parenthèse ouverte, elle cesse de prendre en
compte les caractères en entrée jusqu'à avoir rencontré une paren thèse
fermée.

Je précise qu'avant les parenthèses on peut très bien avoir (ou pas ) un
p, un x ou un z, et dans les parenthèses on peut très bien avoir deux
caractères, ou un seul, ou une tripotée, ou encore aucun, et que ça ne
dérange pas que les caractères entre parenthèses soient des chiffre s.

En adaptation, on verrait bien par exemple la transformation de booCop
en booléen, puisque là nous avons un variant utilisé comme entier. On
peut aussi déclarer la fonction comme String (et enlever le caractère $
dans le nom de la fonction).

FUNCTION EPURE$ (strInput AS STRING)
DIM Temp AS STRING, booCop
booCop = 1
FOR I = 1 TO LEN(strInput)
IF MID$(strInput, I, 1) = "(" THEN booCop = 0
IF booCop = 1 THEN
Temp = Temp + MID$(strInput, I, 1)
ELSE
IF MID$(strInput, I, 1) = ")" THEN booCop = 1
END IF
NEXT
EPURE$ = Temp
END FUNCTION
Gloops
Le #23621411
Gloops a écrit, le 01/08/2011 15:42 :
seb leg a écrit, le 01/08/2011 13:24 :
BOnjour,

j'ai une chaine de caractere du type
3a5b(10)1g2p5p(10)5p1d2t(09)1g4p

et je cherche une fonction ou une formule qui ne prednais pas les
lettre ni les nombre entre parenthèse ce qui me donnerais
3512551214.

merci de votre aide.



Bonjour,

Voici une fonction qui peut valoir une adaptation à VBA (je me
débrouille avec ce que j'ai sous la main pour les tests) :

Cette fonction parcourt la chaîne de caractères reçue en argument , et
lorsqu'elle rencontre une parenthèse ouverte, elle cesse de prendre e n
compte les caractères en entrée jusqu'à avoir rencontré une par enthèse
fermée.

Je précise qu'avant les parenthèses on peut très bien avoir (ou p as) un
p, un x ou un z, et dans les parenthèses on peut très bien avoir de ux
caractères, ou un seul, ou une tripotée, ou encore aucun, et que ç a ne
dérange pas que les caractères entre parenthèses soient des chiff res.

En adaptation, on verrait bien par exemple la transformation de booCop
en booléen, puisque là nous avons un variant utilisé comme entier . On
peut aussi déclarer la fonction comme String (et enlever le caractè re $
dans le nom de la fonction).

FUNCTION EPURE$ (strInput AS STRING)
DIM Temp AS STRING, booCop
booCop = 1
FOR I = 1 TO LEN(strInput)
IF MID$(strInput, I, 1) = "(" THEN booCop = 0
IF booCop = 1 THEN
Temp = Temp + MID$(strInput, I, 1)
ELSE
IF MID$(strInput, I, 1) = ")" THEN booCop = 1
END IF
NEXT
EPURE$ = Temp
END FUNCTION





Ah oui d'accord, j'ai mal lu. J'ai oublié de retirer les lettres.
Donc il manque quelque part un
If Not IsNumeric(Mid$(strInput, I, 1) Then Next
MichD
Le #23622021
Bonjour,

Utilise une fonction personnalisée dans un module standard.
Dans la cellule de la feuille de calcul, tu inscris : =Extraire_Chiffres(A1)
En supposant que la chaîne de caractères se retrouve en A1

'------------------------------------
Function Extraire_Chiffres(Rg As Range)
Dim T As String, R As String
Dim Ok As Boolean, A As Integer

For A = 1 To Len(Rg)
c = Asc(Mid(Rg.Value, A, 1))
Select Case c
Case 40
Ok = True
Case 41
Ok = False
Case 48 To 58
If Ok = False Then
R = R & Chr(c)
End If
End Select
Next
Extraire_Chiffres = R
End Function
'------------------------------------


MichD
--------------------------------------------
"seb leg" a écrit dans le message de groupe de discussion :


BOnjour,

j'ai une chaine de caractere du type
3a5b(10)1g2p5p(10)5p1d2t(09)1g4p

et je cherche une fonction ou une formule qui ne prednais pas les
lettre ni les nombre entre parenthèse ce qui me donnerais
3512551214.

merci de votre aide.
seb leg
Le #23623161
grand merci pour votre aide.







On 1 août, 18:55, "MichD"
Bonjour,

Utilise une fonction personnalisée dans un module standard.
Dans la cellule de la feuille de calcul, tu inscris : =Extraire_Chiffre s(A1)
En supposant que la chaîne de caractères se retrouve en A1

'------------------------------------
Function Extraire_Chiffres(Rg As Range)
Dim T As String, R As String
Dim Ok As Boolean, A As Integer

For A = 1 To Len(Rg)
    c = Asc(Mid(Rg.Value, A, 1))
    Select Case c
        Case 40
            Ok = True
        Case 41
            Ok = False
        Case 48 To 58
            If Ok = False Then
                R = R & Chr(c)
            End If
    End Select
Next
Extraire_Chiffres = R
End Function
'------------------------------------

MichD
--------------------------------------------
"seb leg"  a écrit dans le message de groupe de discussion :


BOnjour,

j'ai une chaine de caractere du type
3a5b(10)1g2p5p(10)5p1d2t(09)1g4p

et je cherche une fonction ou une formule qui ne prednais pas les
lettre ni les nombre entre parenthèse ce qui me donnerais
3512551214.

merci de votre aide.
Publicité
Poster une réponse
Anonyme