Extraire des chiffres d'une chaine de caractère à une autre [Résolu]

Signaler
Messages postés
48
Date d'inscription
mercredi 1 août 2018
Statut
Membre
Dernière intervention
15 septembre 2020
-
Messages postés
48
Date d'inscription
mercredi 1 août 2018
Statut
Membre
Dernière intervention
15 septembre 2020
-
Bonjour à tous,

J'espère que vous allez tous bien en cette période de confinement. Pour ma part je cherche de quoi m'occuper et très vite je me retrouve bloqué. Je me suis lancer dans une "aide sudoku".
Je cherche en vain une solution à ces deux problématiques : comment extraire les chiffres en double dans une chaine de caractère puis comment les extraire dans une autre chaine de caractère. Ex :

A1 : 6767
A2 : 67 (sans doublon)
B1 : 136 (extraire en B1 le ou les chiffres en A2)
C1 : 13 (ce que je souhaite obtenir)

ou

A1 : 69693737
A2 : 6937 (sans doublon)
B1 : 1639 (extraire en B1 le ou les chiffres en A2)
C1 : 1 (ce que je souhaite obtenir)

En A et B la longueur de la chaine est variable mais que des chiffres.

Je vous souhaite une très bonne journée et par avance merci.

Ludwig

Configuration: Macintosh / Safari 13.1

2 réponses

Messages postés
12832
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 octobre 2020
716
bonjour, moi je réaliserais cela en écrivant deux fonctions en VBA.
Option Explicit

Function sansdoublon(entree As String) As String
Dim car As String, i As Integer
For i = 1 To Len(entree)
    car = Mid(entree, i, 1)
    If InStr(sansdoublon, car) = 0 Then
        sansdoublon = sansdoublon + car
    End If
Next i
End Function
Function extrait(entree As String, filtre As String) As String
Dim car As String, i As Integer
For i = 1 To Len(entree)
    car = Mid(entree, i, 1)
    If InStr(filtre, car) = 0 Then
        extrait = extrait + car
    End If
Next i
End Function

en B1:
=sansdoublon(A1)

en C1:
=extrait(A2;B1)

il est possible de faire plus simple su tu n'as pas besoin de la valeur en B1
Messages postés
48
Date d'inscription
mercredi 1 août 2018
Statut
Membre
Dernière intervention
15 septembre 2020

Re,

C'est dingue ça à l'air si simple. Merci beaucoup !

La fonction fonctionne à merveille et fait exactement ce que je souhaitais. En ce qui concerne la fonction extrait je dois la tester.
Encore merci !

Bon dimanche.

Ludwig
Messages postés
48
Date d'inscription
mercredi 1 août 2018
Statut
Membre
Dernière intervention
15 septembre 2020

Re,

Question bonus : peut-on avec la fonction sans doublon avoir le résultat dans l'ordre croissant ?

Par avance merci. ☺️

Ludwig
Messages postés
12832
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 octobre 2020
716 >
Messages postés
48
Date d'inscription
mercredi 1 août 2018
Statut
Membre
Dernière intervention
15 septembre 2020

réponse bonus:
Function sansdoublon(entree As String) As String
Dim car As String, i As Integer, cars() As String, ncars As Integer, j As Integer, tmp As String
For i = 1 To Len(entree)
    car = Mid(entree, i, 1)
    If InStr(tmp, car) = 0 Then
        ncars = ncars + 1
        ReDim Preserve cars(1 To ncars)
        cars(ncars) = car
        tmp = tmp + car
    End If
Next i
For i = 1 To ncars
    For j = i + 1 To ncars
        If cars(i) > cars(j) Then
            tmp = cars(i)
            cars(i) = cars(j)
            cars(j) = tmp
        End If
    Next j
Next i
For i = 1 To ncars
    sansdoublon = sansdoublon + cars(i)
Next i
End Function
Messages postés
48
Date d'inscription
mercredi 1 août 2018
Statut
Membre
Dernière intervention
15 septembre 2020
>
Messages postés
12832
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 octobre 2020

Je suis vraiment impressionné !!!

Ça marche terriblement bien. C'est très gentil à toi. Merci.

Encore merci. ????

Ludwig
Messages postés
48
Date d'inscription
mercredi 1 août 2018
Statut
Membre
Dernière intervention
15 septembre 2020

Bonjour,

J'avoue qu'une fonction serait super mais mes connaissances ne me permette pas d'en réaliser.

Par contre j'ai réussi à obtenir un résultat qui me convient pour la deuxième partie de ma problématique avec entre autre " ESTERREUR " et " TROUVE ".

Me reste l'histoire des chiffres en doublon.

Encore merci.

Ludwig