Microsoft 365 Données à mettre en page

Shampignac

XLDnaute Nouveau
Bonjour,

Ce petit message car je ne suis pas du tout un expert en Excel et je me trouve devant un cas qui pourrait me faire gagner plusieurs heures et m'éviter la perte des derniers cheveux sur ma tête.

Je me retrouve avec un listing client où des numéro de TVA sont notés , ceux-ci sont écrit un peu n'importe comment et j'aimerais pouvoir tous les mettre en forme pour qu'ils soient sous ce format " BE 0000 000 000 " , il se trouve qu'il y'a également des numéro de pays étranger , est ce qu'il y'a une parade pour que ceux-ci aient également une mise en forme correct ?

Je vous en remercie d'avance

Bonne journée
 

soan

XLDnaute Barbatruc
Inactif
Bonsoir Shampignac, djidji,

bienvenue sur le site XLD ! 😊

ton fichier en retour ; fais Ctrl e ➯ travail effectué ! :)

VB:
Option Explicit

Sub Essai()
  Dim s1$, s2$, c1 As String * 1, c2 As Byte, dlg&, lig&, i%
  dlg = Cells(Rows.Count, 3).End(3).Row: Application.ScreenUpdating = 0
  For lig = 2 To dlg
    s1 = Cells(lig, 3): s2 = ""
    For i = 1 To Len(s1)
      c1 = Mid$(s1, i, 1): c2 = Asc(c1)
      If c2 >= 48 And c2 <= 57 Then s2 = s2 & c1
    Next i
    s2 = "BE " & Left$(s2, 4) & " " & Mid$(s2, 5, 3) & " " & Mid$(s2, 8, 3)
    Cells(lig, 3) = s2
  Next lig
End Sub

si besoin, tu peux demander une adaptation.
à te lire pour avoir ton avis.

soan
 

Pièces jointes

  • Classeur1.xlsm
    16.3 KB · Affichages: 1
Dernière édition:

Deadpool_CC

XLDnaute Accro
Exemple pas très parlant car les N° de TVA intracommunautaire sont normés entre 8 et 12 caractères précédés du code du pays (2 Car.)

Le plus simple avec des formules .

En D2 : commence par sortir le texte sans espace =SUBSTITUE($C2;" ";"")
En E2 : met en forme code pays et 2 chiffres puis N groupes de 3 chiffres ... le dernier groupe contenant entre 1 et 3 chiffres selon les pays
=MAJUSCULE( GAUCHE(D2;2) & STXT(D2;3;2) & " " & STXT(D2;5;3) & " " & STXT(D2;8;3) & " " & STXT(D2;11;3) & " " & STXT(D2;14;3) )

Mais après tu met en forme comme tu veux ...
ps: dans les système bancaires (tout est attaché, aucun espace ... lol mais moins lisible
 
Dernière édition:

Deadpool_CC

XLDnaute Accro
et pour info :
CountryVAT number format
AustriaU99999999
Belgium0999999999
Bulgaria999999999 or 9999999999
Cyprus99999999L
Czech Republic99999999, 999999999, or 9999999999
Germany999999999
Denmark99999999
Estonia999999999
Greece999999999
SpainX9999999X
Finland99999999
FranceXX999999999
United Kingdom999999999, 999999999999, or XX999
Hungary99999999
Ireland9S99999L
Italy99999999999
Lithuania999999999 or 99999999999
Luxembourg99999999
Latvia99999999999
Malta99999999
Netherlands999999999B99
Poland999999999
Portugal999999999
Romania99, 999, 9999, 99999, 999999, 9999999, 99999999, 999999999, or 9999999999
Sweden99999999999
Slovenia99999999
Slovakia999999999

Et un regex simple de vérification des TVA Euro:
^((AT)?U[0-9]{8}|(BE)?0[0-9]{9}|(BG)?[0-9]{9,10}|(CY)?[0-9]{8}L|↵
(CZ)?[0-9]{8,10}|(DE)?[0-9]{9}|(DK)?[0-9]{8}|(EE)?[0-9]{9}|↵
(EL|GR)?[0-9]{9}|(ES)?[0-9A-Z][0-9]{7}[0-9A-Z]|(FI)?[0-9]{8}|↵
(FR)?[0-9A-Z]{2}[0-9]{9}|(GB)?([0-9]{9}([0-9]{3})?|[A-Z]{2}[0-9]{3})|↵
(HU)?[0-9]{8}|(IE)?[0-9]S[0-9]{5}L|(IT)?[0-9]{11}|↵
(LT)?([0-9]{9}|[0-9]{12})|(LU)?[0-9]{8}|(LV)?[0-9]{11}|(MT)?[0-9]{8}|↵
(NL)?[0-9]{9}B[0-9]{2}|(PL)?[0-9]{10}|(PT)?[0-9]{9}|(RO)?[0-9]{2,10}|↵
(SE)?[0-9]{12}|(SI)?[0-9]{8}|(SK)?[0-9]{10})$

De rien ... avec plaisir :)
 

Discussions similaires