Microsoft 365 Comment supprimer un espace entre deux chiffres ?

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

DenisHen

XLDnaute Junior
Bonjour à la communauté.
Aujourd'hui, je cherche corriger la saisie d'une dimension de rectangle.
Exemple, j'ai des textes qui contiennent (en autre) "blablabla 1 253mm x 2 411mm blablabla" mais j'aimerais uniformiser les différentes cotes, car parfois, c'est "blablabla 1 253mm x 2411mm blablabla" ou autre chose.
Voici un bel exemple :
01.3.2.53 Ensemble vitré, repère EV24 : 6 540x 2120mm Haut
Et pourquoi pas, en même temps, supprimer les espaces entre les "x" et les chiffres...
Sachant que la cellule peut contenir plusieurs cotes.

De plus, j'ai d'autres macros qui n'aiment pas ces espaces...
Je pense qu'il doit il y avoir un truc avec Like ou autre, mais je ne trouve pas.

J'ai écris un truc dans ce genre, mais j'ai des centaines de lignes dans mes feuilles Excel, et ça prends beaucoup trop de temps :
Code:
      For PouA = 0 To 9
        VarA = Trim(PouA)
        For PouB = 0 To 9
          VarB = Trim(PouB)
          Cells(Lign, 2).Value = Replace(Cells(Lign, 2).Value, PouA & " " & PouB, PouA & PouB)
        Next PouB
      Next PouA

Quelqu'un aurait une idée ?
Bien à toi la communauté.
Denis...
 
Solution
Bonjour DenisHen, vgendron, nullosse,

Avec la méthode Replace :
VB:
Sub Epure()
Dim i, j
With ActiveSheet.UsedRange
    While Application.CountIf(.Cells, "*  *")
        .Replace "  ", " ", xlPart 'doubles espaces
    Wend
    For i = 0 To 9
        .Replace i & " x", i & "x", xlPart, MatchCase:=False
        .Replace "x " & i, "x" & i, MatchCase:=False
        For j = 0 To 9
            .Replace i & " " & j, i & j
    Next j, i
End With
End Sub
A+
Bonjour le fil

Histoire de varier les plaisirs
Une version(*) sans macro (avec PowerQuery)
PQ_SupprESP.PNG

Avec ci-dessous le code M utilisé
La requête principale
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    SUPPRESSION = Table.AddColumn(Source, "RESULTAT", each fxNETTOIE([DATAS])),
    FIN = Table.SelectColumns(SUPPRESSION ,{"RESULTAT"})
in
   FIN
La fonction personnalisée nommé fxNETTOIE utilisée par la requête principale
PowerQuery:
(inputText as text) as text => 
    let
    SUPPRESP = Text.Clean(inputText),
    Nombres = {"0".."9"},
    SUPPRESP_N = List.Accumulate(Nombres, SUPPRESP,(textAccum1, digit1) => List.Accumulate(Nombres,textAccum1,(textAccum2, digit2) => Text.Replace(textAccum2, digit1 & " " & digit2, digit1 & digit2))),           
    S_PLIT = Text.Split( SUPPRESP_N, " " ),
    S_VIDES = List.RemoveItems( S_PLIT, {""} ),
    C_OMBIN = Text.Combine( S_VIDES, " " ) 
in
    C_OMBIN

(*) qui reste perfectible (cf l'espace qui persiste dans 6502x 2122)
 
Re

J'ai inclus la fonction dans la requête
PowerQuery:
et
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    // Fonction personnalisée pour nettoyer la chaîne "DATAS"
        Nettoie=  (inputText as text) as text =>
         let
        SUPPRESP = Text.Clean(inputText),
        Nombres = {"0".."9"},
        SUPPRESP_N = List.Accumulate(Nombres, SUPPRESP,(tAccum1, n1) => List.Accumulate(Nombres,tAccum1,(tAccum2, n2) => Text.Replace(tAccum2, n1 & " " & n2, n1 & n2))),        
        S_PLIT = Text.Split( SUPPRESP_N, " " ),
        S_VIDES = List.RemoveItems( S_PLIT, {""} ),
        C_OMBIN = Text.Combine( S_VIDES, " " )
        in
        Text.Replace(Text.Replace(Text.Replace(C_OMBIN, " x ", "x"), " mm", "mm"),"x ","x"),
    //Fin fonction personnalisée
    FIN= Table.TransformColumns(Source,{{"DATAS", each Nettoie(_), type text}})
in
    // Résultat final
    FIN
En attendant plus concis et plus ciselé (avis aux amateurs PowerQueristes du forum) 😉 ) ,ce code M produit ceci
PQ_bis.PNG

l
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
41
Affichages
5 K
Retour