Supprimer espaces d'une cellule

Résolu
marcolevrai858 Messages postés 7 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 16 juillet 2010 - 1 oct. 2008 à 16:07
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 - 2 oct. 2008 à 08:42
Bonjour,

J'au une colonne d'une feuille Excel contenant différents nombres. Parfois, des cellues contiennent, en plus du nombre, un certain nombre d'espaces derrière. Je souhaiterais supprimer ces espaces en créant un programme Visual Basic les supprimant automatiquement. Comment faire ?

6 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
2 oct. 2008 à 08:42
Salut,

>[../auteur/MARCOLEVRAI858/1476670.aspx marcolevrai858] :Si tu estimes que ton problème est résolu,
penses à appuyer sur réponse acceptée sur le OU les posts qui t'ont aider à avancer. (Meme si ici c'est l'un des tiens)

@+: Ju£i€n
Pensez: Réponse acceptée
3
meldur74 Messages postés 40 Date d'inscription jeudi 9 octobre 2003 Statut Membre Dernière intervention 21 janvier 2010 3
1 oct. 2008 à 17:05
tu as une fonction qui s'appele Trim.
ca doit donner un truc du genre :
monResultat=trim(mavaleur)

Meldur
0
cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009
1 oct. 2008 à 17:47
Bonjour,

Sinon, sans code, il y a la fonction SUPPRESPACE dans la catégorie des fonctions texte de EXCEL.. La programmation est-elle indispensable quand des fonctions de ce type existent ? Voilà une question qui mérite débat.
En cas de programmation je répond comme Meldur74
exemple
 
   Range("C1").FormulaR1C1 = "=TRIM(RC[-2])" (c'est la fonction SUPPRESPACE transformée en VB)

thierry la fronde
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
1 oct. 2008 à 18:21
Salut,

Thierry la fronde : suprespace en anglais ce dit trim ! mais par contre je suis d'accord qu'une formule + l'autofill d'excel  + un copier coller ferait l'affaire
Mais le probleme du trim c'est qu'il ne supprime pas les espace entre les mots ou entre les chiffres. Pour etre plus radicale j'utiliserais la fonction substitution.

Et comme on est sur un site de programation :

Sub SupprimerEspace()
    'les variables:
    Dim MaFormule As String, RefDeMaChaine As String, Premierligne As Long
    Dim DerniereLigne As Long, Maplage As Range, ColonneResultat As String
   
    Application.ScreenUpdating = False
    Premierligne = 1 ' ou premierligne correspond a la premiere ligne de la plage de cellule dans les quelles on doit virer les espaces
    ColonneResultat = "K"
    MaFormule = "=SUBSTITUTE(" 'la formule commence ici
   
    RefDeMaChaine = Columns("A").Rows(Premierligne).Address(RowAbsolute:=False)
            ' si la premiere ligne = 14, sans l'option RowAbsolute:=False le resultat
            ' pour la premier colonne serait $A$14
            ' Mais avec cette option, le resultat est $A14. ceci prepare notre formule a la fonction l'Autofill
    MaFormule = MaFormule & RefDeMaChaine
    MaFormule = MaFormule & ",Char(32)," & """"")" 'char(32) correspond a un espace

    'on recherche la derniere ligne de la plage de cellules a concatener sur la colonne A
    DerniereLigne = Columns("A").Find("*", , , , xlByRows, xlPrevious).Row
   
    'on determine la plage de cellules qui doit contenir le resultat de concatenation
    Set Maplage = Range(ColonneResultat & Premierligne & ":" & ColonneResultat & DerniereLigne)
   
    'on pose la formule dans la premiere cellule la colonne de resultat
    Range(ColonneResultat & Premierligne).FormulaLocal = MaFormule
   
    'on copie la formule sur toute la plage de resultat par la fonction autofil d'excel
    Range(ColonneResultat & Premierligne).AutoFill Destination:=Maplage, Type:=xlFillDefault
   
    'copy de la colonne de resultat
    Maplage.Copy
   
    'on ecrase la colonne source par les valeurs de la colonne resultat
    Range("A" & Premierligne).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
       
    Maplage.ClearContents
    Application.ScreenUpdating = True
End Sub

Cette methode peut paraitre bien compliquée mais en faite elle est beaucoup plus rapide qu'une methode par boucle for/next ou autre

Attention j'utilise une version anglaise donc il est possible que tu es des dificultés.  Normalement cela ne devrait pas etre le cas car j'en ai tenu compte

A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
1 oct. 2008 à 20:33
a oui j'oubliais :

pas dans le bon theme ! pour le VBA c'est ici :

Thèmes / [forum-VISUAL-BASIC_1.aspx Visual Basic 6] / [theme-LANGAGES-DERIVES_287.aspx Langages dérivés] / [theme-VBA_244.aspx VBA] /

desolé PCPT encore du boulot pour toi
0
marcolevrai858 Messages postés 7 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 16 juillet 2010
2 oct. 2008 à 07:49
Bonjour,

Je vous remercie pour votre aide. J'ai finalement réussi en remplaçant les espaces par rien dans Edition/Remplacer sur Excel et j ai enregistré la macro.
0
Rejoignez-nous