VBA : supprimer les espaces et double espace

frusciantefan

XLDnaute Junior
Bonjour à tous,

J'ai fouiné un peu sur le net sans grand succes. En fait, j'ai trouvé des codes, mais je n'arrive pas a les appliquer a mon propre cas :

J'ai des données texte : nom,prenom...

Je souhaite n'avoir comme format que "NOM PRENOM" (peut importe le contenu de la cellule)

Je veux donc que ces possibilités là :

" NOM PRENOM"
"NOM PRENOM "
" NOM PRENOM "
"NOM PRENOM"
" NOM PRENOM"
"NOM PRENOM "
" NOM PRENOM "

soient automatiquement transformé en "NOM PRENOM".

J'ai déja un code pour supprimer les ponctuations/accents :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A1:G500")) Is Nothing Then
codeA = "ÉÈÊËÔéèêëàçùôûïî-&'_ç=+°@^\`|[{#~*-+ÏÎÄÂÜÛÖÿ"
codeB = "EEEEOeeeeacuouii C IIAAUUOy"
temp = Target
For i = 1 To Len(temp)
p = InStr(codeA, Mid(temp, i, 1))
If p > 0 Then Mid(temp, i, 1) = Mid(codeB, p, 1)
Next
Application.EnableEvents = False
Target = UCase(temp)
Application.EnableEvents = True
End If
End Sub


Je voudrais pouvoir integrer le code de la suppression d'espace a ce code si dessus !


Merci pour votre aide!

FF
 

frusciantefan

XLDnaute Junior
Re : VBA : supprimer les espaces et double espace

Bonjour

A tester:

VB:
.....
temp = Target
temp=trim(temp)
temp=replace(temp,"  "," ")
......

Salut Pierrejean :

Apres quelques test, je voudrais pouvoir améliorer le code :

1-

J'ai cet exemple :

"M. PIERRE VINCENT"

La macro remplace le "." par un espace mais je me retrouve avec deux espaces : "M PIERRE VINCENT".

Je voudrais donc que la macro refasse un tour apres sa première execution afin de supprimer les doubles blancs qui pourraient rester, si un signe de ponctuation se trouve avant un espace.

2- Si je supprime toutes les cellules j'ai un message d'erreur "d'execution 13 -Incompatibilité de type" . Je ne veux plus que cette erreur s'affiche et veux pouvoir supprimer toutes mes cellules "normalement".

3- Les erreurs sont extraite d'un ERP, dans un fichier Excel lamdba. Lorsque je fais un copier/coller de ce fichier dans le fichier de correction, il ne corrige pas automatiquement les erreurs. Je dois me replacer sur la cellule en question et refaire "entrée". ==> Je voudrais que la correction soit automatique des que je copie/colle. (j'ai testé les collage speciaux, valeurs... en vain)

Encore un grand merci pour ton aide :)

FF
 

david84

XLDnaute Barbatruc
Re : VBA : supprimer les espaces et double espace

Bonjour, salut pierrejean,
le plus simple si tu n'as pas de réponse entre temps : tu mets sur un fichier exemple toutes les possibilités que tu souhaites voir traitées avec à côté le résultat attendu rentré manuellement. Avec un fichier exemple explicite, il sera plus facile de t'aider.
A+
 

frusciantefan

XLDnaute Junior
Re : VBA : supprimer les espaces et double espace

Bonjour, salut pierrejean,
le plus simple si tu n'as pas de réponse entre temps : tu mets sur un fichier exemple toutes les possibilités que tu souhaites voir traitées avec à côté le résultat attendu rentré manuellement. Avec un fichier exemple explicite, il sera plus facile de t'aider.
A+

Toutes mes excuses, je pensais qu'avec le detail du code, il aurait été possible de le faire.
Le fichier contient donc 2 onglets : le premier dans laquelle la macro expliquée dans mes post au dessus agit.
Le second avec des exemples qui ne fonctionnent pas avec la macro que j'ai dans l'onglet 1.

Je reste à votre disposition si besoin!

Merci encore pour vos lumières!

FF
 

Pièces jointes

  • testponctu1.xls
    26.5 KB · Affichages: 110

ROGER2327

XLDnaute Barbatruc
Re : VBA : supprimer les espaces et double espace

Bonsoir à tous
Je n'ai pas regardé le classeur, mais comme j'avais fait ça :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i&, p&, codeA$, codeB$, temp$, oCel As Range, oPlg As Range
  Set oPlg = Intersect(Target, Range("A1:G500"))
  If Not oPlg Is Nothing Then
    codeA = "ÀÄÂÇÉÈÊËÌÎÏÒÔÖÙÛÜŸ-&'_=+°@^\`|[{#~*-+.;,:!"
    codeB = "AAACEEEEIIIOOOUUUY                        "
    For Each oCel In oPlg
      temp = UCase(oCel.Value)
      For i = 1 To Len(temp)
        p = InStr(codeA, Mid(temp, i, 1))
        If p Then Mid(temp, i, 1) = Mid(codeB, p, 1)
      Next
      Application.EnableEvents = False
      oCel.Value = WorksheetFunction.Trim(temp)
      Application.EnableEvents = True
    Next
  End If
End Sub
je livre…​
ROGER2327
#4866


Dimanche 15 Décervelage 138 (Conscience d'Ubu, ST)
23 Nivôse An CCXIX
2011-W02-3T17:20:23Z
 

JNP

XLDnaute Barbatruc
Re : VBA : supprimer les espaces et double espace

Re :),
Avec les données du classeur de test, ça m'a l'air de fonctionner…
Certes, et j'ai été surpris :confused:... J'étais parti aussi sur une analyse cellule par cellule, mais l'événementielle n'était pas déclenchée correctement par le Coller, d'où mon contournement du Ctrl+v :eek:...
Il faudra que je me penche plus en avant pour comprendre pourquoi :rolleyes:...
Bonne soirée (et bravo ;)) :cool:
 

frusciantefan

XLDnaute Junior
Re : VBA : supprimer les espaces et double espace

Je reviens à l'attaque pour vous pousser dans vos retranchements.
Dans le cas ou une adresse mail est entrée dans une cellule (toujours la même), comment faire pour garder la forme si la macro supprime le "@"et le "." ??
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 977
dernier inscrit
Hermet