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

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

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 !

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
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
 
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


 
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

😉
 
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+
 
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 😁
 
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
 
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
 
- 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
  • Question Question
Microsoft 365 Programme trop lent
Réponses
12
Affichages
975
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…