Trier des données sous conditions

  • Initiateur de la discussion Initiateur de la discussion sellig 29
  • 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 !

sellig 29

XLDnaute Occasionnel
Bonjour à tous,

Je souhaiterais pouvoir trier des données issues d'un tableau en fonction de 2 critères.
J'ai mis des explications plus précises dans le fichier joint! Je pense que cela ne peut se faire (si c'est possible) uniquement par VBA, pour ma part, il me manque juste la compétence...
Si quelqu'un pouvait m'aider?
Merci d'avance
 

Pièces jointes

Re : Trier des données sous conditions

Je vais tenter de m'expliquer plus clairement...
Le but est de réduire le tableau en gardant uniquement les valeurs qui interessent le nom sélectionné issu de la colonne A:

1/ sur la ligne correspondant au nom sélectionné, garder seulement les colonnes qui correspondent à une valeur (dans mon exemple, Brest est sélectionné, la 1ère cellule de la ligne (B41) contient une valeur donc on garde la colonne, idem pour la 2ème cellule (C41), par contre la cellule D41 est vide, on supprime donc cette colonne et ainsi de suite jusqu'à la fin du tableau.
2/une fois que ce 1er tri est réalisé, un certain nombre de colonne reste! Sur le même principe, je souhaiterais supprimer alors les lignes "indésirables" soit toutes celles qui ne comportent aucune valeur au regard du nom sélectionné au début colonne A (dans mon exemple toute les cellules de B27:AU27 sont vides donc suppression de la ligne et ainsi de suite en listant toutes les lignes de A5:A41)
En espérant avoir été relativement clair🙁
 
Re : Trier des données sous conditions

Je vais tenter de m'expliquer plus clairement...
Le but est de réduire le tableau en gardant uniquement les valeurs qui interessent le nom sélectionné issu de la colonne A:

1/ sur la ligne correspondant au nom sélectionné, garder seulement les colonnes qui correspondent à une valeur (dans mon exemple, Brest est sélectionné, la 1ère cellule de la ligne (B41) contient une valeur donc on garde la colonne, idem pour la 2ème cellule (C41), par contre la cellule D41 est vide, on supprime donc cette colonne et ainsi de suite jusqu'à la fin du tableau.
2/une fois que ce 1er tri est réalisé, un certain nombre de colonne reste! Sur le même principe, je souhaiterais supprimer alors les lignes "indésirables" soit toutes celles qui ne comportent aucune valeur au regard du nom sélectionné au début colonne A (dans mon exemple toute les cellules de B27:AU27 sont vides donc suppression de la ligne et ainsi de suite en listant toutes les lignes de A5:A41)
En espérant avoir été relativement clair🙁

Bonhour Selling, je récapitule, pour brest j'ai compris mais si je prend St Brieux la cellule E22 est vide tu voudrais la supprimer ? Car si c'est le cas tu vas décaler tes chiffres sous les mauvaise colonnes.
A+
 
Re : Trier des données sous conditions

Bonsoir à tous
Un élément de réponse. En plaçant le code
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i&, j&, tf As Boolean
   Application.ScreenUpdating = False
   If Target.Column = 1 Then
      Cancel = True
      Cells.EntireRow.Hidden = False
      Cells.EntireColumn.Hidden = False
   End If
   If Target.Row > 4 And Target.Column = 1 And Not IsEmpty(Target) Then
      With Range(Range("B5"), ActiveCell.SpecialCells(xlLastCell))
         For j = 1 To .Columns.Count
            If IsEmpty(Cells(Target.Row, .Columns(j).Column)) Then Columns(.Columns(j).Column).EntireColumn.Hidden = True
         Next j
         For i = 1 To .Rows.Count
            tf = True
            For j = 1 To .Columns.Count
               If Columns(.Columns(j).Column).EntireColumn.Hidden = False Then tf = tf And IsEmpty(.Cells(i, j))
            Next j
            If tf Then .Rows(i).EntireRow.Hidden = True
         Next i
      End With
   End If
   Application.ScreenUpdating = True
End Sub[/B][/COLOR]
dans le module de la feuille Coller données, puis en double-cliquant sur un nom dans la colonne A, on obtient la sélection correspondant à ce nom.
À partir de cela, vous adapterez sans peine pour obtenir ce que vous voulez (au moins, je l'espère...)

Pour réafficher le tableau entier, double-cliquez sur A1.​
ROGER2327
#3088
 

Pièces jointes

Re : Trier des données sous conditions

Merci Roger2327, votre fichier correspond exactement à ce que je voulais et va même au delà puisqu'il intègre ma demande tout en simplifiant le procesus que j'avais envisagé! Utilisation d'une feuille au lieu de 3 et clic sur le nom de la colonne A sans sélection préalable...😉
 
Re : Trier des données sous conditions

Bonsoir,
le sujet me semblant intéressant, je me suis exercé sur une version formule avec choix de la ville en A44.
Ceci-dit, la version de Roger démontre que le VBA bien maîtrisé permet de belles choses.
Chapeau Roger !
 
Dernière édition:
Re : Trier des données sous conditions

Bonsoir,
Je me suis aperçu que ton tableau comportait 2 colonnes avec le même numéro (les colonnes C et G ont le numéro 88465) ce qui occasionnait une erreur (la valeur de la 2ème colonne n'étant pas prise en compte).
Si c'est une erreur de ta part, rectifie-la en mettant le numéro et mon fichier t'affichera les bons résultats.
Si ce n'est pas une erreur, utilise le fichier que j'ai placé sur le lien ci-dessous (dépasse légèrement les 48 k malgré le fait qu'il soit compressé).
Teste et dis-moi ce qu'il en est.
Cordialement
Cijoint.fr - Service gratuit de dépôt de fichiers
 
Re : Trier des données sous conditions

Bonjour à tous,

Mon projet arrive en phase finale!
Le début de l'édifice a commencé par un code VBA astucieusement créé par ROGER2327. David84 m'a ensuite aidé à monter les briques... 😉
Pour la couche de peinture finale, peut être ROGER2327, pourriez vous adapter le code que vous m'aviez transmis? Je m'explique:

Votre code masquait les lignes sans valeur (post précédents) puis idem pour les colonnes, puis récapitulait ensuite l'ensemble sur une autre feuille permettant ainsi un copier coller simple.
L'architecture de ma maison est désormais finie, les pièces s'embriquent les unes dans les autres, les formules assurent les liens! J'arrive, au bout du compte avec un tableau (feuille "Récap") qui comporte également des lignes et des colonnes que je veux faire disparaitre sous le même principe qu'en début de construction.
Le problème est que l'ensemble des cellules comporte une formule reconnu par le code VBA initial comme non vide🙁
Je souhaiterai, si possible, une adaptation qui permette d'effacer les lignes en regard de la colonne A, sous réserve qu'elles soient vides de valeurs apparentes (zéro considéré également comme vide), puis idem pour les colonnes (elles se retrouvent toujours à droite du tableau)
L'idéal serait de pouvoir mettre en oeuvre cela, dès le 1er double clic du début (A1) de la feuille "Coller données".
J'ai déposé le fichier sur le lien ci joint car beaucoup trop lourd
Cijoint.fr - Service gratuit de dépôt de fichiers
En espérant pendre ma crémaillère bientôt😎
 
Re : Trier des données sous conditions

J'ai supprimé quelques couleurs pour alléger le fichier sans le compresser (il s'agissait d'un format non autorisé "RAR"
En principe, l'accès devrait être OK
Cijoint.fr - Service gratuit de dépôt de fichiers
 
Re : Trier des données sous conditions

Re...
Essayez la modification suivante de la procédure pour la feuille Récap :
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i&, j&, tf As Boolean
   Application.ScreenUpdating = False
   If Target.Column = 1 Then
      Cancel = True
      Cells.EntireRow.Hidden = False
      Cells.EntireColumn.Hidden = False
   End If
   If Target.Row > 4 And Target.Column = 1 And Not IsEmpty(Target) Then
      With Range(Range("B5"), ActiveCell.SpecialCells(xlLastCell))
         For j = 1 To .Columns.Count
            If IsEmpty(Cells(Target.Row, .Columns(j).Column)) [COLOR="Red"]Or Cells(Target.Row, .Columns(j).Column).Value = "" Or Cells(Target.Row, .Columns(j).Column).Value = 0[/COLOR] Then Columns(.Columns(j).Column).EntireColumn.Hidden = True
         Next j
         For i = 1 To .Rows.Count
            tf = True
            For j = 1 To .Columns.Count
               If Columns(.Columns(j).Column).EntireColumn.Hidden = False Then tf = tf And [COLOR="Red"]([/COLOR]IsEmpty(.Cells(i, j)) [COLOR="Red"]Or .Cells(i, j) = "" Or .Cells(i, j) = 0)[/COLOR]
            Next j
            If tf Then .Rows(i).EntireRow.Hidden = True
         Next i
      End With
   End If
   
   With Sheets("Tableau final")
      .Cells.Clear
      Range(Range("A1"), ActiveCell.SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Copy Destination:=.Range("A1")
      .Range("A1") = Target.Value
   End With
   Application.ScreenUpdating = True
End Sub[/B][/COLOR]
(2 lignes modifiées)

Si cela vous convient, faites la même modification pour la feuille Coller données.

Notez que le fait de masquer la valeur zéro masquera une ligne d'horaire dont la seule valeur serait 0:00.​
ROGER2327
#3166
 
Re : Trier des données sous conditions

Je suis désolé ROGER2327 mais rien ne se passe de plus qu'avant🙁
Concernant la valeur 0 dont la seule valeur horaire serait ce chiffre, j'en suis conscient mais la probabilité est minime, si cela était le cas, je remplacerai cette valeur manuellement par 24:00
 
- 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
5
Affichages
906
Retour