TRIM/EPURAGE en chaine?

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 !

benlecanard

XLDnaute Junior
Bonjour

Je récupère un fichier (mal fait) que je dois retraiter pour l'utiliser sous forme de base de données
Un des retraitements consiste à supprimer les espaces superflus avec la fonction TRIM, sur presque toutes les colonnes
Je passe par plusieurs opérations (ajouter fonction, copier fonction sur autres colonnes, recopier valeur une fois ok et cela a chaque fois que je récupère des infos)

Y aurait il un moyen de faire un "épurage" general sur tout un onglet/toutes les cellules non vides par exemple?
ou une macro?

Merci!
 
Re : TRIM/EPURAGE en chaine?

Bonjour Benlecanard

essaye peut être le code ci dessous :

Code:
Sub test()
Dim c As Range
For Each c In ActiveSheet.UsedRange 
c.Value = Trim(c.Value)
Next c
End Sub

attention, un peu long si beaucoup de cellules...

bon après midi
@+
 
Re : TRIM/EPURAGE en chaine?

Bonjour,
En utilisant peut-etre la notion de tableau (ça devrait aller plus vite)
Code:
Sub Test()
    Dim Tabl()
    Range("A1").CurrentRegion.Select
    NRow = Selection.Rows.Count
    NCol = Selection.Columns.Count
    ReDim Tabl(1 To NRow, 1 To NCol)
    a = Selection.Value
    For i = 1 To NRow - 1
        For j = 1 To NCol - 1
            Cells(i, j).Value = Trim(a(i, j))
        Next j
    Next i
End Sub
 
Re : TRIM/EPURAGE en chaine?

Merci
Pour vous répondre
- plantage sur première macro = très très long puis pas de réponse.
- supprimer double espaces via macro : autant faire un remplacer manuel tout bête, c'est plus rapide.

Avec la solution tableau/derniere macro ca marche et c'est assez rapide 🙂
Merci. Cependant:
- la dernière ligne n'est pas traitée
- mes formats texte sont modifiés ("000005047" est modifié en "5047" lors de l"épurage et ca ne m'arrange pas trop ca!)
 
Re : TRIM/EPURAGE en chaine?

Bonjour,

Je t'ai donné une méthode mais il faut voir avec le vrai fichier car chaque cas peut-être différent.
J'ai retiré les -1 pour NRow et Ncol
Envoies le fichier ça pourrait m'aider.
Code:
Sub Test()
    Dim Tabl()
    Range("A1").CurrentRegion.Select
    NRow = Selection.Rows.Count
    NCol = Selection.Columns.Count
    ReDim Tabl(1 To NRow, 1 To NCol)
    a = Selection.Value
    For i = 1 To NRow
        For j = 1 To NCol 
            Cells(i, j).Value = Trim(a(i, j))
        Next j
    Next i
End Sub
Si fichier trop grand
erenaud@deutsch.net
 
Dernière édition:
Re : TRIM/EPURAGE en chaine?

Bonjour Ben le canard, pierrot93, boisgontier, renauder, le forum

voici une version qui devrait être beaucoup plus rapide sur les grandes séries, j'ai testé sur 65536 valeurs, c'est trés rapide. Si tu veux garder tes chiffres en format texte, passe tes cellules en format texte avant de lancer la macro

Cordialement, A+
Code:
Sub Test2()
    Dim Tab_Val, Tab_Cel As Range, I As Long, J As Integer, Mem_Calc As Boolean
    Application.ScreenUpdating = False
    If Application.Calculation = xlAutomatic Then
        Mem_Calc = True
        Application.Calculation = xlManual
    Else
        Mem_Calc = False
    End If
    Set Tab_Cel = Range("A1").CurrentRegion
    Tab_Val = Tab_Cel.Value
    For I = LBound(Tab_Val) To UBound(Tab_Val)
        For J = 1 To Tab_Cel.Columns.Count
             Tab_Val(I, J) = Trim(Tab_Val(I, J))
        Next J
    Next I
    Tab_Cel.Value = Tab_Val
    If Mem_Calc = True Then Application.Calculation = xlAutomatic
    Application.ScreenUpdating = True
End Sub
 
Re : TRIM/EPURAGE en chaine?

Re bonjour

c'est une question de format de cellule. Quand tu ouvres un fichier texte sans préciser le type de données par colonne, tu passes en format standard. Une donnée enregistrée " 0005" sera comprise comme une chaine texte lors de l'initialisation à cause du " ". Quand tu passes la macro, en fait tu initialises avec une nouvelle valeur de type chiffre, le format standard de la cellule reconnait un chiffre et agit en conséquence. Essayes de rentrer manuellement une chaine type " 005" et tu comprendras.
les solutions de contournement possibles
1-ajouter ' avant la valeur pour préciser une chaine texte
2-passer les cellules en format texte pour éviter la reconnaissance chiffre
3-passer les colonnes concernées en format texte lors de l'ouverture du fichier texte en précisant ce format.

Cordialement, A+
 
Dernière édition:
- 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

P
Réponses
3
Affichages
752
punk_sportif
P
D
  • Question Question
Réponses
2
Affichages
823
David1902
D
Retour