supprimer les 0 de gauche

séverine45

XLDnaute Nouveau
peut-on supprimer les zéros de gauche ?

J'ai une liste de 40 000 n° de factures qui sont
seulement du texte
seulement du numerique
ou bien les deux à la fois.

ex: j'ai 00000045 et je voudrais 45.

Je n'ai pas le même nombre nombre de zéros à gauche sur chaque ligne.
(ex: 00045 ; 000000202; 000000000ML065)
 

PascalXLD

XLDnaute Barbatruc
Modérateur
BONJOUR

Ecoute Séverine il ne sert à rien de poser ta question 3 fois avec des pseudos différents si tu ne tiens pas compte des remarque faites Lien supprimé et Lien supprimé

Alors je te le répète oui c'est possible (je vais même te dire que c'est prêt) mais il faut tenir compte des remarques faites pour faire ta demande

Bonne journée

Message édité par: Pascal76, à: 17/10/2005 11:45
 

BenHarber

XLDnaute Occasionnel
J'ai régulièrement à traiter de tels fichiers, aussi me suis-je fais une petite macro (insérée dans mon classeur perso. xls) qui me convertit les données 'textes' en données numériques.
La voici :

Sub ConversNum()
Application.ScreenUpdating = False
Set maplage = Selection
derCell = maplage.Cells.Count
For i = 1 To derCell
maplage.Cells(i).Select
maValue = ActiveCell
If IsNumeric(maValue) = False Then GoTo saut Else maValue = CDbl(ActiveCell)
ActiveCell = maValue
saut:
Next i
maplage.Cells(1).Select
Application.ScreenUpdating = True
End Sub

Ainsi, tu sélectionnes la plage de cellule à convertir, et tu lance cette macro.
Il y a peut-être mieux, mais ça fonctionne !

Tchaôôô

BenHarber
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re

BenHarber juste 2 petites choses

1 - je pense que ta macro ne répondra pas aux besoins de séverine car il s'agit par moment de texte (exemple : 000000000ML065)

2 - ce forum en est arrivé à un bon niveau de reconnaissance mondiale par le respect de certaines 'règles' dont celle de'application de la charte que nous demandons à Séverine de respecter en particulier l'article 1 sur la politesse où on ne rentre pas chez les gens sans dire bonjour merci etc ni répéter les posts sur le même sujet

M'enfin je vais pas raler je ne te connais pas mais cela évitera d'avoir l'impression de faire pipi dans un violon
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bien je note séverine que sur un fil annexe tu as bien noté
BONJOUR,

Eh bien je vois qu'il n'y avait pas que moi avec ce problème de zéros.
Merci à Pascal76 de m'avoir renvoyé sur la charte (que je n'arrivais pas à ouvrir vendredi) mais je n'ai pas poser la meme question avec pluseurs pseudo ! eh bien non ce n'étais pas moi 'b.sourbe' !!


MERCI
BONNE SEMAINE A TOUS

Alors voici un code qui devrait te faire ce que tu demandes
Il faut juste sélectionner tes cellules et lancer la macro

Option Explicit

Sub SupprimeZero()

Dim c As Range, x As Byte

Application.ScreenUpdating = False

For Each c In Selection
For x = 1 To Len(c)
If Mid(c, x, 1) <> 0 Then
c = Right(c, Len(c) - x + 1)
Exit For
End If
Next x
Next c

Application.ScreenUpdating = True

End Sub
 

Poupi

XLDnaute Nouveau
Bien je note séverine que sur un fil annexe tu as bien noté


Alors voici un code qui devrait te faire ce que tu demandes
Il faut juste sélectionner tes cellules et lancer la macro

Option Explicit

Sub SupprimeZero()

Dim c As Range, x As Byte

Application.ScreenUpdating = False

For Each c In Selection
For x = 1 To Len(c)
If Mid(c, x, 1) <> 0 Then
c = Right(c, Len(c) - x + 1)
Exit For
End If
Next x
Next c

Application.ScreenUpdating = True

End Sub
ça marche parfait ! merci l'expert
 

Poupi

XLDnaute Nouveau
Bien je note séverine que sur un fil annexe tu as bien noté


Alors voici un code qui devrait te faire ce que tu demandes
Il faut juste sélectionner tes cellules et lancer la macro

Option Explicit

Sub SupprimeZero()

Dim c As Range, x As Byte

Application.ScreenUpdating = False

For Each c In Selection
For x = 1 To Len(c)
If Mid(c, x, 1) <> 0 Then
c = Right(c, Len(c) - x + 1)
Exit For
End If
Next x
Next c

Application.ScreenUpdating = True

End Sub
PAscal, j'ai utilisé ton code pour supprimer les 00 à gauche, maintenant je cherche à supprimer les lettres à droite, ex. 00001780BRUXELLES; le résultat final que j'attends est 1780. évidemment le nombre de zéro à gauche et lettres à droite sont aléatoirs. Avec ton code j'ai réussi à supprimer les 0 à gauche, est-ce que tu peux écrire le même mais pour supprimer les lettres/espace à droite ex. "687500NEWYORK USA" = 687500

MErci beaucoup !
 

Fred0o

XLDnaute Barbatruc
Bonjour Poupi, PascalXLD

Voici une modification de la macro qui pourrait convenir
VB:
Sub SupprimeZero()
    Dim c As Range, x As Byte
        Application.ScreenUpdating = False
        For Each c In Selection
            For x = 1 To Len(c)
                If Mid(c, x, 1) <> 0 Then
                    c = Right(c, Len(c) - x + 1)
                    Exit For
                End If
            Next x
            For x = 1 To Len(c)
                If Not IsNumeric(Mid(c, x, 1)) Then
                    c = Left(c, x - 1)
                    Exit For
                End If
            Next x
        Next c
    Application.ScreenUpdating = True
End Sub
 

Poupi

XLDnaute Nouveau
Bonjour Poupi, PascalXLD

Voici une modification de la macro qui pourrait convenir
VB:
Sub SupprimeZero()
    Dim c As Range, x As Byte
        Application.ScreenUpdating = False
        For Each c In Selection
            For x = 1 To Len(c)
                If Mid(c, x, 1) <> 0 Then
                    c = Right(c, Len(c) - x + 1)
                    Exit For
                End If
            Next x
            For x = 1 To Len(c)
                If Not IsNumeric(Mid(c, x, 1)) Then
                    c = Left(c, x - 1)
                    Exit For
                End If
            Next x
        Next c
    Application.ScreenUpdating = True
End Sub
Magnifique, ça marche parfaitement Merci Beaucoup Fred0o
 

Poupi

XLDnaute Nouveau
Fred0o, je vois que tu maîtrises le sujet, si je peux te poser un autre challenge ? :

34 LE DUAN BLVD,FL. 9,ROOM 901C => LEDUANBLVDFLROOMC
UL. TOKARZEWSKIEGO 7-12 => ULTOKARZEWSKIEGO

Donc supprimer les nombres, les espaces et caractères autre que lettre.

Merci d'avance !
Pouya
Et pour que tu comprennes la question :) je fais tout ça pour trouver la meilleure technique de matching sur des milliers compagnies,avec comme éléments de comparaison nom, adresse et code postal. comme ce ne sont pas des data structurés j'essaie de les nettoyer au max. D'ailleurs si vous avez des astuces pour ce genre de Matching process vos conseils sont les bienvenus. ex. D'outremont / Outremont , je voudrai l'accepter, Rue Jean Dupont / Rue J. Dupont je voudrai accepter etc.
Si quelqu'un a de l'expérience dans ce type de data matching, je serai ravi de les apprendre :)
 

dysorthographie

XLDnaute Impliqué
Bonjour,
Dommage que la première question, ne parle pas de ça,car on ne sait jamais, les expressions régulières auraient peut-être fait l'affaire au lieu de partir dans un raisonnement caduc 16 ans plus tard !

Du reste Poupi ta question n'a pas grand chose avec le fils de 2005 et méritait d'être un nouvelle question à ton initiative !
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour à tous,

Pour répondre au post #11 qui n'a rien d'embêtant :
VB:
Sub Epure()
Dim c As Range, x$, i%
Application.ScreenUpdating = False
For Each c In Selection
    x = c
    For i = Len(x) To 1 Step -1
        If Not UCase(Mid(x, i, 1)) Like "[A-Z]" Then x = Left(x, i - 1) & Mid(x, i + 1)
    Next i
    c = x
Next c
End Sub
A+
 

Discussions similaires

Statistiques des forums

Discussions
300 793
Messages
1 987 236
Membres
209 746
dernier inscrit
mb1982