Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

traitement de chane de caractere

4 réponses
Avatar
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=E8se ce qui me donnerais
3512551214.

merci de votre aide.

4 réponses

Avatar
Gloops
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
Avatar
Gloops
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
Avatar
MichD
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.
Avatar
seb leg
grand merci pour votre aide.







On 1 août, 18:55, "MichD" wrote:
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.