Insèrer une ligne en fonction de la valeur d'une colonne

Bonjour à tous,

J'ai une base de donnée et j'aimerai séparer en fonction de la valeur d'une colonne le bloc. J'ai fais une marco pour inserer des lignes mais je ne sais pas pourquoi elle ne marche pas.

Dans mon exemple la colone E prends les valeur A,B,C. J'aimerai qu'à la derniere valeur "A" la marco insere deux lignes.

Sub test()

Dim c As Range
 Range("e2").Select
 For Each c In Columns(5).Cells

    If ActiveCell = "b" Then
    ActiveCell.EntireRow.Select
     Selection.Insert Shift:=xlDown
     Selection.Insert Shift:=xlDown
    End If
  Next c

    End Sub

Merci encore de votre aide

Bonjour,

j'ai modifié ton programme et à présent ça fonctionne comme tu le souhaites :

Bonjour le fil, le forum,

Je n'ai pas compris la même chose qu'Ausecour... Je te propose :

Sub test()
Dim DL As Integer
Dim c As Range

Application.ScreenUpdating = False
DL = Cells(Application.Rows.Count, 5).End(xlUp).Row
For I = DL To 1 Step -1
    If Cells(I, 5).Value = "b" Then
        Rows(I).Insert Shift:=xlDown
    End If
Next I
End Sub

Bonjour le fil, le forum,

Je n'ai pas compris la même chose qu'Ausecour... Je te propose :

Sub test()
Dim DL As Integer
Dim c As Range

Application.ScreenUpdating = False
DL = Cells(Application.Rows.Count, 5).End(xlUp).Row
For I = DL To 1 Step -1
    If Cells(I, 5).Value = "b" Then
        Rows(I).Insert Shift:=xlDown
    End If
Next I
End Sub

En effet... Moi je mets deux lignes à chaque fois qu'il y a un changement de valeur, apparemment la personne veut insérer deux lignes pile après la dernière valeur A de la colonne, je propose aussi un autre code du coup :

Sub test()

'Initialisation variables
valeur = Range("e1")
der_lig = Range("e" & Rows.Count).End(xlUp).Row

On Error Resume Next
lig_insertion = Range("e1:e21").Find("a", searchdirection:=xlPrevious).Row + 1

If lig_insertion = "" Then
    MsgBox ("Nous n'avons pas trouvé la valeur souhaitée, nous ne pouvons donc pas insérer de lignes.")
    Exit Sub
End If

'Insertion de 2 lignes
For j = 1 To 2
    Cells(lig_insertion, 5).EntireRow.Insert (xlDown)
Next j

End Sub

Le fichier :

Hello Ausecour,

C'est parfait, quand je vois le niveau qui nous sépare j'ai peur !

Hello ThauThème,

J'ai dû mal m'exprimer, désoler je voulais bien ce que Ausecour a fait.

Merci à vous deux !

Je voulais bien ce que tu as fait lors de ton premier fichier, désole de pas avoir répondu directement je testais certaines choses sur ton fichier,

Merci encore.

Bonjour,

Pas de soucis, c'est pour ça que c'est pratique de communiquer via un forum sur internet, c'est rapide, donc tu peux réexpliquer rapidement pas besoin d'attendre 1 mois entre chaque réponse

Bonne journée

Bonjour

Bonjour à tous

Une variante à tester.

Bye !

Merci gmb,

Ton code est un peu trop dur pour ma compréhension actuelle mais je vais l'étudier et j'en apprendrai plus sur VBA!

Si l'uns de vous aurez encore un peu de temps pour m'aider,

J'aurais encore besoin de ton aide, j'aimerais faire une somme automatique du bloc en colonne F, en regardant un peu sur internet comment faire une somme automatique, j'ai adapté la marco de Ausecour cependant il ne fait pas de somme automatique (j'ai mis mes options en R1C1 mais il ne copie pas le bloc, il copie toute la colone), auriez-vous une solution ?

(Si ce n'est pas possible je le ferais à la main)

Merci encore de votre aide

Rebonjour,

Voici une proposition, je n'ai pas vérifié le résultat (la valeur) :

Encore merci Ausecour pour ton aide,

Je me suis encore mal exprimer (je suis nul pour ça apparemment) j'aimerai avoir la somme pour chaque colonne indépendamment, je te remets un exemple de ce que je souhaiterai (je n'ai pas modifier la Marco cette fois)

Merci beaucoup de ton aide Ausecours !!

Have a nice day !

Pas de problème, voici le résultat voulu avec la mise en forme qui va bien :

Ma variante remise à jour, avec formules.

Bye !

Rechercher des sujets similaires à "inserer ligne fonction valeur colonne"