Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Retirer les traits d'unions dans les cellules

fredbacon

XLDnaute Nouveau
J'aurai besoin d'aide, s'il vous plait.

Exemple:
ma cellule est:

2021-03-04

Je voudrais que ma cellule soit comme ce qui suit, sans les traits d'unions: 20210304

Je voudrais retirer les traits d'unions dans toutes mes cellules pour ensuite que le remplissage instantanée fonctionne sur toutes mes autres cellules (en ayant enlevé les traits d'unions).

Merci
 

jm.andryszak

XLDnaute Occasionnel
Bonjour
1-Soit créer une nouvelle colonne
Formule : =SUBSTITUE(A1;"-";"") dans la nouvelle colonne à tirer vers le bas

2-Soit par macro
Pas besoin de nouvelle colonne, on suppose que les cellules à convertir sont en colonne D.
Sub Test()
Dim i
For i = 1 To Range("d" & Rows.Count).End(xlUp).Row
Range("d" & i) = Replace(Range("d" & i), "-", "")
Next
'Format Standard
Range("d1 : " & "d" & Range("d" & Rows.Count).End(xlUp).Row).NumberFormat = "General"
End Sub
 

cp4

XLDnaute Barbatruc
Bonjour,

Sans fichier, en t'inspirant de cette macro
VB:
Sub remplacer()
Range("b1") = Replace(Range("a1"), "-", "") 'résultat en colonne b
Range("a1") = Replace(Range("a1"), "-", "") 'En écrasant la cellule elle même
End Sub
 

patricktoulon

XLDnaute Barbatruc
Bonjour
fait toute ta plage d'un coup sans boucle
VB:
Sub replace_Tirets()
    With Range("d1", Cells(Rows.Count, "D").End(xlUp))
        .Replace what:="-", Replacement:="", LookAt:=xlPart
        .EntireColumn.NumberFormat = "General"
    End With
End Sub
 

job75

XLDnaute Barbatruc
Bonjour fredbacon, le forum,

Il y a 3 possibilités pour que la date soit affichée avec des tirets :

- soit c'est un nombre au format personnalisé "aaaa-mm-jj"

- soit la cellule est au format "Texte"

- soit le texte est précédé d'une apostrophe.

Cette macro traite la colonne A dans les 3 cas :
VB:
Sub Remplacer_tirets()
Dim c As Range
With [A1].CurrentRegion.Columns(1) 'à adapter
    .NumberFormat = "yyymmdd"
    For Each c In .Cells
        c = Replace(c.Value2, "-", "/")
    Next
End With
End Sub
A+
 

Pièces jointes

  • Dates(1).xlsm
    17.2 KB · Affichages: 3

job75

XLDnaute Barbatruc
S'il y a un grand nombre de cellules la macro précédente prendra beaucoup trop de temps.

Il faut alors utiliser un tableau VBA :
VB:
Sub Remplacer_tirets()
Dim tablo, i&
With [A1].CurrentRegion.Columns(1) 'à adapter
    tablo = .Resize(, 2).Value2 'matrice, plus rapide, au moins 2 éléments
    For i = 2 To UBound(tablo)
        tablo(i, 1) = Replace(tablo(i, 1), "-", "/")
    Next
    '---restitution---
    .NumberFormat = "yyymmdd"
    .Value = tablo
End With
End Sub
 

Pièces jointes

  • Dates(2).xlsm
    17.7 KB · Affichages: 1

job75

XLDnaute Barbatruc
Pour tester j'ai recopié la plage A2:A4 sur 90 000 lignes, chez moi sur Win 11 Excel 2019 :

- fichier (1) => 2,5 secondes, c'est quand même assez rapide

- fichier (2) => 0,25 seconde.
 

fredbacon

XLDnaute Nouveau


Traduction svp
Je suis un novice suivant un cour en adm.
 

Discussions similaires

Réponses
3
Affichages
309
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…