XL 2019 Suppression espace de début et fin - Macro très rapide

Bastien43

XLDnaute Occasionnel
Bonjour,

J'ai créé cette macro pour supprimer les espaces de début et de fin de chaque cellule (de toute une colonne : 12000 lignes)

Comment accélérer la macro, ce n'est pas rapide... ?? Existe-t-il un code plus rapide ?

VB:
Sub SupEspace()

Dim plage, cellule

Set plage = Range("D2:D12000")

For Each cellule In plage

    cellule.Value = Trim(cellule.Value)

Next cellule

End Sub
 
Solution
Bonjour Bastien43

Par tableau (array)
VB:
Sub SupEspace2()

Dim plage As Range
Dim T As Variant
Dim i&, j&

Set plage = Range("D2:D12000")
T = plage
For i = LBound(T, 1) To UBound(T, 1)
    For j = LBound(T, 2) To UBound(T, 2)
        T(i, j) = Trim(T(i, j))
    Next j
Next i
plage.FormulaLocal = T
End Sub

Cordialement

patricktoulon

XLDnaute Barbatruc
re
chez moi
1627755062143.png


en gros vos fichier avec mes formules rames comme pas possible chez moi
alors que les mêmes codes me donne 2.38 sur un fichier 2013
va comprendre Charles
 

Efgé

XLDnaute Barbatruc
Bonjour à toutes et tous, le fil, le forum

En discutant entre nous, nous avons oublié de donner une version directement utilisable par Bastien43
En supprimant le nom créé pour faire plus "propre"
VB:
Sub Bastien43()
Dim T As Variant
With [D2:D12000]
    .Name = "P" 'plage nommée
    T = Evaluate("TRIM(p)")
    .Value = T
    .Name.Delete
End With
End Sub
Cordialement
 

patricktoulon

XLDnaute Barbatruc
re
Bonjour Efgé
tu m'expliquera pourquoi en gardant l’écriture "evaluate" non abrégée tu nome ta plage
tu n'en a pas besoins
VB:
Sub test()
Dim T As Variant
With [D2:D12000]
     T = Evaluate("TRIM(" & .address(0,0) &")")
    .Value = T
   End With
End Sub


le nommage c'est bon pour l’écriture abrégée "[....]" car on ne peut pas variabiliser la référence au range et l'insérer dans la formule il faut absolument une ref range


 

patricktoulon

XLDnaute Barbatruc
re
ben comme ça elle est vraiment propre
tu ne modifie dans le fichier que la plage concernée


formule abrégée [...] 'obligé de nommer pour créer une ref range (car impossible de variabiliser dans cette ecriture)
formule longue "evaluate(....) 'utilisation de l'address de la ref range

;)
 

job75

XLDnaute Barbatruc
Bonjour à tous,

Pour terminer, Efgé m'a confirmé que cette macro fonctionne bien sur Excel 2007 :
VB:
Sub SupEspace()
[D2:D12000].Name = "P" 'plage nommée
[E2:E12000] = [TRIM(P)] 'SUPPRESPACE
End Sub
Elle travaille sur 2 plages sans variable T intermédiaire.

Donc le problème de non-compatibilité de mon post #8 venait bien du fait qu'on restait sur la même plage.

A+
 

patricktoulon

XLDnaute Barbatruc
re
Bonsoir @job75
Donc le problème de non-compatibilité de mon post #8 venait bien du fait qu'on restait sur la même plage.
ben bien sur comme je l'ai dit sur la même plage il faut activer le calcul iteratif
cela dit pour ce qui concerne ce post a savoir le simple trim gauche et droite
j'aimerais bien que l'on trouve une formule moins lente que ma double formule en deux passes
si tu connais celle pour une cellule j'aimerais bien la connaitre je recorderais un rept
j'ai fait plusieurs essais mais je dois me planter dans un double guillemet ou quelque chose comme ça
merci d'avance
et vive evaluate!!!

bon d'accords je sort 😁
 

patricktoulon

XLDnaute Barbatruc
re
heu non Efgé!!!
cette formulation trim gauche et droite et régule les espaces consecutif a 1 seul dans la chaîne
🤣

comme je l'ai dis dans ma démo dans les pages précédentes la fonction "TRIM" de excel est l’équivalent de application.trim de VBA qui régule aussi les espaces consecutifs
et non l'equivalent de Trim de VBA
 

patricktoulon

XLDnaute Barbatruc
bonjour Laurent
t'a pas bien compris je crois
bien que cette formulation fonctionne aussi pour le trim régular
c'est exactement la même chose que les deux autres
c'est pas ce qui est recherché en fait ;)
ne pas confondre VBA.trim et Application.trim
 

Discussions similaires

  • Résolu(e)
Microsoft 365 supprimer espace
Réponses
41
Affichages
4 K
Réponses
12
Affichages
689

Statistiques des forums

Discussions
312 228
Messages
2 086 421
Membres
103 205
dernier inscrit
zch