Comment supprimer les 0 inutiles d'une colonne de données de format dif

Bonjour,

Je souhaiterais convertir les données d'une colonne en retirant les 0 inutiles tout en gardant les 0 des unités (quand il y en a) qui peuvent se trouver à des emplacements différents dans la cellule.

ex :

En Colonne A j'ai :

A1=T09B09

A2=K07

A3=T10B20

A4=T10B08

A5=K23

J'aimerais avoir comme résultat dans la colonne B :

B1=T9B9

B2=K7

B3=T10B20

B4=T10B8

B5=K23

Quelqu'un aurait-il une formule pour ce casse-tête ?

Ou y a-t-il un moyen de détacher chaque caractère de la cellule pour les mettre chacun dans une nouvelle colonne pour ensuite virer les 0 qui ne m’intéresse pas puis de rassembler le tout ?

Bonjour,

Un test si vous avez exactement ce format de données : 1lettre/2chiffres/1lettre/2chiffres ou 1lettre/2chiffres :

=GAUCHE(A1;1)&CNUM(STXT(A1;2;2))&STXT(A1;4;1)&CNUM(DROITE(A1;2))

Cdlt,

Merci Ergotamine, mais cela ne fonctionne pas pour toutes les cellules.

J'obtiens comme résultat :

T9B9
K77
T10B20
T10B8
K2323

Bonjour,

Merci de fournir un fichier avec un jeu d'exemples représentatif. Avec le jeu de données fourni cette formule fonctionne.

Cdlt,

Bonjour okidoc, le forum,

Salut Ergotamine !

Un autre essai : si tes données commencent en A1, en B1 :

=SUBSTITUE(A1;0;"")

A tirer vers le bas.

[EDIT] Oups ! j'ai répondu trop vite...désolé,

retirant les 0 inutiles tout en gardant les 0 des unités

Cordialement,

Bonjour,

Ou alors, en attendant de trouver plus simple :

=si(nbcar(a1)>3;GAUCHE(A1;1)&texte(CNUM(STXT(A1;2;2));"0")&STXT(A1;4;1)&texte(CNUM(DROITE(A1;2));"0");GAUCHE(A1;1)&texte(CNUM(STXT(A1;2;2));"0"))
Non testé. 

Bonjour,

Un essai avec une fonction VBA personnalisée :

Function ReformaterRef(ByVal Ref As String) As String

Dim c As Integer, Nombre As String, Res As String

Nombre = "0": Res = ""
For c = 1 To Len(Ref)
    If Mid(Ref, c, 1) Like "#" Then
        Nombre = Nombre & Mid(Ref, c, 1)
    Else
        If Not Nombre = "0" Then
            Res = Res & CInt(Nombre) & Mid(Ref, c, 1): Nombre = "0"
        Else
            Res = Res & Mid(Ref, c, 1)
        End If
    End If
    If c = Len(Ref) And Not Nombre = "0" Then Res = Res & CInt(Nombre)
Next c
ReformaterRef = Res

End Function

A utiliser ensuite comme une fonction classique :

=ReformaterRef(A1)

PS : le classeur est à enregistrer au format .xlsm, le code est à placer dans un module standard de l'éditeur VBA.

Bonjour à tous,

JoyeuxNoel, j'ai testé ta formule qui fonctionne avec les données que j'ai indiquée, mais j'ai d'autres données qui ne passent pas comme "AM16" par exemple.

Mais en ajoutant une condition, j'ai réussi à obtenir ce que je voulais.

J'ai testé aussi la solution de Pedro22 qui fonctionne parfaitement avec toutes mes données.

Je vais donc garder sa solution.

Merci à tous les 2.

Re,

JoyeuxNoel, j'ai testé ta formule qui fonctionne avec les données que j'ai indiquée, mais j'ai d'autres données qui ne passent pas comme "AM16" par exemple.

Ouais, c'est dingue comme ça peut fonctionner avec ce qu'on indique et pas avec ce qu'on n'indique pas !

Bonjour @ tous,

en B1 :

=GAUCHE(A1;1)&--STXT(A1;2;2)&SIERREUR(STXT(A1;4;1)&--STXT(A1;5;2);"")

@ tirer vers le bas

Cordialement

Bonjour tout le monde : une variante personnalisée s'il n'y a pas une erreur en A1 (T9B9 au lieu de T09B9).

Option Explicit

Function PURGE(mot As String) As String
    Application.Volatile

    PURGE = mot
    If Trim(mot) <> "" Then
        If Mid(mot, Len(mot) - 1, 1) = "0" Then
            PURGE = Left(mot, Len(mot) - 2) & Right(mot, 1)
        End If
    End If
End Function
0purge.xlsm (15.90 Ko)

Bonjour,

Merci à Tous, J'ai regroupé dans ce fichier Excel toutes vos solutions pour les tester.

Seule la fonction VBA de Pedro22 fonctionne parfaitement.

Désolé JoyeuxNoel, je suis sûr que tu m'aurais trouvé la bonne formule si j'avais mentionné tous les cas possible dans mes données.

Bonsoir,

@Rachid : jolie évolution de ce que j'avais proposé. J'aurais dû penser au SIERREUR, c'est vrai que c'est plus logique et bref ici. Merci pour le partage !

Bonjour

Une solution PowerQuery mais ne doit marcher que sur la 365, la 2019 et peut-être la 2016, car utilise une nouvelle possibilité de découpage et l'add don sur 2010 et 2013 n'est plus mis à jour

Bonjour @ tous,

Désolé JoyeuxNoel, je suis sûr que tu m'aurais trouvé la bonne formule si j'avais mentionné tous les cas possible dans mes données.

d'où l'intérêt de donner tous les différents cas de figure.

Cordialement

Bonjour tout le monde, les gens,

Juste pour le plaisir, petite amélioration des formules de R@chid et JoyeuxNoel qui dans ce cas fonctionnent très bien.

Désolé Ergotamine, mais ça ne fonctionne pas avec la tienne.

Cordialement.

Rechercher des sujets similaires à "comment supprimer inutiles colonne donnees format dif"