IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Saut de ligne après chaque nom+prénom différents


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 117
    Par défaut Saut de ligne après chaque nom+prénom différents
    Bonjour à tous,

    Je souhaiterai sur excel automatiser une tache : sauter une ligne lors de chaque nom + prénom différent.

    Voici, ci-dessous, comment mes données se présentent :

    Albert Fabien
    Albert Fabien
    Albert Fabien
    Albert Florian
    Ciota Jacques
    Ciota Jacques
    Debrube Robert


    Ce que je souhaiterai faire :

    Albert Fabien
    Albert Fabien
    Albert Fabien

    Albert Clément

    Ciota Jacques
    Ciota Jacques

    Debrube Robert



    J'ai réfléchi sur un code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub ins()
    lastr = Range("A65000").End(xlUp).Row
    For i = lastr To 1 Step -1
    nom1 = Left(Cells(i, 1).Value, InStr(Cells(i, 1).Value, " "))
    nom2 = Left(Cells(i + 1, 1).Value, InStr(Cells(i + 1, 1).Value, " "))
    If nom1 <> nom2 Then
    Prenom1 = Left(Cells(i, 1).Value, InStr(Cells(i, 1).Value, " "))
    Prenom2 = Left(Cells(i + 1, 1).Value, InStr(Cells(i + 1, 1).Value, " "))
    If Prenom1 <> Prenom2 Then
    Cells(i + 1, 1).Select
    Selection.EntireRow.Insert Shift:=xlDown
    End If
    Next
    End Sub
    Cependant avec ce code je n'arrive pas à insérer un saut de ligne lorsque mes clients ont le même nom et un prénom différent (par exemple entre Albert Fabien et
    Albert Clément).

    Ce code me donne ça :

    Albert Fabien
    Albert Fabien
    Albert Fabien
    Albert Clément

    Ciota Jacques
    Ciota Jacques

    Debrube Robert



    Ce serait super si une personne pourrait m'aidé à modifier ce code.

    Je vous remercie,

    Fabien

  2. #2
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Bonjour à toi,

    Merci de baliser ton code !
    Je te propose ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub ins()
        Dim row As Range
        Dim curName As String, nextName As String
     
        For Each row In ActiveSheet.UsedRange.Columns(1).Cells
            If Not row.Value = vbNullString And Not row.Offset(1).Value = vbNullString Then
                curName = row.Value
                nextName = row.Offset(1).Value
     
                If nextName <> curName Then
                    row.Offset(1).EntireRow.Insert
                End If
            End If
        Next
    End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 117
    Par défaut
    Merci de ta rapidité.

    D'accord, je baliserais mes codes lors de mes prochains posts.

    J'ai oublié un détail lors de mon 1er post, j'ai plusieurs colonnes, et les nom+prénom se situent dans la colonne E.

    Mes données sont triées comme cela :

    Bxxxx 	MONSIED		xxxxx,59	Perso Mixte France	Albert Fabien
    Lxxxx 	MONSIEUR D	xxxxx,59	Perso Mixte  France	Albert Fabien
    Jxxxx 7	 MADAME		xxxxx,45	Perso Mixte UK		Albert Fabien	
    Dxxxx 	MADAMEE		xxxxxx,15	Perso Mixte Pea		Albert Florian				
    xxxx	MONSIE		xxxxx,9		Perso Mixte Pea		Ciota Jacques			
    Bxxxx 	MONSIEURD	xxxxxx,12	Perso Mixte Pea-PME	Ciota Jacques				
    xxxx	JACQUE		xxxxx,97	Perso France		Debrube Robert
    Mon objectif :

    Bxxxx 	MONSIEUR 			xxxxx,59	Perso Mixte France	Albert Fabien
    Lxxxx 	MONSIEUR 			xxxxx,59	Perso Mixte  France	Albert Fabien
    Jxxxx 7	 MADAME 			xxxxx,45	Perso Mixte UK		Albert Fabien
    		
    Dxxxx 	MADAME				xxxxxx,15	Perso Mixte Pea		Albert Florian
    				
    xxxx	MONSIEURT			xxxxx,9		Perso Mixte Pea		Ciota Jacques			
    Bxxxx 	MONSIEUR JEAN-JACQUES BERTRAND	xxxxxx,12	Perso Mixte Pea-PME	Ciota Jacques
    				
    xxxx	J				xxxxx,97	Perso France		Debrube Robert
    Je ne sais pas quoi rajouter à ton code pour arriver à mon but.

  4. #4
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Pas la peine non plus de répondre avec citation !

    Pour colonne E remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each row In ActiveSheet.UsedRange.Columns(1).Cells
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each row In ActiveSheet.UsedRange.Columns("E").Cells

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 117
    Par défaut
    @cerede2000

    Je te remercie pour ton aide ainsi que ta rapidité.
    Mon problème est résolu.

    Je me forme à VBA depuis le début du mois, donc j'ai énormément de lacune.

    A+ et encore merci !

  6. #6
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Pas de soucis
    Pense à sur les réponses qui te satisfont ça encourage

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 117
    Par défaut
    Excuse-moi de revenir vers toi.

    J’ai utilisé ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub ins()
        Dim row As Range
        Dim curName As String, nextName As String
     
        For Each row In ActiveSheet.UsedRange.Columns("E").Cells
            If Not row.Value = vbNullString And Not row.Offset(1).Value = vbNullString Then
                curName = Split(row.Value, " ")(0)
                nextName = Split(row.Offset(1).Value, " ")(0)
     
                If nextName <> curName Then
                    row.Offset(1).EntireRow.Insert
                End If
            End If
        Next
    End Sub
    Une ligne est bien sautée entre chaque nom+prénom cependant lorsque les noms sont identiques (alors que les prénoms sont différents), le saut de ligne ne s’effectue pas.

    Exemple :

    Lxxxx 		xxxxx SA	xxxxx,59	xxxxxx		Albert Fabien
    Lxxxx		xxxxx SA	xxxxx,59	xxxxxx		Albert Fabien
    
    B4597		xxxxx SA	xx984,97	xxxxxxxx	DE FRANCQUEVILLE Lucie
    L0268		xxxxx SA	xx0450,64	xxxxxxxx	DE FRANCQUEVILLE Lucie
    L6391		xxxxx SA	xx49581,58	xxxxxxxx	DE GAALON  Sébastien
    56579925	xxxxx SA	4xx61,6		xxxxxxxx	DECARRE André
    	
    55790525	xxxxx SA	xx023,18	xxxxxxxx	Fouxi Robert
    Mon objectif :

    Lxxxx		xxxxx SA	xxxxx,59	xxxxxx		Albert Fabien
    Lxxxx 		xxxxx SA	xxxxx,59	xxxxxx		Albert Fabien
    
    B4597		xxxxx SA	xx984,97	xxxxxxxx	DE FRANCQUEVILLE Lucie	
    L0268		xxxxx SA	xx0450,64	xxxxxxxx	DE FRANCQUEVILLE Lucie
    
    L6391		xxxxx SA	xx49581,58	xxxxxxxx	DE GAALON Sébastien
    		
    56579925	xxxxx SA	4xx61,6		xxxxxxxx	DECARRE André
    	
    55790525	xxxxx SA	xx023,18	xxxxxxxx	Fouxi Robert
    Merci de ton aide.

  8. #8
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    En fait j'ai déjà corrigé ce point

    Reprends le code de mon post #2

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 117
    Par défaut
    D'accord, j'ai essayé du coup avec le 1er code (lors de ton 2ème post) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub ins()
        Dim row As Range
        Dim curName As String, nextName As String
     
       For Each row In ActiveSheet.UsedRange.Columns(1).Cells
            If Not row.Value = vbNullString And Not row.Offset(1).Value = vbNullString Then
                curName = Split(row.Value, " ")(0)
                nextName = Split(row.Offset(1).Value, " ")(0)
     
                If nextName <> curName Then
                    row.Offset(1).EntireRow.Insert
                End If
            End If
        Next
    End Sub
    mais du coup une ligne est sautée après chaque nom :

    Par exemple : ça va de la Colonne A,B,C,D à E (Colonne E : où sont écrit les nom+prénom)

    Lxxxx		xxxxx 	xxxxx   xxxxxx		Albert Fabien
    
    Lxxxx		xxxxx 	xxxxx   xxxxxx		Albert Fabien
    
    B4597		xxxxx 	xxxxxx	xxxxxxxx	DE FRANCQUEVILLE Lucie
    
    L0268		xxxxx 	xxxxxx	xxxxxxxx	DE FRANCQUEVILLE Lucie
    
    L6391		xxxxx	xxxxxxx	xxxxxxxx	DE GAALON Sébastien
    	
    56579925	xxxxx 	xxxxxx	xxxxxxxx	DECARRE André
    
    55790525	xxxxx 	xxxxxxx	xxxxxxxx	Fouxi Robert
    Du coup le tri que je souhaite n'est pas atteint : ça va de la Colonne A,B,C,D à E (Colonne E : où sont écrit les nom+prénom)

    Lxxxx		xxxxx 	xxxxx	xxxxxx		Albert Fabien
    Lxxxx		xxxxx 	xxxxx	xxxxxx		Albert Fabien
    
    B4597		xxxxx 	xxxxxx	xxxxxxxx	DE FRANCQUEVILLE Lucie	
    L0268		xxxxx 	xxxxxxx	xxxxxxxx	DE FRANCQUEVILLE Lucie
    
    L6391		xxxxx	xxxxxx	xxxxxxxx	DE GAALON Sébastien
    
    56579925	xxxxx 	xxxxxx	xxxxxxxx	DECARRE André
    
    55790525	xxxxx	xxxxxx	xxxxxxxx	Fouxi Robert

  10. #10
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Tu à oublié de modifier la colonne !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each row In ActiveSheet.UsedRange.Columns(1).Cells
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each row In ActiveSheet.UsedRange.Columns("E").Cells
    Donc c'est normal......
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub ins()
        Dim row As Range
        Dim curName As String, nextName As String
     
        For Each row In ActiveSheet.UsedRange.Columns("E").Cells
            If Not row.Value = vbNullString And Not row.Offset(1).Value = vbNullString Then
                curName = row.Value
                nextName = row.Offset(1).Value
     
                If nextName <> curName Then
                    row.Offset(1).EntireRow.Insert
                End If
            End If
        Next
    End Sub

  11. #11
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 117
    Par défaut
    Merci cerede2000. Je tiens de tester, tout marche.

    sur tes réponses !

    A bientôt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Saut de ligne après avoir écris la ligne
    Par dada4444 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 28/05/2009, 16h38
  2. Enlever les sauts de ligne apres un strip_tags
    Par Cdic83 dans le forum Langage
    Réponses: 1
    Dernier message: 15/04/2009, 12h06
  3. [CKEditor] Ajout automatique de saut de ligne après enregistrement
    Par janclod dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 23/12/2008, 22h14
  4. [2.2.2] Saut de ligne après un Text
    Par imhotep_zr7s dans le forum BIRT
    Réponses: 13
    Dernier message: 06/08/2008, 15h36
  5. [DOM] Problème de suppression sauts de lignes après modification XML
    Par chabada dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 15/06/2005, 13h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo