Filtre + Pivot + Extraction caractère power query

Bonjour,

Merci de votre information j'ai pris note

Ici il y à toujours une solution avec JFL et les autres

Je mettrais plus les même postes dans ce cas, merci encore et je vais relire la charte

Cordialement

re à tous,

Bonjour Dan

La petite modification qui va bien pour corriger mon erreur :

Option Explicit
Sub testSplit()
    Dim r As Range, x, posEnt As Byte, posDec As Byte
    'Dim partEnt As Long, partDec As Long
    Dim partEnt As String, partDec As String '<----- le changemment ici
    With Sheets("TEST")
        .Columns(2).NumberFormatLocal = "# ##0,00"
        For Each r In .Range("a1", .Range("a" & Rows.Count).End(xlUp))
            x = Split(r.Value, ",")
            posEnt = InStr(1, x(2), " ")
            partEnt = Mid(x(2), posEnt + 1)
            posDec = InStr(1, x(3), " ")
            partDec = Left(x(3), posDec - 1)
            r(, 2).Value = CDec(partEnt & "," & partDec)
        Next
    End With
End Sub

Dan a dit :

A moins de me tromper, j'ai plutôt compris que c'était le nombre d'espaces trouvés après la dernière lettre du texte.

Je n'ai pas l'impression que ce soit toujours le cas Dan

Même si le sujet est clôturé, j'aimerais bien que maverick nous apporte son éclairage sur ce point.

klin89

Bonjour,

Oui c'est bien le nombre d'espace aprés la dernière lettre du texte et il y a 6 espace avant mon chiffre

Le problème c'est qu'il y a des chiffres qui ont un espace exemple première ligne 11 030 alors qu'en faite c'est 11030 c'est pour cela que ça change 6 ou 7 espaces.

Cordialement,

Re le forum,

Je suis passé par un regex, cela devrait répondre à toutes les interrogations.

En résumé, on recherche dans la chaîne la 1er nombre qui répond à ce format : # ##0,00

Option Explicit
Sub test()
    Dim r As Range, rng As Range, matches As Object
    Application.ScreenUpdating = False
    With Sheets("TEST")
        .Columns(2).NumberFormatLocal = "# ##0,00"
        Set rng = .Range("a1", .Range("a" & Rows.Count).End(xlUp))
        With CreateObject("VBScript.RegExp")
            .Global = True
            ' Définition du motif regex pour trouver un nombre au format "# ##0,00"
            .Pattern = "(?:^|\s)(\d{1,3}(?: \d{3})*,\d{2})(?:\s|$)"
            For Each r In rng
            ' Vérifie si la cellule contient un nombre qui correspond au motif regex
                If .test(r.Value) Then
                ' Si une correspondance est trouvée, extrait le premier nombre correspondant
                    Set matches = .Execute(r.Value)
                    ' Convertit la première correspondance en un nombre décimal (CDec)
                    ' et place le résultat dans la colonne B
                    r(, 2).Value = CDec(matches(0))
                Else
                    r(, 2).Value = ""
                End If
            Next
        End With
    End With
    Application.ScreenUpdating = True
End Sub

klin89

Rechercher des sujets similaires à "filtre pivot extraction caractere power query"