Suppression de ligne en double sur 2 tableaux
Fermé
Fitz_Chev
-
8 oct. 2015 à 17:09
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 11 oct. 2015 à 09:47
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 11 oct. 2015 à 09:47
A voir également:
- Suppression de ligne en double sur 2 tableaux
- Double ecran - Guide
- Whatsapp double sim - Guide
- Site de vente en ligne particulier - Guide
- Forcer suppression fichier - Guide
- Partage de photos en ligne - Guide
3 réponses
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
Modifié par Kuartz le 9/10/2015 à 14:31
Modifié par Kuartz le 9/10/2015 à 14:31
Bonjour,
Le code :
Le fichier modifié (il ne reste qu'à cliquer sur le bouton) :
https://www.cjoint.com/c/EJjmFH18W7f
Cordialement.
Le code :
Sub COMPARATIF() Dim O1 As Worksheet Dim O2 As Worksheet Dim TC1 As Variant Dim TC2 As Variant Dim i As Long Dim J As Long Dim TEST As Boolean Dim DEST As Range Dim TL() As Variant Dim T1 As String Dim T2 As String Dim K As Long Set O1 = Sheets(1) Set O2 = Sheets(2) Set O3 = Sheets(3) x = 1 TC1 = O1.Range("A2:L" & O1.Cells(Application.Rows.Count, 1).End(xlUp).Row) TC2 = O2.Range("A2:L" & O2.Cells(Application.Rows.Count, 1).End(xlUp).Row) For i = 2 To UBound(TC1, 1) TEST = False T1 = CStr(TC1(i, 1)) & "/" & CStr(TC1(i, 2)) & "/" & CStr(TC1(i, 3)) & "/" & CStr(TC1(i, 4)) & "/" & CStr(TC1(i, 5)) & "/" & CStr(TC1(i, 6)) & "/" & CStr(TC1(i, 7)) & "/" & CStr(TC1(i, 8)) & "/" & CStr(TC1(i, 9)) & "/" & CStr(TC1(i, 10)) & "/" & CStr(TC1(i, 11)) & "/" & CStr(TC1(i, 12)) For J = 2 To UBound(TC2, 1) T2 = CStr(TC2(J, 1)) & "/" & CStr(TC2(J, 2)) & "/" & CStr(TC2(J, 3)) & "/" & CStr(TC2(J, 4)) & "/" & CStr(TC2(J, 5)) & "/" & CStr(TC2(J, 6)) & "/" & CStr(TC2(J, 7)) & "/" & CStr(TC2(J, 8)) & "/" & CStr(TC2(J, 9)) & "/" & CStr(TC2(J, 10)) & "/" & CStr(TC2(J, 11)) & "/" & CStr(TC2(J, 12)) If T1 = T2 Then TEST = True: Exit For Next J If TEST = False Then x = x + 1 For K = 1 To 12 Sheets(1).Cells(i, K).Copy Sheets(3).Cells(x, K) Next K End If Next i End Sub
Le fichier modifié (il ne reste qu'à cliquer sur le bouton) :
https://www.cjoint.com/c/EJjmFH18W7f
Cordialement.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
9 oct. 2015 à 15:16
9 oct. 2015 à 15:16
Bonjour,
Afin d'éviter de se précipiter pour répondre à tout prix et fournir une usine à gaz si possible:
quelle la colonne de l'identifiant unique de l'opération:? n° de police , code lien , ou....?
Afin d'éviter de se précipiter pour répondre à tout prix et fournir une usine à gaz si possible:
quelle la colonne de l'identifiant unique de l'opération:? n° de police , code lien , ou....?
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
>
Fitz_Chev
9 oct. 2015 à 15:48
9 oct. 2015 à 15:48
Ce que je ne comprend est que on retrouve dans la différence des N° de police 2346 et 2348 présents dans N et N+1, le seul unique que je vois est le 2350...
peut-être tenir compte du changement sur 2 lignes dans les colonnes >G et conserver la 2° ligne ???
peut-être tenir compte du changement sur 2 lignes dans les colonnes >G et conserver la 2° ligne ???
Fitz_Chev
>
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
9 oct. 2015 à 16:13
9 oct. 2015 à 16:13
Je ne comprends pas ce que vous voulez me dire, cependant je vais essayer d'être plus claire dans mon explication. En fait pour le contrat 2348 par exemple, même si le numéro de contrat est unique, il peut y avoir deux lignes, car la 1ere est la commission payée par mon client par exemple au mois de mars, cependant, pour X raisons, au mois de mai, le contrat est annulé ou résilié, donc mon client me dé-commissionne sur ce contrat d'où les 2 lignes avec + et -, et malheureusement, la date comptable ne change pas car c'est la date de la vente. Pour le 2346, il y a eu un versement complémentaire ou une augmentation des versements (ce sont des produits d'assurance), d'où ma seconde, car mon client me commissionne plus vu que le contrat rapporte plus.
Et c'est de là que viens mon problème, c'est que c'est trié par date du contrat.
Je sais pas si j'ai été suffisamment clair, sinon n'hésitez pas à me poser des questions pour éclaircir.
Merci beaucoup en tout cas
Et c'est de là que viens mon problème, c'est que c'est trié par date du contrat.
Je sais pas si j'ai été suffisamment clair, sinon n'hésitez pas à me poser des questions pour éclaircir.
Merci beaucoup en tout cas
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
9 oct. 2015 à 15:37
9 oct. 2015 à 15:37
J'ai fait avec les données que j'avais. Pour comparer les lignes, j'ai juste repris toutes les colonnes.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
>
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
9 oct. 2015 à 17:14
9 oct. 2015 à 17:14
Donc on garde la 2° ligne dans différence...
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
Modifié par michel_m le 11/10/2015 à 09:51
Modifié par michel_m le 11/10/2015 à 09:51
Bonjour
ci joint proposition
le bouton de déclenchement peut être dans n'importe quelle feuille
j'ai considéré que le nombre de lignes était important pour choisir une méthode rapide (mais peut-être + compliquée)
http://www.cjoint.com/c/EJlhTXLK8vI
Le code pour mémoire
Michel
ci joint proposition
le bouton de déclenchement peut être dans n'importe quelle feuille
j'ai considéré que le nombre de lignes était important pour choisir une méthode rapide (mais peut-être + compliquée)
http://www.cjoint.com/c/EJlhTXLK8vI
Le code pour mémoire
Option Explicit
Option Base 1
'-------
Sub indiquer_différences()
Dim Derlig As Integer, T_in, D_in As Object, Cptr As Integer, Ref As String
Dim T_in1, T_out, Cpx As Integer, Col As Byte
Application.ScreenUpdating = False 'fige l'écran: confort et rapidité
'-----------------------------nettoyage
Sheets("différence").Range("A2:L10000").Clear
'-----------------------------mémorisation feuille N en Ram
With Sheets("Tableau N")
Derlig = .Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
T_in = .Range("D2:G" & Derlig)
'concaténation police & cotisation dans une collection (dictionary)
Set D_in = CreateObject("scripting.dictionary")
For Cptr = 1 To UBound(T_in)
Ref = T_in(Cptr, 1) & " " & T_in(Cptr, 4)
If Not D_in.exists(Ref) Then: D_in.Add Ref, ""
Next
End With
'--------------------------comparaison de la collection avec concaténation _
police & cotisatin dans feuille n+1
With Sheets("Tableau N+1")
ReDim T_out(12, 1) 'mémorisation en Ram
Derlig = .Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
T_in1 = .Range("A2:L" & Derlig)
For Cptr = 1 To UBound(T_in1)
Ref = T_in1(Cptr, 4) & " " & T_in1(Cptr, 7)
'si la concaténation feuille n=1 n'existe pas dans la collection feuil n
If Not D_in.exists(Ref) Then
Cpx = Cpx + 1
' inscription des données colonne a à L feuille n+1 dans _
variables tableau dynamique
ReDim Preserve T_out(12, Cpx)
For Col = 1 To 12
T_out(Col, Cpx) = T_in1(Cptr, Col)
Next
End If
Next
End With
'-----------------------------------------restitution
With Sheets("Différence")
.Range("A2").Resize(Cpx, 12) = Application.Transpose(T_out)
With .Range("A2:L" & Cpx + 1)
.Borders.Weight = xlThin 'quadrillage
.Font.Name = "Verdana" 'police
.Font.Size = 8
End With
.Activate
End With
End Sub
Michel