Insertion d'une nouvelle ligne au milieu d'autres Ligne

vacknov

XLDnaute Nouveau
Bonjour à Tous;

La colonne H contient les valeurs suivantes :
A
A
A
B
B
B
C
C
C
D
D
D
Mon programme doit inserer une nouvelle ligne après le dernier A, le dernier B et le dernier D.
Code:
Sub test()
Dim valeur As String
Dim i As Integer
Dim j As Integer
Dim p As Integer
 
Do 
' la premère contient le titre de la colonne d'ou un pas de : 2+p
' il s'agit de la colonne 8 d'ou Cells(2 + p, 8).
valeur = Worksheets("Feuil1").Cells(2 + p, 8).value
 
 
if Worksheets("Feuil1").Cells(3 + p, 8).value <> valeur then
'insertion de la nouvelle
i=3 + p
j=8
Worksheets("Feuil1").Rows(j & ":" & t).Select
 Selection.Insert Shift:=xlDown
End If
p=p+1
Loop while response=0
 
End sub

Ce dernier insère plusieurs Lignes à la fin des valeurs A.


Merci
 

matthieu33

XLDnaute Occasionnel
Re : Insertion d'une nouvelle ligne au milieu d'autres Ligne

Bonjour Vacknov,

Voici une solution :

Code:
Sub test()
    Dim valeur As String
    Dim lgLig As Long
    
    ' Récupération de la valeur de la dernière ligne en colonne H
    valeur = Cells(Cells(Cells.Rows.Count, 8).End(xlUp).Row, 8).Value
    
    ' Si la dernière ligne n'est le titre, effectuer le traitement
    If Cells(Cells.Rows.Count, 8).End(xlUp).Row > 2 Then
        ' Boucle de la dernière ligne à la deuxième ligne
        For lgLig = Cells(Cells.Rows.Count, 8).End(xlUp).Row To 2 Step -1
            ' Si la valeur n'est pas identique
            If Worksheets("Feuil1").Cells(lgLig, 8).Value <> valeur Then
                ' Sélectionner la ligne en dessous
                Worksheets("Feuil1").Cells(lgLig + 1, 8).Select
                ' Ajouter une ligne
                Selection.Insert Shift:=xlDown
                ' Sélectionner la ligne courante
                Worksheets("Feuil1").Cells(lgLig, 8).Select
                ' Récupération de la nouvelle valeur
                valeur = Worksheets("Feuil1").Cells(lgLig - 1, 8).Value
            End If
        Next lgLig
    End If
End Sub

@+
 

Banzai64

XLDnaute Accro
Re : Insertion d'une nouvelle ligne au milieu d'autres Ligne

bonjour

Une autre méthode

Code:
Sub test()
Dim i As Long
For i = Range("H65536").End(xlUp).Row To 3 Step -1
If Cells(i - 1, 8) <> Cells(i, 8) Then
ActiveSheet.Rows(i).Insert shift:=xlDown
End If
Next i
End Sub

Merci skoobi
 
Dernière édition:

Banzai64

XLDnaute Accro
Re : Insertion d'une nouvelle ligne au milieu d'autres Ligne

re

faut mettre les référence à la feuille traitée

essayes

Code:
Sub test()
Dim i As Long
With Sheets("Feuil2")
For i = .Range("H65536").End(xlUp).Row To 3 Step -1
If .Cells(i - 1, 8) <> .Cells(i, 8) Then
.Rows(i).Insert shift:=xlDown
End If
Next i
End With
End Sub
 

vacknov

XLDnaute Nouveau
Re : Insertion d'une nouvelle ligne au milieu d'autres Ligne

ça marche.

Juste pour savoir:

Cette Boucle, elle lit toutes les cellules de la colonne H ou juste les cellules nom remplies ?

For i = .Range("H65536").End(xlUp).Row To 3 Step -1


Next i
 

vacknov

XLDnaute Nouveau
Re : Insertion d'une nouvelle ligne au milieu d'autres Ligne

si on veut faire le sens inverse.
case jusqu' a la dernière non vide.

Parceque dans mon cas lorsque les valeurs en H sont identiques je cumule le contenu des autres cellules F et G par exemple; une fois la valeurs suivantes differentes: J'insère une nouvelle ligne et j'écris les totaux. pour chaque groupe de valeur : Total A =XXXX.

à la fin de la je dois également reporter la somme de tous les totaux:

Total Global= Total A + Tatal B .... pour calculer la moyenne.
 

vacknov

XLDnaute Nouveau
Re : Insertion d'une nouvelle ligne au milieu d'autres Ligne

Normalement je dois avoir :
A
A
A
Tot A
B
B
B
Tot B
C
C
C
Tot C
D
D
D
Tot D

Total general.

Avec le code actuel j'ai :

Total general.
Tot A
A
A
A
Tot B
B
B
B
Tot C
C
C
C
Tot D
D
D
D

pourquoi ? : pour la simple raison que la boucle commence en bas.

Es ce possible de faire la même chose en commençant le taitement de la boucle par la ligne 2 vers Worksheets("Feuil1").Range("H65536").End(xlUp).Row ?
 

Statistiques des forums

Discussions
312 198
Messages
2 086 146
Membres
103 130
dernier inscrit
FRCRUNGR