Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Supprimer dans une liste les nombres annulés par un nombre négatif

  • Initiateur de la discussion Initiateur de la discussion stich02
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

stich02

XLDnaute Occasionnel
Bonjour,

J'aurais besoin de votre aide pour m'aider à résoudre le problème suivant. Comment faire pour qu'il ne reste au final dans la liste de nombre ci-jointe que les nombres qui ne sont pas annulés par un autre nombre négatifs. je joints un fichier afin d'être plus clair.

Merci d'avance de votre aide.

Jean-Marie
 

Pièces jointes

Re : Supprimer dans une liste les nombres annulés par un nombre négatif

Bonjour stich02

Une proposition par macro. Vois si ceci répond à ta demande :
VB:
Sub test()
Dim c As Range, d As Range, Zone As Range
Application.ScreenUpdating = False
Set Zone = Range("D2:D" & Range("D65000").End(xlUp).Row)
For Each c In Zone 'pour chaque cellule de la colonne D
  If c < 0 Then ' si elle est < à 0
    Set d = Zone.Find(what:=-c, LookIn:=xlValues, lookat:=xlWhole) ' On cherche son opposé dans la colonne
    Do While Not d Is Nothing ' Si il existe et tant qu'il existe
      d.Offset(, 1) = 1: d = 0 ' On marque avec un 1 à côté, on remplace cellule et son opposé par 0
      c.Offset(, 1) = 1
      Set d = Zone.Find(what:=-c, LookIn:=xlValues, lookat:=xlWhole)
    Loop
  End If
Next c
Range("E:E").SpecialCells(xlCellTypeConstants, 2).EntireRow.Delete 'on efface tout ce qui a été marqué avec des 1 en colonne E
Application.ScreenUpdating = True
End Sub

cf. fichier joint
 

Pièces jointes

Dernière édition:
Re : Supprimer dans une liste les nombres annulés par un nombre négatif

Bonjour @ tous,
Salut Softmama 🙂,
un exemple de 50 lignes va etre plus claire,
En cas de doublons comme 100, -100, 100, on gardera le 100 ou non???
Si Oui, en cas de 100 , -100, 100, 100 on gardera les doublons comme 100, 100 ou non???
 
Re : Supprimer dans une liste les nombres annulés par un nombre négatif

Bonjour Jean-Marie et bonjour Softmama,
Comme j'apprécie ce genre de macro voici ma version et je crois qu'il y en aura d'autres.
Bruno

Code:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
For lig = [D65536].End(3).Row To 2 Step -1
If Cells(lig, 4) < 0 Then
k = Application.Match(Abs(Cells(lig, 4)), Range("D2:D" & [D65536].End(3).Row), 0)
If IsNumeric(k) Then Rows(lig).Delete
End If
Next
Application.ScreenUpdating = True
End Sub
 

Pièces jointes

Re : Supprimer dans une liste les nombres annulés par un nombre négatif

Bonsoir youky

j'ai juste jeté un oeil sans ouvrir le fichier.
il me semble que quand tu trouves un couple + -, tu ne supprimes qu'une des deux lignes.... Pas bon
 
Re : Supprimer dans une liste les nombres annulés par un nombre négatif

Bonjour Softmama,

J'ai essayé ta macro malheureusement j'ai un code erreur exécution 1004 et quand je clique sur débogage j'arrive sur cette ligne :

Range("E:E").SpecialCells(xlCellTypeConstants, 2).EntireRow.Delete.

Que faire?
 
Re : Supprimer dans une liste les nombres annulés par un nombre négatif

Bonjour Rachid,

C'est tout à fait ça. En cas de 100,-100,100 on garde le 100 et en cas de 100,-100,100,100on gardera 100 et 100.

Jean-Marie
 
Re : Supprimer dans une liste les nombres annulés par un nombre négatif

Bonjour Bruno,

Je viens de tester ta macro et effectivement le problème soulevé par Eric se vérifie. Quoiqu'il en soit merci de ta réponse.

Jean-Marie
 
Re : Supprimer dans une liste les nombres annulés par un nombre négatif

Bonjour à tous,

En E2 et vers le bas puis un tri sur les 0
Code:
=NB.SI(D:D;D2)-NB.SI(D:D;-D2)

A + à tous
 
Re : Supprimer dans une liste les nombres annulés par un nombre négatif

Bonjour JCGL,

Si je prends par exemple 100, -100, 100 j'obtiens 1, -1, 1 alors qu'il me faudrait 0, 0, 1 pour garder le 100. Auriez-vous une solution?

Merci d'avance.

Jean-Marie
 
Re : Supprimer dans une liste les nombres annulés par un nombre négatif

Exact, ici je tiens compte de vos remarques.
Bruno
Code:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
For lig = [D65536].End(3).Row To 2 Step -1
If Cells(lig, 4) < 0 Then
x = Cells(lig, 4)
k = Application.Match(Abs(x), Range("D2:D" & [D65536].End(3).Row), 0)
If IsNumeric(k) Then
Rows(lig).Delete
Rows(Application.Match(Abs(x), Range("D2:D" & [D65536].End(3).Row), 0) + 1).Delete
lig = lig - 2
End If
End If
Next
Application.ScreenUpdating = True
End Sub
 
Re : Supprimer dans une liste les nombres annulés par un nombre négatif

Bonjour à tous


Un autre essai...​



ROGER2327
#5861


Samedi 21 Palotin 139 (Occultation de Saint Mce le Dr Sandomir - fête Suprême Quarte)
21 Floréal An CCXX, 0,1377h - staticé
2012-W19-4T00:19:50Z
 

Pièces jointes

Re : Supprimer dans une liste les nombres annulés par un nombre négatif

Bonjour à tous

Pour moi tout cela ne fait pas de sens.

Mathématiquement parlant, il est logique de penser que -100 soit annulé par 100.
Encore que je ne comprenne pas à quoi cela puisse servir.


Or, comme je vois en entête la notion de montant, j'aurais une approche plutôt comptable du problème.
Ainsi le lien avec le numéro de devis/facture est important.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
40
Affichages
2 K
  • Question Question
Microsoft 365 Tableau
Réponses
24
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…