Extraire des chiffres d'une chaine de caractère à une autre

Résolu/Fermé
Louloude74 Messages postés 62 Date d'inscription mercredi 1 août 2018 Statut Membre Dernière intervention 17 avril 2024 - 5 avril 2020 à 10:46
Louloude74 Messages postés 62 Date d'inscription mercredi 1 août 2018 Statut Membre Dernière intervention 17 avril 2024 - 5 avril 2020 à 17:50
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
A voir également:

2 réponses

yg_be Messages postés 22708 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024 1 474
Modifié le 5 avril 2020 à 11:34
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
1
Louloude74 Messages postés 62 Date d'inscription mercredi 1 août 2018 Statut Membre Dernière intervention 17 avril 2024 1
5 avril 2020 à 13:10
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
0
Louloude74 Messages postés 62 Date d'inscription mercredi 1 août 2018 Statut Membre Dernière intervention 17 avril 2024 1
5 avril 2020 à 17:02
Re,

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

Par avance merci. ☺️

Ludwig
0
yg_be Messages postés 22708 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024 1 474 > Louloude74 Messages postés 62 Date d'inscription mercredi 1 août 2018 Statut Membre Dernière intervention 17 avril 2024
5 avril 2020 à 17:40
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
0
Louloude74 Messages postés 62 Date d'inscription mercredi 1 août 2018 Statut Membre Dernière intervention 17 avril 2024 1 > yg_be Messages postés 22708 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024
5 avril 2020 à 17:50
Je suis vraiment impressionné !!!

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

Encore merci. ????

Ludwig
0
Louloude74 Messages postés 62 Date d'inscription mercredi 1 août 2018 Statut Membre Dernière intervention 17 avril 2024 1
5 avril 2020 à 11:46
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
0