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