Formule faisant apparaître les montants qui s'annulent
Bonjour Mesdames, Messieurs,
Je dois nettoyer des comptes et pour se faire je dois faire apparaître les montant qui s'annulent et je souhaiterai gagner du temps lorsqu'il y a des centaines voire des milliers de montants.
Dans le fichier suivant:
Vous trouverez donc des montants exemples en vert et en jaune qui doivent apparaître grâce à la formule ou à la VBA.
52 930 et -52 930 par exemple.
Là ou cela se corse c'est être en mesure de faire apparaître plusieurs montants qui en annulent un seul ou plusieurs.
Exemple 50 000 serait annulé par -20 000 -5 000 -12 000 et -13 000 ou encore 23 000 et 1 550 seraient annulé par -20 000 -1 300 -2 250.
Si ce dernier point être trop compliqué ou trop chronophage à élaborer simplement être en mesure de repérer les montants équivalents mais inverses m'aiderait déjà beaucoup.
Merci pour votre temps.
Bien cordialement,
Bonjour,
une solution via macro pour la recherche du montant de signe contraire. pour l'autre demande, faire correspondre n'importe quelle somme avec n'importe quelle autre somme nous emmène, je crois, dans une exploration combinatoire qu'il faudra des siècles à examiner dès qu'il y a plus de 30 valeurs
Option Explicit
Sub aargh()
Dim dl&, i&, v, fa$, re As Range
With Sheets("feuil1")
dl = .Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To dl - 1
If .Cells(i, 2) = "" Then
v = -.Cells(i, 1)
Set re = .Cells(i + 1, 1).Resize(dl - i).Find(v, lookat:=xlWhole)
If Not re Is Nothing Then
fa = re.Address
Do
If re.Offset(, 1) = "" Then
re.Offset(, 1) = i
Cells(i, 2) = re.Row
Exit Do
Else
Set re = .Cells(i + 1, 1).Resize(dl - i).FindNext(re)
End If
Loop Until re.Address = fa
End If
End If
Next i
End With
End Sub
lancer la macro ave alt-f8, les montants qui s'annulent, ont en colonne 2, le n° de ligne du montant qui forme la paire.
Bonjour,
une solution via macro pour la recherche du montant de signe contraire. pour l'autre demande, faire correspondre n'importe quelle somme avec n'importe quelle autre somme nous emmène, je crois, dans une exploration combinatoire qu'il faudra des siècles à examiner dès qu'il y a plus de 30 valeurs
Option Explicit Sub aargh() Dim dl&, i&, v, fa$, re As Range With Sheets("feuil1") dl = .Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To dl - 1 If .Cells(i, 2) = "" Then v = -.Cells(i, 1) Set re = .Cells(i + 1, 1).Resize(dl - i).Find(v, lookat:=xlWhole) If Not re Is Nothing Then fa = re.Address Do If re.Offset(, 1) = "" Then re.Offset(, 1) = i Cells(i, 2) = re.Row Exit Do Else Set re = .Cells(i + 1, 1).Resize(dl - i).FindNext(re) End If Loop Until re.Address = fa End If End If Next i End With End Sub
lancer la macro ave alt-f8, les montants qui s'annulent, ont en colonne 2, le n° de ligne du montant qui forme la paire.
Je me doutais de l'ampleur de la tâche ...
Merci pour cette macro ça devrait déjà aider beaucoup.