comparaison de lignes

Evelynetfrancois

XLDnaute Impliqué
BONSOIR a tous !!!
j ai un soucis de comparaison de ligne

a ce niveau je compare les celulles de la col B et si il y a difference j ajoute une ligne vide de separation

depart = Range("B3").Value
For Each cell In Range("a4", Range("A65536").End(xlUp).Offset(1, 0))
If Not cell.Value = depart Then
Rows(cell.Row).Insert Shift:=xlDown
depart = cell.Value

est il possible de comparer non pas une seule celulle de la ligne mais , soit la ligne complete .......ou bien 2 celulles de la ligne (Bet E)

et donc si il y a une dif ..rajouter une ligne vide de separation comme ci dessus ( dans ma macro)


je vous remercie d avance pour tout !!!

bonne soirée

E et F
 

JNP

XLDnaute Barbatruc
Re : comparaison de lignes

Bonsoir Evelynetfrançois :),
Remonter depuis le bas du tableau en faisant des insertions me parait dangereux. Je partirais plutôt du haut en faisant les comparaisons tant que B n'est pas vide, style :
Code:
Dim I As Integer
I = 1
Do While Cells(I, 2) <> "" And Cells(I + 1, 2) <> ""
If Cells(I, 2) <> Cells(I + 1, 2) And Cells(I, 5) <> _
    Cells(I + 1, 5) And Cells(I, 2) <> "" Then
        Rows(I + 1).Insert Shift:=xlUp
        I = I + 1
End If
I = I + 1
Loop
J'ai prévu que la macro puisses être passée plusieurs fois, elle ne s'arrêtera pas sur les lignes blanches.
Bonne soirée :cool:
 

Evelynetfrancois

XLDnaute Impliqué
Re : comparaison de lignes

BONSOIR JNP merci pour ton aide !!

je comprend bien ta macro
mais j avoue avoir du mal a l integrer a mon code (ici un peu plus complet)



Private Sub CommandButton3_Click() 'Sous totaux COMMANDES
Dim cell As Range
Dim depart As String
Dim vide As Integer
Dim vRowA As Integer
Dim vRowB As Integer

Range("A4:F1500").Select
Selection.Interior.ColorIndex = xlNone ' je nettoye tout

Range("A4:F1500").Sort Key1:=Range("E4"), Order1:=xlAscending, Key2:=Range("B4" _
), Order2:=xlAscending, Key3:=Range("F4"), Order3:=xlAscending, Header _
:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom _
, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
xlSortNormal ' j ai trié

c'est dans cette partie que je souhaite tester la col B et E
je ne peux mettre qu un for next !!!dommage


vide = 3
depart = Range("B3").Value
For Each cell In Range("a4", Range("A65536").End(xlUp).Offset(1, 0))
If Rows(cell.Row).Hidden = False Then
If Not cell.Value = depart Then
Rows(cell.Row).Insert Shift:=xlDown
depart = cell.Value


' ensuite je fais les sous totaux et la mise en forme dans chaque ligne ajoutée
If cell.Row > 5 Then
vRowA = cell.Row - 2
vRowB = cell.Row - 1
Range("D" & vRowB).Formula = "=SUM(D" & vide & ":D" & vRowA & ")"
Range("A" & vRowB).Value = Range("A" & vRowB).Offset(-1, 0).Value
Range("B" & vRowB).Value = Range("B" & vRowB).Offset(-1, 0).Value
Range("E" & vRowB).Value = Range("E" & vRowB).Offset(-1, 0).Value
Range("F" & vRowB).Value = Range("F" & vRowB).Offset(-1, 0).Value
End If
vide = cell.Row
depart = cell.Value
End If
End If
Next



bonne soirée et encore merci pour toutes vos idées !!si precieuses

E et F
 

JNP

XLDnaute Barbatruc
Re : comparaison de lignes

Bonjour Evelyne et François :),
Le problème est de conserver la première ligne en mémoire
Code:
Dim I As Integer[COLOR=red], J as Integer[/COLOR]
I = 1
Do While Cells(I, 2) <> "" And Cells(I + 1, 2) <> ""
If Cells(I, 2) <> Cells(I + 1, 2) And Cells(I, 5) <> _
    Cells(I + 1, 5) And Cells(I, 2) <> "" Then
        Rows(I + 1).Insert Shift:=xlUp
        ' [COLOR=blue]Ici, tu mets tes sous totaux en ligne I+1, sachant la première[/COLOR]
[COLOR=blue]        ligne est J et la dernière I[/COLOR]
        [COLOR=red]J = I + 2[/COLOR]
        I = I + 1
End If
I = I + 1
Loop
Ça devrait fonctionner. Je suis désolé, mais il faut que je me rapproche de toi pour la journée (Houdemont...). Tiens moi au courant.
Bonne journée :cool:
 

Evelynetfrancois

XLDnaute Impliqué
Re : comparaison de lignes

Bonsoir JNP.............merci !!

Bon, j ai pris le problème dans presque tous les sens, sans aboutir !!!

J’ai donc contourner mon problème et trouver une autre soluce mais ce serait trop compliqué à expliquer ...

Ta macro m'a bien aider à avancer dans mon projet et même si je ne l ai pas utilisé je ne l’a mets évidement pas en cause lol !!

Au plaisir de te lire à nouveau ou de te croiser dans la région
En fait je suis de St max

Merci pour tout le temps que tu m'as accordé

Bonne soirée
E et F
 

Discussions similaires

Réponses
21
Affichages
485
Réponses
0
Affichages
196

Statistiques des forums

Discussions
312 789
Messages
2 092 119
Membres
105 218
dernier inscrit
erunsemur