Code VBA pour espacer nom/prénom/matricule

Résolu
The_boss_68 Messages postés 959 Date d'inscription   Statut Membre Dernière intervention   -  
The_boss_68 Messages postés 959 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

Dans une plage donnée ex: de A1 à A20 je recherche une petite macro me permettant d'automatiser un écart de 5 espaces entre le Nom le prénom et le matricule
Exemple: Durand-----François-----07524125
Ps: Les petits tirets représentent les espaces

Merci de votre aide

Cordialement

2 réponses

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour

    Pourquoi une macro pour si peu ? Tu peux facilement dans une colonne mettre en ligne 1 la formule
    =SUBSTITUE(A1;" ";" ") et l'étirer vers le bas
    Copier ensuite la plage de cette colonne et la coller en colonne A par collage spécial Valeurs uniquement

    Cdlmnt
    Via

    "L'imagination est plus importante que le savoir." A. Einstein
    0
    1. The_boss_68
       
      Bonjour via55

      Ok! ta formule est bonne, mais moi il me faut absolument un code vba pour faire fonctionner mon truc dans de bonne conditions, en fait j'utilise déjà une formule en décaler a ce niveau là, donc une formule en + pour moi serait ingérable
      Merci de t'impliquer

      Cordialement
      0
      1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > The_boss_68
         
        Re

        Alors il suffit d'appliquer la formule dans une macro à l'intérieur d'une boucle sur les lignes,
        Exemple avec boucle sur les lignes 1 à 20
        Sub espacer()
        For n = 1 To 20
        Range("A" & n) = Application.WorksheetFunction.Substitute(Range("A" & n), " ", "     ")
        Next
        End Sub


        Cdlmnt
        Via
        0
      2. The_boss_68 Messages postés 959 Date d'inscription   Statut Membre Dernière intervention   182 > via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention  
         
        Re

        J'ai testé votre macro, effectivement elle fonctionne mais le problème je n'arrive pas à l'automatiser il faut que j'appuis chaque fois sur exécuter la macro, pour espacer les noms/prénoms/matricule, alors je ne sais pas pourquoi j'ai ce problème.
        0
      3. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > The_boss_68 Messages postés 959 Date d'inscription   Statut Membre Dernière intervention  
         
        Re,

        C'est normal
        Pour l'automatiser il faut un fait déclencheur :
        - un double-clic dans la cellule à modifier
        - la modification d'une valeur dans une cellule
        et en fonction de ce fait déclencheur mettre la macro appropriée non pas dans un module mais dans le worsheet de la feuille concernée

        Il faut également déterminer quelle plage de cellule doit être concernée par la macro (pour qu'elle ne se déclenche pas dans d'autres lignes ou colonnes de la feuille)

        Exemple de macro lors d'une entrée dans une cellule de la plage A1:A20
        Private Sub Worksheet_Change(ByVal Target As Range)
        ' colonne autorisée pour modification
        col = 1
        ' 1ere ligne autorisée pour modification
        lig1 = 2
        ' dernière ligne autorisée pour modification
        lig2 = 20
        'nombre d'espaces dans la chaine de la cellule
        nde = Len(Target.Value) - Len(Application.WorksheetFunction.Substitute(Target.Value, " ", ""))
        ' si valeur modifiée est dans bonne colonne et bonnes lignes et avec un nombre d' espace inférieur à 10 (sinon la modification s'applique en boucle infinie après le 1er changement)
        If Target.Column = col And Target.Row >= lig1 And Target.Row <= lig2 And nde < 10 Then
        Range("A" & Target.Row) = Application.WorksheetFunction.Substitute(Range("A" & Target.Row), " ", "     ")
        End If
        End Sub


        Ouvrir editeur VBA - Double clic sur la feuille concernée dans l'arborescence à gauche - Copier-coller la macro dans la page blanche - Modifier si nécessaire les n°s de colonne et de lignes autorisées en début de macro
        0
  2. The_boss_68 Messages postés 959 Date d'inscription   Statut Membre Dernière intervention   182
     
    Bonjour à tous

    En fait je voulais remercier très sincèrement via55 pour son implication dans mon projet et le félicite pour sa macro qui fonctionne au top chez moi sur mon fichier.

    Salutation

    The_boss_68
    0