comment faire macro supprime espace

  • Initiateur de la discussion élec
  • Date de début
É

élec

Guest
bonjour au forum , je cherche une macro pour supprimer les espaces entre les chiffres de la colonne B de mon fichier, merci à tous pour votre aide [file name=SITECO.zip size=7574]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/SITECO.zip[/file]
 

Pièces jointes

  • SITECO.zip
    7.4 KB · Affichages: 13

pat1545.

XLDnaute Accro
Salut,

du TOUT grand Dave McRitchie:

mettre tout d'abord toutes les cellules en format texte

Sub REMOVESPACE()
'David McRitchie 2000-02-28 excel.programming
Application.ScreenUpdating = False
Dim temp As String
Dim Cell As Range
Dim Mlen
For Each Cell In Selection '.SpecialCells(xlCellTypeConstants, 2)
'above limits to constants which are TEXT
Mlen = Len(Cell)
'If InStr(1, Cell.Value, ' ') Then 'Insure possibility of change
'temp = Left(Cell, Mlen - 1)
temp = Trim(Cell.Value)
While InStr(temp, ' ') > 0
temp = Replace(temp, ' ', '')
Wend
Cell.Value = Trim(temp)
'End If
Next
End Sub
 
É

élec

Guest
merci pat1545. mais jai deja une macro dans mon fichier ( emprinté sur le forum à Robert
:whistle: ) comment faire pour que les 2 macros fonctionne ensemble: c'est à dire je double clike gauche sur une cellule et qu'en je clike droit sur une autre le collage se fait sans les espaces , voici la macro à combiner avec la tienne, merci encore

Private val As String 'décalre la variable val

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'au double clic

If Target.Value = '' Then Exit Sub 'si la cellule double cliqué est vide, sort de la procédure

Cancel = True 'évite le mode édition lié au double-clic
val = 'TD/' & Target.Value 'définit la variable val
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) 'au clic droit

If val = '' Then Exit Sub 'si la variable val est vide, sport de la procédure

Cancel = True 'évite le menu contextuel lié au clic droit
Target.Value = val 'place la valeur de la variable val dans la cellule
End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Elec, Patrick, bonsoir le forum,

Étrange que cette macro pour MiniBosse te soit aussi utile sans l'adapter ??? À moins que MiniBosse et Elec ne fasse qu'un, auquel cas il aurait mieux valu rester sur le même fil...

Mais bon, si tu remplaces :

val = 'TD/' & Target.Value 'définit la variable val
par :
val = 'TD/' & Replace(Target.Value, ' ', '') 'définit la variable val
ça devrait marcher.

Édition :

Oops ! Désolé Elec je n'avais pas remarqué ton fichier joint du premier post... Ça ne change rien à la solution sauf la honte que je me paye...

Message édité par: Robert, à: 11/03/2006 22:59
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Elec, Patrick, le Forum

Je n'ai pas l'honneur d'avoir lu déjà Dave McRitchie, mais je trouve le code un peu lourd et probablement très long sur une grosse quantité de lignes... Je procèderai ainsi si j'avais une colonne à scanner pour y supprimer les espaces :

Sub LoopSpaceKiller()
Dim TabloPlage As Variant
Dim RangePlage As Range

Set RangePlage = Range(Range('B2'), Range('B65536').End(xlUp))
TabloPlage = RangePlage

   
For i = 1 To UBound(TabloPlage, 1)
        TabloPlage(i, 1) = Application.WorksheetFunction.Substitute(TabloPlage(i, 1), ' ', '')
   
Next

RangePlage = TabloPlage

End Sub


Sinon pour la seconde précision d'Elec, une miniscule fontion intégrée dans le Private Module de la Feuille en question devrait suffir comme suit :

Private TheVal As String

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'au double clic
If Target.Value = '' Then Exit Sub
    Cancel =
True
    TheVal = 'FS/' & SpaceKiller(Target.Value)
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) 'au clic droit
If TheVal = '' Then Exit Sub
    Cancel =
True
    Target.Value = TheVal
End Sub

Private Function SpaceKiller(ByVal TheString As String) As String
    SpaceKiller = Application.WorksheetFunction.Substitute(TheString, ' ', '')
End Function


Par contre attention Elec, dans ton fichier Démo tu as aussi collé des évènementielles qui n'ont rien à faire dans le Private Module de 'ThisWorkBook'

Bonne Soirée
[ol]@+Thierry[/ol]
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir le fil, bonsoir le forum,

Du coup Élec, en regardant ton fichier ça donnerait plutôt :
val = CStr('3' & Replace(Target.Value, ' ', '')) 'définit la variable val

pour être sur du format texte...
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Robert

Je ne sais pas si tu as remarqué mon post précédent dans ce Fil mais je t'ai corrigé, y a pas bon d'utiliser un nom réservé par VBA pour déclarer ses variables... En effet Val est une Fonction... BIen que celà ne déclenche pas un bug immédiatement, c'est tôt ou tard une source d'emm... Alors déjà qu'on en a sans les chercher, autant éviter ceux que l'on peut !!! lol

Bonne Soirée à toi
[ol]@+Thierry[/ol]
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir le fil, bonsoir le forum,

Heu... Thierry ! Ben non j'avais même pas lu à vrai dire... Enfin, du moins pas jusqu'au bout où tu donnes justement la réponse à Élec et pas à Patrick. Du coup ça sera le post de la honte pour moi... Sinon promis je n'utiliserai plus jamais, tu m'entends ! JAMAIS, la variable val ni TheVal because I don't speak english mais je simplifierai avec val_juste_par_esprit_de_contradiction_et_parce_que_je_ne_parle_pas_anglais...

Mille thank you et bonne soirée à toi aussi.


Édition :

Ooops ! Bonsoir Hervé. Encore un code de ouf avec des mots que je connais même pas... Arf je teste, je teste.


Message édité par: Robert, à: 11/03/2006 23:31
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Hervé, re le Fil

Amusante performance, mais je crois que là tu vas chauffer le processeur sérieusement !!! Split et Join dans la même boucle et sur chaque cellule, mais bravo sur l'idée !

Sinon si je me souviens bien la Fonction Replace utilisée par Robert n'est pas acceptée sous Mac...(Sous réserve de confirmation de nos amis de chez Mac qui vont avoir des puces Intel !)

Bonne Soirée
[ol]@+Thierry[/ol]
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Didier

Alors là, bravo, simple rapide et efficace !!!

Par contre je confirme bien que la Function Replace (pas Méthode) ne passe pas sous Mac, j'ai retrouvé le Fil avec Jean Marie

Lien supprimé

Mais encore Bravo, Chapeau !

Bonne Nuit
[ol]@+Thierry[/ol]
 

Discussions similaires

Statistiques des forums

Discussions
314 611
Messages
2 111 147
Membres
111 051
dernier inscrit
MANUREVALAND