Microsoft 365 MACRO VBA ANNULATION LIGNE POSITIVE ET NEGATIVE (= à 0)

chacha78

XLDnaute Nouveau
Bonjour à tous,
Je suis nouvelle sur votre site et j'aurais besoin de votre aide.
Pour un besoin de contrôle de gestion, j'aurais besoin d'une macro qui pourrais :
1/ 1 procédure qui annulerai le même montant positif et négatif qui s'annulent (sur la même référence = colonne G)
2/ 1 autre procédure : sur la même référence, s'il existe une ligne avec Type pièce (colonne A) =KR et une autre ligne avec S1 (même s'il la somme est différent de 0) alors supprimer ces 2 lignes.
KR=une facture dont le montant est toujours positif
S1= une correction donc montant négatif
Je ne sais pas si c'est clair pour vous. je vous remercie par avance pour votre aide.

Ci-dessous : ma procédure qui annule les lignes dont la somme est égale à 0 sur une même référence (mais malheureusement elle n'efface pas tout)
Sub Control()
Dim L As Long, I As Long, DerLig As Long
Dim Diff As Boolean
Dim Total As Double
Dim Ref As String
Application.ScreenUpdating = False
DerLig = Range("A" & Rows.Count).End(xlUp).Row
L = DerLig - 1
For I = DerLig To 2 Step -1
Ref = Cells(I, "G")
Total = Cells(I, "H")
L = I - 1
Diff = False
Do While Cells(L, "G") = Ref
Diff = True
Total = Total + Cells(L, "H")
L = L - 1
Loop
If Diff = True And Cells(L + 1, "G") = Ref And Total = 0 Then
Range(Cells(I, "A"), Cells(L + 1, "Z")).Delete
I = L + 1
End If
Next I
End Sub
 

Pièces jointes

  • fichier données.xlsx
    47.9 KB · Affichages: 13

JHA

XLDnaute Barbatruc
Bonjour à tous,

Je pense que cela peut être fait avec Power Query mais pas essayé.

J'ai fait une première approche à la main, résultat à vérifier.

Point 1
Ajout d'une colonne après la colonne "G" (nommé "Double")
Recopie des valeurs de "Val.variable/dev.état" en positif (=abs(cellule))
mise en mode tableau du fichier
donnée/supprimer les doublons des colonnes "Affectation corrigée" & "Double"

Point 2
Insérer une colonne après "Ty.pce"
mettre une formule pour trouver les "S1" et "KR" ayant la même "Affectation corrigée"
VB:
=ESTNUM(EQUIV(SI([@[Ty.pce]]="S1";"KR";"S1")&[@[Affectation corrigée]];[Ty.pce]&[Affectation corrigée];0))
Filtrer les "vrai" et les supprimer

Supprimer les 2 colonnes supplémentaires.


Pour info, il y a une valeur "KG" au lieu de "KR"

JHA
 

Pièces jointes

  • fichier données.xlsx
    42.5 KB · Affichages: 2

Discussions similaires

Réponses
7
Affichages
312
Réponses
0
Affichages
133
Réponses
1
Affichages
159

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 813
dernier inscrit
kaiyi