(Resolu) Code vba pour créer des espaces entre nom, prénom, matricule

riton00

XLDnaute Occasionnel
Bonjour à tous,

Dans une plage donnée ex: de A1 à A20 je recherche un petit code vba me permettant d'automatiser un écart de 5 espaces entre le Nom le prénom et le matricule
Exemple: Dupond-----Joël-----08580441
Ps: Les petits tirets représentent les espaces

Merci de votre aide

Cordialement
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Code vba pour créer des espaces entre nom, prénom, matricule

Bonsoir riton00,

Il faut que les mots soient séparés par au moins un espace :

Code:
Sub Espaces()
Dim P As Range, t, i&
Set P = [A1:A20] 'à adapter
t = P.Resize(, 2) 'au moins 2 éléments
For i = 1 To UBound(t)
  t(i, 1) = Application.Trim(t(i, 1)) 'SUPPRESPACE
  t(i, 1) = Replace(t(i, 1), " ", "     ")
Next
P.Columns(1) = t
End Sub
Avec le tableau VBA t c'est très rapide.

A+
 

job75

XLDnaute Barbatruc
Re : Code vba pour créer des espaces entre nom, prénom, matricule

Re,

Testé le même texte sur [A1:A100000] => 2 secondes sur Win 8 - Excel 2013.

A+
 

riton00

XLDnaute Occasionnel
Re : Code vba pour créer des espaces entre nom, prénom, matricule

Bonjour job75

Une épine de moins pour mon projet macro testé et adopté

Merci

Cordialement
 

Modeste geedee

XLDnaute Barbatruc
Re : Code vba pour créer des espaces entre nom, prénom, matricule

Bonsour®
qu'en est-il des noms à particule, et prénoms composés ... ?
:confused:
:eek:
 

riton00

XLDnaute Occasionnel
Re : Code vba pour créer des espaces entre nom, prénom, matricule

Bonjour Modeste geedee

Ouais c'est vrai, je n’y ai pas pensé, mais en mettant peut-être un trait d'union entre noms/prénoms à particules ou composé cela résoudra le problème. À voir en finalité le résultat.
Par contre si au cas vous aviez une meilleure idée que la mienne vu que vous avez soulevé le problème je suis preneur de toute proposition

Cordialement
 

job75

XLDnaute Barbatruc
Re : Code vba pour créer des espaces entre nom, prénom, matricule

Bonjour riton00, Modeste geedee,

Ma macro du post #2 traite tout le tableau en bloc.

Un complément avec cette autre macro à placer dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 1 Then Exit Sub 'colonne à adapter
Dim t$, s, ub%, n%, i%
t = Target(1) 'une seule cellule traitée
t = Application.Trim(t) 'SUPPRESPACE
s = Split(t): ub = UBound(s)
If ub > 2 Then _
  n = Int(Abs(Val(InputBox("Entrez le nombre de mots du NOM :", , 1))))
If n = 0 Then n = 1
t = ""
For i = 0 To ub
  t = t & IIf(i = n Or i = ub, "     ", " ") & s(i)
Next
Application.EnableEvents = False 'désactive les évènements
Target(1) = LTrim(t) 'ôte les espaces à gauche
Application.EnableEvents = True 'réactive les évènements
End Sub
La macro fait d'une pierre deux coups :

- chaque cellule est traitée automatiquement quand on y entre une donnée

- le cas des noms ou prénoms composés est traité par une InputBox.

Bonne journée.
 

riton00

XLDnaute Occasionnel
Re : Code vba pour créer des espaces entre nom, prénom, matricule

Bonjour Modeste geedee

Merci beaucoup de votre réactivité, je testerais votre macro ans la journée et au cas ou je vous ferais par du résultat.

Cordialement

Riton00
 

job75

XLDnaute Barbatruc
Re : Code vba pour créer des espaces entre nom, prénom, matricule

Re,

C'est gentil de dire bonjour à Modeste geedee mais mettez vos lunettes :rolleyes:

A+
 

riton00

XLDnaute Occasionnel
Re : Code vba pour créer des espaces entre nom, prénom, matricule

Re,

C'est gentil de dire bonjour à Modeste geedee mais mettez vos lunettes :rolleyes:

A+
Bonjour à tous et en particulier à vous job75 :eek:

Désoler j'ai la tête :mad: en l'air je fais que des bourdes, depuis que je suis tombé de vélo j'ai mon cerveau qui me fait défaut j'espère que vous ne m'en voudrez pas de trop, mais en tout les cas je vous remercie sincèrement pour votre macro elle est absolument au top et fonctionne super bien sur mon projet, j'ai eu un peu du mal à adapter "la colonne" puisque je modifiais le chiffre, mais pas le signe et en fait j'ai dû mettre ce signe <> + le 4 pour n'utiliser que la colonne D , mais en tout les cas tout est rentré dans l'ordre maintenant, et encore chapeau pour l'InpuBox qui traite les noms ou prénoms composés ça marche impec.

Cordialement

Riton00
 

Discussions similaires


Haut Bas