Classer par valeur cochées....

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

Re : Classer par valeur cochées....

Bonsoir Guido,
voici un code à essayer :

VB:
Sub test()
   Dim Tab1, i As Long, j As Long, n As Long

   Tab1 = Range("i4:P18").Value     'Plage du tableau1 dans un tableau
   n = 1
   For i = 1 To UBound(Tab1, 1)
      If Tab1(i, 6) <> "" Then
         For j = 1 To UBound(Tab1, 2)
            Tab1(n, j) = Tab1(i, j)
         Next j
         n = n + 1
      End If
   Next i

   Tab1 = Application.Transpose(Tab1)
   ReDim Preserve Tab1(1 To UBound(Tab1, 1), 1 To n - 1)  'redimension pour conserver uniquement les lignes cochées
   Tab1 = Application.Transpose(Tab1)

   VSortD Tab1, LBound(Tab1, 1), UBound(Tab1, 1), 8      'tri décroissant sur la dernière colonne

   Range("I35").Resize(UBound(Tab1, 1), UBound(Tab1, 2)) = Tab1   'écrire le contenu du tableau

End Sub

Private Sub VSortD(ar, LB, UB, ref)
   Dim M As Variant, i As Long, j As Long, k As Long, temp
   i = UB: j = LB
   M = ar(Int((LB + UB) / 2), ref)
   Do While j <= i
      Do While ar(j, ref) > M: j = j + 1: Loop
      Do While ar(i, ref) < M: i = i - 1: Loop
      If j <= i Then
         For k = LBound(ar, 2) To UBound(ar, 2)
            temp = ar(j, k): ar(j, k) = ar(i, k)
            ar(i, k) = temp
         Next
         j = j + 1: i = i - 1
      End If
   Loop
   If LB < i Then VSortD ar, LB, i, ref
   If j < UB Then VSortD ar, j, UB, ref
End Sub

A+
 
Re : Classer par valeur cochées....

Re

Bonjour Mapomme ,Grand Chaman Excel,et le Forum

Merci pour vos reponses

Si en MP tu pourais me donner la marche a suivre ..merci d'avance

EN vba ,je ne sais pas faire...

Pour mapomme

Petite question j'aimerais avoir 9 tableaux sur une meme feuille

et avoir trois autre onglet comment faire...

merci

Guido
 
Re : Classer par valeur cochées....

@Guido,
1) il faut copier le code que j'ai mis dans un module VBA.
- ouvrir l'éditeur VBA (ALT + F11)
- insérer un module (ALT, i, m)
- copier le code.

2)
Ajuster la plage de ton tableau. Ici, j'ai mis Range("i4😛18").
Si le tableau est de dimension variable, partant de la cellule A1 par exemple, ça pourrait être Range("A1").CurrentRegion.Value pour prendre toutes les cellules "autour" A1 (équivalement de CTRL + *)

3) Cette partie de code. Rien à changer sauf si les cellules cochées ne se trouvent pas dans la 6e colonne du tableau.
Code:
   For i = 1 To UBound(Tab1, 1)
      If Tab1(i, 6) <> "" Then
         For j = 1 To UBound(Tab1, 2)
            Tab1(n, j) = Tab1(i, j)
         Next j
         n = n + 1
      End If
   Next i

4) Rien à changer ici. Le code sert simplement à redimensionner le tableau pour conserver uniquement les lignes cochées.
Code:
   Tab1 = Application.Transpose(Tab1)
   ReDim Preserve Tab1(1 To UBound(Tab1, 1), 1 To n - 1)  'redimension pour conserver uniquement les lignes cochées
  Tab1 = Application.Transpose(Tab1)

5) Cette ligne sert à faire le tri en ordre décroissant basé sur la 8e colonne.
Code:
   VSortD Tab1, LBound(Tab1, 1), UBound(Tab1, 1), 8      'tri décroissant sur la dernière colonne

6) Finalement, cette ligne sert à copier le contenu du nouveau tableau à l'endroit de ton choix.

Code:
   Range("I35").Resize(UBound(Tab1, 1), UBound(Tab1, 2)) = Tab1   'écrire le contenu du tableau

7) Ne reste plus qu'à associer cette macro à un bouton.

A+
 
Re : Classer par valeur cochées....

Re

Bonjour Monique et Le Forum

Merci pour ta reponse

En fait la reponse #3 et bien le resultat qui me convient

Le soucis c'est que je désirerais avoir sur une meme feuille 9 fois le meme

tableau avec les meme fonctions.et dans 4 onglet differents

Voir mon fichier finale....

Merci pour votre contributions

Guido
 

Pièces jointes

Re : Classer par valeur cochées....

Bonsoir Guido, le forum,

Un essai dans le fichier joint. On affiche un menu qui permet de choisir quoi faire.

Il y a un peu de code partout:
  • module de thisworkbook pour la gestion du double-clique.
  • module des Feuilles Rn LIVE pour le code du bouton Afficher Menu.
  • module1 pour l'exécution des options de menu.
  • module de Userform1 pour le choix des options.
 

Pièces jointes

Dernière édition:
Re : Classer par valeur cochées....

Re

Salut mapomme

Fabuleux je ne savais pas que cela pouvais se faire de cette facon..Merci

le mini soucis pour ma selection c'est que quand je valide d'une valeur a 3 valeur

qui se trouve dans la colonne ' O ' soit

Valeur 12 avec un chiffre de 33 dans la colonne ' P '


Valeur 15 avec un chiffre de 21 dans la colonne ' P '


Valeur 20 avec un chiffre de 50 dans la colonne ' P '

Le classement final devrais etre le suivant:


le numero 15 qui a la plus petite valeur parmis les trois ' V '

le numero 12 qui a la 2em plus petite valeur parmis les trois ' V '


le numero 20 qui a la 3em plus petite valeur parmis les trois ' V '


Mea culpa au depart je demandais...la plus grosse valeur et je me suis tromper

Merci

Guido
 
Re : Classer par valeur cochées....

(re) Bonsoir Guido,

Quelques précisions:

Le tri doit se faire uniquement sur la colonne "P" ?
Dans ce cas, précisez si le tri se fait du plus petit au plus grand ou bien du plus grand au plus petit.

ou bien

Le tri se fait d'abord sur la colonne O puis, pour les mêmes valeurs dans la colonne O, on trie sur les valeurs de la colonne P ?
Dans ce cas, indiquer pour chacun des tris, s'il se fait du plus petit au plus grand ou bien du plus grand au plus petit.

ou bien

Le tri se fait d'abord sur la colonne P puis pour les mêmes valeurs dans la colonne P, on trie sur les valeurs de la colonne O ?
Dans ce cas, indiquer pour chacun des tris, s'il se fait en du plus petit au plus grand ou bien du plus grand au plus petit.

@+
 
Re : Classer par valeur cochées....

Re

Escuse moi ,je me suis mal exprimé

Voila comment je prossede pour avoir le resultat final..

Apres avoir ouvert Userform1

Je rentre mes données dans les plages de 1 à 9 de la feuille.' R1 LIVE '

ensuite,je selectionne par un double ckic sur mes trois ou quatre chiffres qui se trouvent

dans la colonne ' O ' de la premiere plage.deuxieme plage ainsi de suite jusqu'a la plage 9.

ensuite je clik sur le bouton filte, et la s'affiche les 2,3,ou 4 résultats de la plage 1 ainsi de suite jusqu'à la plage 9.

et pour finir et obtenir le résultats final dans chaque plage ont tries les chiffres de la colonne ' P ' du plus petit au plus grand.

et ceci pour les autre plage.

j'y suis arriver pour mon explication perso

Precision avant je fesais tout ce travail manuellement et machinalement ...

Merci pour patience

amitiés

Guido
 
Re : Classer par valeur cochées....

(re) Bonsoir Guido

(...) Escuse moi ,je me suis mal exprimé (...)

Il n'a aucune raison de s'excuser. Je pense avoir compris. Teste le fichier joint pour vérifier que c'est ce que tu désires.
 

Pièces jointes

Re : Classer par valeur cochées....

Re

Mapomme

Je te remercie pour ta prestation,

Le travail que tu a fais me fais gagner une heure par feuille que je traite tout les jours.

Je te remercie

Guido

Ma derniere question... Afin de ne pas modifier ton travail vraiment super


Si je devais inserer une ou plusieurs colonne entre A et G y a t'il un Risque ...??????

Merci

Amitiés

Guido
 
Re : Classer par valeur cochées....

(re) Bonsoir Guido,

(...) Si je devais inserer une ou plusieurs colonne entre A et G y a t'il un Risque ...?????? (...)

Oui, le programme ne fonctionnera plus.

Pour éliminer ce risque, j'ai légèrement modifié le code en rajoutant une constante Const ColonneDebut = "I".

Cette constante se trouve en tête du code qui figure dans le module1. Il faut lui donner la valeur de la lettre qui identifie la première colonne des tableaux. Donc si on rajoute des colonnes avant G, il suffit de modifier la constante ColonneDebut .

On trouve d'autres contantes en début de module1.
Code:
Const LignesTableau = 20
Const LigneDebut = 4
Const NbrTableau = 9
Const ColonneDebut = "I"

Tester le fichier joint pour bien s'assurer que mes dernieres modifications sont correctes.
 

Pièces jointes

- 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

  • Question Question
Réponses
32
Affichages
766
Réponses
2
Affichages
188
Deleted member 453598
D
Réponses
2
Affichages
169
R
Réponses
6
Affichages
135
Réponses
2
Affichages
212
Réponses
16
Affichages
505
Retour