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 !

anthooooony

XLDnaute Occasionnel
Bonjour à tous chers downloadiens,


Je cherche un moyen de "vulgairement" de déconcatener les chiffres des lettres

Z2020 doit donner 2020
TOC9210 doit donner 9210


Auriez vous deja eu ce cas de figure?

Je continue à chercher de mon côté

Bien à vous

Anthooooony
 
Re : Dé - concatener

Bonjour,

Il faut que tu considères ta chaine en entrée comme un tableau de caractères.
A partir de là, tu boucles sur chaque élément du tableau, et à chaque fois que tu trouves un chiffre, tu viens l'ajouter à une chaine de récupération.

Une fois ta boucle finie, tu castes en integer/long suivant ton besoin, et tu as ton information numérique.

Code:
    Dim chaineEntree As String
    chaineEntree = "Z2020"
    Dim chaineSortie As String
    chaineSortie = ""
    Dim pcs_str As Integer
    For pcs_str = 1 To Len(chaineEntree)
        If IsNumeric(Mid(chaineEntree, pcs_str, 1)) Then
            chaineSortie = chaineSortie & Mid(chaineEntree, pcs_str, 1)
        End If
    Next pcs_str
    
    MsgBox chaineSortie

EDIT: pas sûr qu'il soit obligé de passer par VBA, mais je ne sais pas le faire en formule. Tu peux récupérer ce code dans une fonction, et après, tu appelles ta fonction depuis Excel.

Cordialement,
Orodreth
 
Dernière édition:
Re : Dé - concatener

Bonjour le Forum,
Bonjour anthooooony,

testes cette formule pour une valeur située en A2

Code:
=STXT(A2;EQUIV(VRAI;ESTNUM(STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)));1)*1);0);NB(STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)));1)*1))

formule matricielle, il faut valider la formule en appuyant simultanément sur CTRL, Maj (au dessus de CTRL) et entrée, si ta formule est bien validée excel va mettre de lui même le signe { devant le égal et le signe } en fin de formule.

Cordialement

EDIT : Oup's pas rafraichi et en plus pas rapide du tout, enfin Bonjour JHA et orodreth désolé pour la collision
 
Dernière édition:
Re : Dé - concatener

Bonsour® anthooooony
autres façons avec fonctions personnalisées à integrer dans un module standard :
Code vba:
Function NumSeul(target)
Dim Mask As Object
Set Mask = CreateObject("vbscript.RegExp")
Mask.Pattern = "[^0-9]"
Mask.Global = True
NumSeul = Mask.Replace(target, "")
End Function




Code vba:
Function NumOnly(target)
Dim temp As String, idx As Integer
temp = ""
For idx = 1 To Len(target)
temp = temp & IIf(Mid(target, idx, 1) Like "[0-9]", Mid(target, idx, 1), "")
Next
NumOnly = temp
End Function
 
Re : Dé - concatener

Bonsour®
autres variations :
Code Vba:
Function SaufNum(target)
'-----uniquement les chiffres
Dim Mask As Object
Set Mask = CreateObject("vbscript.RegExp")
Mask.Pattern = "[0-9]"
Mask.Global = True
SaufNum = Mask.Replace(target, "")
End Function




Code vba:
Function MasqNum(target)
' masque les chiffres
Dim Mask As Object
Set Mask = CreateObject("vbscript.RegExp")
Mask.Pattern = "[0-9]"
Mask.Global = True
MasqNum = Mask.Replace(target, "_")
End Function




Code vba:
Function MasqAlpha(target)
'masque les non-numeriques
Dim Mask As Object
Set Mask = CreateObject("vbscript.RegExp")
Mask.Pattern = "[^0-9]"
Mask.Global = True
MasqAlpha = Mask.Replace(target, "_")
End Function
 
- 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

Discussions similaires

B
Réponses
4
Affichages
3 K
Bartman
B
L
Réponses
8
Affichages
1 K
louloutenc
L
S
Réponses
9
Affichages
2 K
S
Z
Réponses
4
Affichages
1 K
Zlopeck
Z
C
Réponses
1
Affichages
1 K
AeroPlanneur
A
P
  • Question Question
Réponses
5
Affichages
987
P
Retour