XL 2013 Comment insérer une ligne vide à chaque changement de valeur sur la colonne A

nacho31

XLDnaute Nouveau
Bonjour à tous, meilleur vœux,

Je suis à la recherche d'une petite macro VBA me permettant d'insérer une ligne vide à chaque changement de valeur sur la colonne A svp

Exemple si j'ai une série de ce type sur la colonne A :

1016080888
1016080888
1016080909
1016080915
1016080915
1016080915

J'aimerais obtenir ceci (une ligne vide qui ce créé entre chaque changement de valeur automatiquement) :

1016080888
1016080888

1016080909

1016080915
1016080915
1016080915

Et j'aimerais que la macro s'applique automatiquement à l'ouverture du fichier, pouvez vous m'aider svp

Merci d'avance

Nacho
 

vgendron

XLDnaute Barbatruc
Bonjour

une règle de base lorsqu'on insère ou supprime des lignes, il faut partir d'en bas pour remonter..

donc
faire une boucle de la dernière ligne à la première ligne
si la valeur de la ligne est différente de la valeur de la ligne suivante
alors, on ajoute une ligne
sinon.. bah rien. on continue de remonter
 

nacho31

XLDnaute Nouveau
Bonjour

une règle de base lorsqu'on insère ou supprime des lignes, il faut partir d'en bas pour remonter..

donc
faire une boucle de la dernière ligne à la première ligne
si la valeur de la ligne est différente de la valeur de la ligne suivante
alors, on ajoute une ligne
sinon.. bah rien. on continue de remonter
Bonjour, je ne souhaite pas ajouter manuellement des nouvelles lignes entre les valeurs différentes, je souhaite que Excel le fasse automatiquement à chaque changement de valeur, c'est pour cela que je ne comprends pas votre réponse.
Cordialement
 

nacho31

XLDnaute Nouveau
Bonjour à tous

Automatiquement veux dire coder en VBA et la réponse de vgendron explique comment le faire
Bonjour Chris
Je n'ai pas compris la réponse de Vgendron car je n'y connais rien en macro et VBA, ce que je souhaite si possible c'est qu'on me créé la macro pour mon cas svp, je ne sais pas le faire seul sinon je l'aurais fait

Par exemple :

VB:
Sub Essai()
    Application.ScreenUpdating = False
    Dim Ligne As Long
    For Ligne = Range("A65536").End(xlUp).Row To 2 Step -1
        If Range("A" & Ligne) <> Range("A" & Ligne - 1) Then
            Range("A" & Ligne).EntireRow.Insert
        End If
    Next
    Application.ScreenUpdating = False
End Sub

Cependant ce code ne correspond pas par rapport à ma demande donc j'aimerais qu'on me créé un code qui correspond à ma demande c'est à dire une nouvelle ligne vide qui ce créé entre chaque changement de valeur sur la colonne A svp

Cordialement
 

chris

XLDnaute Barbatruc
RE

Pas de MP non sollicité, merci

Ce code fonctionne sous réserve que l'on teste si Range("A" & Ligne - 1) et Range("A" & Ligne) ne sont pas vides afin de ne pas doubler les lignes vides

Pour une éxécution à l'ouverture il faut placer le code dans le Private Sub Workbook_Open() du module ThisWorkBook
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Nacho, Chris, Vgendron,
Un essai en PJ avec :
VB:
Private Sub Workbook_Open()
    Application.ScreenUpdating = False: Dim L%
    With Sheets("Feuil1")
        For L = Range("A65536").End(xlUp).Row To 2 Step -1
            If Cells(L, 1) <> "" And Cells(L - 1, 1) <> "" Then
                If Cells(L, 1) <> Cells(L - 1, 1) Then Cells(L, 1).EntireRow.Insert
            End If
        Next
    End With
End Sub
Sheets("Feuil1") doit être modifié en fonction de la feuille à traiter.
 

Pièces jointes

  • Nacho.xlsm
    13.6 KB · Affichages: 11

nacho31

XLDnaute Nouveau
Re,
Il suffit de rajouter :
VB:
Cells(L, 1).Interior.Color = RGB(200, 200, 200)
Pour changer de couleur, il suffit de modifier les paramètres R G B.
Re

Si je rajoute du texte dans la colonne B, C, etc, je vois que la seul case grisé est sur la colonne A comment je fais pour que la ligne entière vide ou du moins jusqu'au texte soit grisé aussi stp

Exemple ci joint
 

Pièces jointes

  • Nacho V2 (1).xlsm
    16.3 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re bonsoir,
Il va y avoir beaucoup de va et vient ? Juste pour savoir.
Vous ne pourriez pas exprimer votre besoin d'un seul coup au premier post ?
Il suffit de faire :
VB:
Effacement des couleurs
.Cells.Interior.Color = xlNone
Toute la ligne vide en gris
Rows(L).Interior.Color = RGB(200, 200, 200)
 

Pièces jointes

  • Nacho V3.xlsm
    14.5 KB · Affichages: 8

chris

XLDnaute Barbatruc
Bonjour
Il va y avoir beaucoup de va et vient ? Juste pour savoir.
Vous ne pourriez pas exprimer votre besoin d'un seul coup au premier post ?
C'est tellement plus simple de venir faire son marché sans chercher à comprendre et progresser

Quand on pense que nombre d'aidants ici on appris sur le tas, à une époque sans forum internet... et sont arrivés à un très haut niveau de maîtrise...
 

nacho31

XLDnaute Nouveau
Re bonsoir,
Il va y avoir beaucoup de va et vient ? Juste pour savoir.
Vous ne pourriez pas exprimer votre besoin d'un seul coup au premier post ?
Il suffit de faire :
VB:
Effacement des couleurs
.Cells.Interior.Color = xlNone
Toute la ligne vide en gris
Rows(L).Interior.Color = RGB(200, 200, 200)
Re Bonsoir
Désolé mais je ne te demande pas ça pour t'embêté, si je pouvais me débrouillé tout seul en ayant les connaissances je le ferais, mon entreprise m'a demander d'accomplir une taches auquel je ne suis pas qualifié pour, j'essaye tout de même de pouvoir accomplir ce travail malgré mes lacunes en demandant de l'aide effectivement et en essayant de comprendre au passage la solution qu'on me présente mais je n'y connais rien du tout en macro vba codage etc, à chaque fois que tu m'apporte une solution je la présente à mon entreprise mais il m'en demande toujours plus c'est pour cela que je reviens vers toi, désolé pour les va et vient
Merci pour ton aide
Bonne soirée
 

Discussions similaires