SOLVED

Extraire les données d’une cellules

New Contributor

Bonjour

 je souhaites pouvoir extraire des chiffres et des lettres qui sont regroupées dans une cellule tout en évitant une partie

 ex:

  en A1:   1r 21d (20) 15e dd

il faudrait que je puisse avoir dans les colonnes suivantes :

en B1: 1 En C1: r  en D1: 21  en E1: d  en F1: 15  en G1: e  en H1: d  en I1: d

voila il ne faut pas garder les chiffres entre parenthèses

 j’ai essayé plusieurs trucs mais bon je n ne suis pas assez doué 🥴

 

 merci de votre aide

 Pascal

5 Replies
Best Response confirmed by Surfnature (New Contributor)
Solution

@Surfnature 

Cet article décrit la syntaxe de formule et l’utilisation des fonctions STXT et STXTB dans Microsoft Excel.

STXT, STXTB, fonctions

https://support.microsoft.com/fr-fr/office/stxt-stxtb-fonctions-d5f9e25c-d7d6-472e-b568-4ecb12433028...

 

GAUCHE renvoie le(s) premier(s) caractère(s) d’une chaîne de texte selon le nombre de caractères que vous spécifiez.

GAUCHEB renvoie le(s) premier(s) caractère(s) d’une chaîne de texte selon le nombre d’octets que vous spécifiez.

GAUCHE, GAUCHEB, fonctions

https://support.microsoft.com/fr-fr/office/gauche-gaucheb-fonctions-9203d2d2-7960-479b-84c6-1ea52b99...

 

Veuillez également consulter le fichier Excel inclus avec les exemples

 

Traduit de Google:

Je serais heureux de savoir si je pouvais aider.

 

Nikolino

Je sais que je ne sais rien (Socrate)

 

* Veuillez marquer et voter pour cette réponse si cela vous aide, car elle sera bénéfique pour plus de membres de la communauté qui liront ici.

 

@Surfnature 

Ici une macro.

Sélectionnez les cellules avec les textes avant d'exécuter la macro.

 

Sub SplitData()
    Dim r As Range
    Dim v As String
    Dim a() As String
    Dim i As Long
    Dim s As String
    Dim c As Long
    Dim n As Long
    Dim f As Boolean
    Dim j As Long
    Application.ScreenUpdating = False
    For Each r In Selection
        c = 0
        v = r.Value
        a = Split(v)
        For i = 0 To UBound(a)
            s = a(i)
            If Not s Like "(*)" Then
                n = 0
                f = False
                Do While IsNumeric(Left(s, 1))
                    n = 10 * n + Left(s, 1)
                    s = Mid(s, 2)
                    f = True
                Loop
                If f Then
                    c = c + 1
                    r.Offset(0, c).Value = n
                End If
                For j = 1 To Len(s)
                    c = c + 1
                    r.Offset(0, c).Value = Mid(s, j, 1)
                Next j
            End If
        Next i
    Next r
    Application.ScreenUpdating = True
End Sub

 

S0082.png

@Hans Vogelaar 

Un grand merci, je commence seulement à étudier les macros. Je vais regarder également cette solution.

Encore merci de votre aide

Pascal

@Nikolino 

Merci beaucoup, je vais étudier tout cela, vous me faites gagner un temps précieux

Encore merci 

Pascal

J'étais heureux de pouvoir vous aider.

Je vous en prie.

Je vous souhaite une agréable journée / nuit.