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

riton00

XLDnaute Impliqué
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+
 

riton00

XLDnaute Impliqué
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 Impliqué
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
 

riton00

XLDnaute Impliqué
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

Statistiques des forums

Discussions
311 720
Messages
2 081 898
Membres
101 834
dernier inscrit
Jeremy06510