Uniformisation numéro TVA

Bonjour,

je souhaiterai uniformiser des infos de numéro de TVA afin de leur faire prendre le même format que celui de la BCE: 0XXX.XXX.XXX

Dans l'extraction de ma base de données, les num de TVA se présentent de diverses manières. je début et n'arrive pas à écrire la macro qui me réglerait ce soucis. est-ce que quelqu'un saurait m'aider svp?

be0123456789
BE0123456789
BE0123.456.789
BE0 12345789
BTW0123456789
0123456789

0123.456.789

Gratitude à jamais :)

Bonjour,

Voici une proposition avec une fonction personnalisée :

Function FormatTVA(chaine$) As String
FormatTVA = Right(Format(NVal(chaine) + 10 ^ 10, "#\.###\.##0"), 12)
End Function

private Function NVal(chaine$) As String
For i = 1 To Len(chaine)
    If Not Mid(chaine, i, 1) Like "#" Then Mid(chaine, i, 1) = " "
Next i
NVal = Replace(chaine, " ", "")
End Function

Elle est à utiliser ainsi sur feuille :

=FormatTVA(A1)

si le numéro de TVA est en A1.

Cdlt,

Merci beaucoup.. Toutes mes excuses pour cette question mais je débute et n'arrive pas encore à l'adapter à mon cas:

Function FormatTVA(B2) As String
    FormatTVA = Right(Format(NVal(chaine) + 10 ^ 10, "#\.###\.##0"), 12)
End Function

Private Function NVal(B2) As String
For i = 2 To 2143
    If Not Mid(chaine, i, 2) Like "#" Then Mid(chaine, i, 2) = " "
Next i
NVal = Replace(chaine, " ", "")
End Function

suis-je sur le bon chemin?

Pas de problème ! Non, ce n'est pas comme ça qu'il faut utiliser la fonction puisqu'elle retourne une valeur en fonction de l'argument qui lui est rentré. Le code de la fonction est donc une sorte de modèle générique qui deviendra effectif en fonction de son argument. Elle est à utiliser au sein de votre boucle (ou comme une formule sur excel directement).

Exemple avec un code sorti de mon imagination (plus ou moins) :

Sub test()
with activesheet
    dl = .Cells(.rows.count, "B").end(xlup).row
    For i = 2 To dl '2143
        .Cells(i, "C").value = FormatTVA(.cells(i, "B").value)
    Next i
end with
End sub

Function FormatTVA(chaine$) As String
FormatTVA = Right(Format(NVal(chaine) + 10 ^ 10, "#\.###\.##0"), 12)
End Function

private Function NVal(chaine$) As String
For i = 1 To Len(chaine)
    If Not Mid(chaine, i, 1) Like "#" Then Mid(chaine, i, 1) = " "
Next i
NVal = Replace(chaine, " ", "")
End Function

Pour l'instant, il vaut mieux avoir les résultats dans une autre colonne, c'est plus sûr.

Cdlt,

Magnifique!!! ca fonctionne super bien!!

je rencontre toutefois une erreur après quelques lignes:

image

sur cette ligne:

FormatTVA = Right(Format(NVal(chaine) + 10 ^ 10, "#\.###\.##0"), 12)

est-ce possiblement dû à une cellule vide?

Super !

C'est bien possible oui.

Voici une adaptation de la macro (avec une condition en plus) :

Sub test()
with activesheet
    dl = .Cells(.rows.count, "B").end(xlup).row
    For i = 2 To dl '2143
        if .cells(i, "B").value like "*#*#*#*#*#*#*" then .Cells(i, "C").value = FormatTVA(.cells(i, "B").value)
    Next i
end with
End sub

Si la cellule contient au moins 6 chiffres, on y va sinon, on ignore.

Les # représentent donc les chiffres. J'ai mis 6 mais j'imagine que c'est au moins 8...

Cdlt,

Rechercher des sujets similaires à "uniformisation numero tva"