VBA Conserver/ajouter des 0 significatifs

DB88

XLDnaute Nouveau
Bonjour à tous,

Je sèche depuis plusieurs mois sur un petit problème, peut être l'un d'entre vous aura LA solution!

Je réalise une macro qui exporte les données d'un fichier excel dans un nouveau classeur.
Le fichier excel est remplie par un utilisateur et le classeur créé a pour but d'être intégré dans une base de donnée.

Dans ces données, il y a des nombres qui doivent être composé de 14 chiffres. Le problème est que certains utilisateurs ou excel (selon le format des cellules) oublient les "0" significatifs au début des nombres.
Et ces nombres de14 chiffres doivent être au format TEXTE dans le fichier créé.

La seule solution qui fonctionne est de forcer les cellules du fichier source au format texte et vérifier si chacune d'elle comporte bien 14 chiffres, ce qui peut être long et source d'erreur quand on a plusieur centaine de ligne à traiter puis de lancer la macro (et ça ne fonctionne pas à tous les coup).

Je n'ai pas LA solution qui permettrait de tester le nombre de carateres dans la cellule et rajouter suffisament de 0 dans le fichier cible. D'autant plus que des "espace" sont souvent présent à la suite des chiffres quand il manque des "0".

Le problème est simple mais impossible de trouver une solution....


Pour info, j'ai essayé de forcer à un format personnalité les cellules du fichier source en format personnalisé "#00000000000000" mais ça ne concerve pas les 0 apres exportation et me donne des formules du type 3,4435455345E+12,
J'ai essayé de travailler en chaine de caractère mais je n'ai pas trouvé comment coller des 0 au début de la chaine,
J'ai essayé de forcer le format des cellules du fichier créé en "#00000000000000" puis de le remettre en texte,
J'ai fouillé dans un maximum de forum sur internet...

Sans jamais rien trouver! Je tente ma chance sur ce forum qui déjà beaucoup aidé.

Merci à vous! (je pourrai survivre sans solution ;)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : VBA Conserver/ajouter des 0 significatifs

Bonjour DB88 et bienvenu :)

Deux pistes dans le fichier joint. Une par macro, l'autre par formule. Si on avait un fichier exemple, on pourrait être plus précis et efficace.
 

Pièces jointes

  • Zéros v1.xlsm
    17.9 KB · Affichages: 271

klin89

XLDnaute Accro
Re : VBA Conserver/ajouter des 0 significatifs

Bonsoir mapomme, Gareth, DB88
Bonsoir à tous,

Une autre façon de faire :
En m'appuyant sur le fichier de mapomme.
VB:
Sub Reformat1()
Dim xCell As Range, Plage As Range, x As String, z As String, y As Byte
Set Plage = Range("D1:D" & Cells(Rows.Count, "d").End(xlUp).Row)
Plage.NumberFormat = "@"
For Each xCell In Plage
  If Len(xCell.Value) < 14 Then
    x = xCell.Value
    y = 14 - Len(xCell.Value)
    z = Application.WorksheetFunction.Rept("0", y)
    xCell.Value = z & x
  End If
Next xCell
End Sub

Klin89
 
Dernière édition:

Discussions similaires

Réponses
17
Affichages
721

Membres actuellement en ligne

Statistiques des forums

Discussions
312 379
Messages
2 087 763
Membres
103 661
dernier inscrit
fcleves