Supprimer espaces d'une cellule [Résolu]

Messages postés
7
Date d'inscription
mardi 16 septembre 2008
Statut
Membre
Dernière intervention
16 juillet 2010
- - Dernière réponse : jrivet
Messages postés
7401
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 ?
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
7401
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
43
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 136 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jrivet
Messages postés
40
Date d'inscription
jeudi 9 octobre 2003
Statut
Membre
Dernière intervention
21 janvier 2010
2
0
Merci
tu as une fonction qui s'appele Trim.
ca doit donner un truc du genre :
monResultat=trim(mavaleur)

Meldur
Commenter la réponse de meldur74
Messages postés
351
Date d'inscription
mercredi 21 juillet 2004
Statut
Membre
Dernière intervention
12 août 2009
0
Merci
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
Commenter la réponse de cs_thierry la fronde
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
0
Merci
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+
Commenter la réponse de bigfish_le vrai
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
0
Merci
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
Commenter la réponse de bigfish_le vrai
Messages postés
7
Date d'inscription
mardi 16 septembre 2008
Statut
Membre
Dernière intervention
16 juillet 2010
0
Merci
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.
Commenter la réponse de marcolevrai858