Tri de données dans un tableau excel

Gunner

XLDnaute Junior
Bonjour à tous,

Voilà mon problème ...je dois dans un tableau qui est une extraction d'un logiciel comptable faire le tri sur 74000 lignes.

Ce tableau comporte des informations liées à 5 sociétés distinctes liées. Je dois " bloquer " les sociétés dont les valeurs dans les colonnes I et J ( commande d'achat en cours et chiffre d'affaire ) comportent la valeur " NON".
Pour des raisons purement comptables et techniques si l'une des valeurs sur ces 5 sociétés dans les deux colonnes est égale à oui je ne peux rien bloquer. La valeur " non " est impérative et obligatoire sur tout .
La fonction de filtre n'est pas satisfaisante car elle tient compte des valeurs oui ou non mais pas du principe des 5 sociétés liées.

Par le biais d'une macro ou d'une fonction j'aurai juste besoin par exemple que ces " non " s'affichent en rouge...mais tout autres solutions permettant de les visualiser est la bienvenue.

Merci de votre aide
 

Pièces jointes

  • Tri 5 societes.xlsx
    13.9 KB · Affichages: 29
Dernière édition:

Celeda

XLDnaute Barbatruc
Re : Tri de données dans un tableau excel

Bonjour,

Par exemple, en ajoutant une colonne pour valider les deux nons des deux colonnes et ensuite trier sur cette colonne.

Non ?
 

Pièces jointes

  • TRI-NON.xlsx
    14.7 KB · Affichages: 19

GerardCalc

XLDnaute Occasionnel
Re : Tri de données dans un tableau excel

Bonjour,

A ce que j'ai cru comprendre, mais je ne suis pas certain, tu veux voir les sociétés (colonne A) pour lesquelles il n'y a que des "non" en I et J et ce quel que soit la ligne.
Ou, pour le présenter autrement, celles pour lesquelles il n'y a pas de "oui".

Soit par formatage conditionnel, soit dans une nouvelle colonne que tu pourra filtrer sur "VRAI",
tu peux utiliser cette formule :

Code:
=NB.SI.ENS($A:$A;$A2;$I:$I;"non";$J:$J;"non")=NB.SI($A:$A;$A2)
A+
 

Gunner

XLDnaute Junior
Re : Tri de données dans un tableau excel

Merci de ton aide...ça marche ou presque.... à la lecture du tableau il manque des informations. En effet il y a 5 sociétés et ces 5 sociétés doivent absolument rester présentes à l’écran.
Peut être pour une meilleure lecture et là aussi à l'aide d'une macro ou fonction serait il intéressant d’insérer une ligne vierge toutes les 5 lignes.
Cela va augmenter la taille du tableau mais on va gagner en lisibilité. non ?
 

Gunner

XLDnaute Junior
Re : Tri de données dans un tableau excel

Bonjour,

A ce que j'ai cru comprendre, mais je ne suis pas certain, tu veux voir les sociétés (colonne A) pour lesquelles il n'y a que des "non" en I et J et ce quel que soit la ligne.
Ou, pour le présenter autrement, celles pour lesquelles il n'y a pas de "oui".

Soit par formatage conditionnel, soit dans une nouvelle colonne que tu pourra filtrer sur "VRAI",
tu peux utiliser cette formule :

Code:
=NB.SI.ENS($A:$A;$A2;$I:$I;"non";$J:$J;"non")=NB.SI($A:$A;$A2)
A+

Oui c'est ça..en fait seuls les sociétés avec le "non" m’intéressent....mais les 5 et toujours les 5. Elles doivent êtres toujours présentes.
 

Lone-wolf

XLDnaute Barbatruc
Re : Tri de données dans un tableau excel

Bonjour Gunner,

tu copie la macro dans le module de la feuille; mais mets celle-ci, qui n'a pas besoin d'activer la feuille.
Par Double-Clic.

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Range("A1:O74000").AutoFilter Field:=9, Criteria1:="Non", Operator:=xlAnd
Cancel = True
End Sub


Ton fichier en .xlsm




A+ :cool:
 

Pièces jointes

  • Copie de Tri 5 societes-1.xlsm
    19.3 KB · Affichages: 30
Dernière édition:

Gunner

XLDnaute Junior
Re : Tri de données dans un tableau excel

Bonjour Gunner,

tu copie la macro dans le module de la feuille; mais mets celle-ci, qui n'a pas besoin d'activer la feuille.
Par Double-Clic.

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Range("A1:O74000").AutoFilter Field:=9, Criteria1:="Non", Operator:=xlAnd
Cancel = True
End Sub


Ton fichier en .xlsm




A+ :cool:

Merci...mais là il subsiste un problème. Je m'explique. Dans le fichier original il y a 5 sociétés qui se répètent toujours dans le même ordre. Pour que le résultat soit correct il faut que les 5 sociétés apparaissent avec le "non" dans les deux colonnes...soit 10 non en tout.
Si sur les 10 il y a 1 oui il n'est pas nécessaire que ce résultat apparaisse.
Exemple sur ton fichier la boucherie restotoul : 10 non...ok je prends mais de dietrich 8 non donc 2 oui là ce n'est pas bon et il n'est pas utile que les valeurs apparaissent.
Suis je plus clair...je me suis peut être mal exprimé au départ. Toutes mes excuses et encore merci
 

Lone-wolf

XLDnaute Barbatruc
Re : Tri de données dans un tableau excel

Re Gunner

Un essai comme ceci peut-etre : double-clic sur une cellule à part la colonne G, et clique en colonne G pour enlever le filtre.

Code:
Option Explicit
Dim lig, x  As Long
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.ScreenUpdating = False
On Error Resume Next
Range("A1:O74000").AutoFilter Field:=10, Criteria1:="Non", Operator:=xlAnd
lig = Range("I74000").End(xlUp).Row
For x = 2 To lig
If Range("I" & x) = "oui" Then Range("I" & x).EntireRow.Hidden = True
Next x
Cancel = True
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
lig = Range("I74000").End(xlUp).Row
For x = 2 To lig
If Not Intersect(Target, Range("G" & x)) Is Nothing Then Range("A1:O74000").AutoFilter
Next x
End Sub



A+ :cool:
 
Dernière édition:

Gunner

XLDnaute Junior
Re : Tri de données dans un tableau excel

Re Gunner

Un essai comme ceci peut-etre : double-clic sur une cellule à part la colonne G, et clique en colonne G pour enlever le filtre.

Code:
Option Explicit
Dim lig, x  As Long
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.ScreenUpdating = False
On Error Resume Next
Range("A1:O74000").AutoFilter Field:=10, Criteria1:="Non", Operator:=xlAnd
lig = Range("I74000").End(xlUp).Row
For x = 2 To lig
If Range("I" & x) = "oui" Then Range("I" & x).EntireRow.Hidden = True
Next x
Cancel = True
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
lig = Range("I74000").End(xlUp).Row
For x = 2 To lig
If Not Intersect(Target, Range("G" & x)) Is Nothing Then Range("A1:O74000").AutoFilter
Next x
End Sub



A+ :cool:

Merci pour ton aide mais peux tu m'expliquer comment faire pour insérer ce code dans ma feuille de calcul.
 

Discussions similaires

Réponses
28
Affichages
2 K

Statistiques des forums

Discussions
315 134
Messages
2 116 616
Membres
112 812
dernier inscrit
jocelyne86360