XL 2013 Code postal avec 0

Car75

XLDnaute Nouveau
Bonjour,

Dans une extraction de plus 50 000 lignes qui m'a été fournie, tous les codes postaux qui commencent par le 0 ont été enregistrés sans le 0.

1/Afin de pouvoir analyser mes données géographiques, j'ai besoin de rétablir ces codes postaux composés de 4 chiffres au lieu de 5 (avec le 0 devant). Quelqu'un de futé aurait-il une formule magique ?

2/Comment permettre de ne conserver que les deux premiers chiffres du code postal pour faire une analyse par département ?

Merci d'avance...
 

Efgé

XLDnaute Barbatruc
Re : Code postal avec 0

Bonjour Car75

Avec le code postal en A1, mettre en B1
Pour le format sur 5 chiffres: =TEXTE(A1;"00000")
Pour les deux premiers chiffres (dont 1 qui peut ne pas exister) : =GAUCHE(TEXTE(A1;"00000");2)
Cordialement
 

VIARD

XLDnaute Impliqué
Re : Code postal avec 0

Bonjour Car75, Efgé et à tous

Ou bien par VBA

Code:
Option Explicit
'============================================
Sub MiseEnForme()
Dim Nb&, i&, Col%

Sheets("Feuil1").Activate
Col=1
'----- mise en forme de code postal de 1(Ain) à 9(Ariège) ----
Nb = Sheets("Feuil1").Cells(65536, Col).End(xlUp).Row
    For i = 3 To Nb
        Cells(i, Col).NumberFormat = "00000"
    Next i

End Sub
'=============================================


A+ Jean-Paul
 

Dranreb

XLDnaute Barbatruc
Re : Code postal avec 0

Bonjour.
VIARD, ça ne servirait à rien en ce sens que ça ne changerait rien aux valeurs de cellules. Ce seraient toujours des nombre binaires en virgule flottante double précision. Il faudrait au contraire y mettre un format de cellule texte et transformer ensuite les valeurs en texte avec la fonction Format.
Maintenant si le demandeur a juste besoin des numéros de département il peut aussi y faire des divisions entières par 1000 (opérateur \)
 

VIARD

XLDnaute Impliqué
Re : Code postal avec 0

Bonjour Dranreb

Effectivement, ceci n'échappe pas à un œil exercé, voici le module corrigé.
Et merci pour l'observation, pour ma part j'étais déjà en mode texte.

Code:
Option Explicit
'============================================
Sub MiseEnForme()
Dim Nb&, i&, Col%

Sheets("Feuil1").Activate
Col = 1
'----- mise en forme de code postal de 1(Ain) à 9(Ariège) ----
Nb = Sheets("Feuil1").Cells(65536, Col).End(xlUp).Row
    For i = 1 To Nb
        Cells(i, Col).NumberFormat = "@"
        Cells(i, Col).NumberFormat = "00000"
    Next i
'MsgBox Nb
End Sub
'=============================================

Salutation

Jean-Paul
 

Efgé

XLDnaute Barbatruc
Re : Code postal avec 0

Re car75, Bonjour Dranreb, Bonjour VIARD

Entièrement d'accord avec Dranreb
Un dessin / classeur vaut mieux... :D

VIARD, regarde le classeur. Ce qui est affiché n'est pas forcément la vérité du contenu....

Cordialement
 

Pièces jointes

  • Formats_cellules_trompeurs.xlsx
    8.4 KB · Affichages: 34

Papou-net

XLDnaute Barbatruc
Re : Code postal avec 0

Bonjour à Tous,

Si je puis me permettre,

On peut modifier le format d'une plage de cellules sans passer par une boucle:

Code:
Sub MiseEnForme()
Dim Col%

Col = 1
'----- mise en forme de code postal de 1(Ain) à 9(Ariège) ----
Sheets("Feuil1").Columns(1).SpecialCells(xlCellTypeConstants).NumberFormat = "00000"
End Sub
Autre avantage (mais en est-ce un?): seules les cellules renseignées seront formatées. En tout cas, ça devrait être plus rapide que la boucle.

Cordialement.
 

VIARD

XLDnaute Impliqué
Re : Code postal avec 0

Bonjour Car75, Dranreb, Efgé, Papou-net et à tous

Tout ça c'est bien beau, du coup ça donne du grain à moudre.
J'ai prolongé les manips de "Efgé" pour y voir plus clair, fichier joint.
"Papou-net" je vais testé ta solution, tout ceci est positif.

amicalement

Jean-Paul
 

Pièces jointes

  • Formats_cellules_trompeurs(2).xlsx
    9 KB · Affichages: 34

Discussions similaires

Statistiques des forums

Discussions
312 027
Messages
2 084 767
Membres
102 658
dernier inscrit
karima