selection de cellules en fonction de conditions

Mimouz

XLDnaute Nouveau
Bonjour a tous,

Dans le cadre de mon travail, j'ai un tableau avec 5 colonne, (IDPOSTE, Temps de boot, SITE, DEPARTEMENT et direction régionale).

Je vous dans un deuxième onglet choisir une DR puis que cela m'affiche pour cette DR, les 25 postes les plus rapides a démarrer et les 25 plus lents

Je dois dire que je bloque un peu, mes connaissances en excel sont assez limités

Merci pour votre aide

voir le fichier excel en piece jointe
 

Pièces jointes

  • test.xls
    267.5 KB · Affichages: 49
  • test.xls
    267.5 KB · Affichages: 50
  • test.xls
    267.5 KB · Affichages: 52

Jocelyn

XLDnaute Barbatruc
Re : selection de cellules en fonction de conditions

Bonjour le Forum,
Bonjour Mimouz,

Un essai en fichier joint par formule matricielle

il faut valider la formule en appuyant simultanément sur CTRL, Maj (au dessus de CTRL) et entrée, si ta formule est bien validée excel va mettre de lui même le signe { devant le égal et le signe } en fin de formule.

Cordialement

EDIT : Bonjour Dranreb
 

Pièces jointes

  • mimouz.xls
    322.5 KB · Affichages: 41
  • mimouz.xls
    322.5 KB · Affichages: 42
  • mimouz.xls
    322.5 KB · Affichages: 43

Dranreb

XLDnaute Barbatruc
Re : selection de cellules en fonction de conditions

Un premier jet de ce que je pensais faire, sans userform finalement, juste un ComboBox (liste déroulante modifiable) où on peut très bien taper quelque chose. Pour l'instant il liste tout. Je vais le perfectionner pour qu'il n'affiche que les 25 1ers et derniers. Ne faudrait-il pas une séparation entre les deux ?

Bonjour Jocelyn

Voilà. le plus simple c'était une action à la fin de la procédure pour n'extraire que les 25 1er et 25 derniers s'il y en a + de 50 avec une ligne vide les séparant.
À +
 

Pièces jointes

  • Mimouz.xls
    358 KB · Affichages: 43
  • Mimouz.xls
    358 KB · Affichages: 43
  • Mimouz.xls
    358 KB · Affichages: 60
Dernière édition:

Mimouz

XLDnaute Nouveau
Re : selection de cellules en fonction de conditions

Merci a vous,

vos deux solution sont ce que je cherchais mais j'ai omis de vous dire que la liste import est a prendre sur les 65000 car pour vous envoyer les donnees j'ai du le vider un peu

il faudrait aussi pour la liste des temps minimum ne pas tenir compte des temps a 0 qui ne sont pas representatif

en tout cas un grand merci c'est du bon boulot
 

Dranreb

XLDnaute Barbatruc
Re : selection de cellules en fonction de conditions

Alors ma version qui ignore les valeurs à 0 dans la colonne B.
Comme la 1ère version, elle s'applique sur l'intégralité de la plage utilisée de la feuille Import.
 

Pièces jointes

  • Mimouz.xls
    358.5 KB · Affichages: 37
  • Mimouz.xls
    358.5 KB · Affichages: 47
  • Mimouz.xls
    358.5 KB · Affichages: 47

job75

XLDnaute Barbatruc
Re : selection de cellules en fonction de conditions

Bonjour Mimouz, salut Jocelyn, Dranreb,

Une autre solution VBA, avec une liste de validation :

Code:
Private Sub Worksheet_Activate()
'crée la liste des DR, sans doublons
Dim tablo, d As Object, t
tablo = Sheets("Import").Range("E2", Sheets("Import").[E65536].End(xlUp))
Set d = CreateObject("Scripting.Dictionary")
For Each t In tablo
  If t <> "" Then d(t) = ""
Next
[J2].Resize(d.Count) = Application.Transpose(d.keys)
Range("J" & d.Count + 2 & ":J65536").ClearContents
[J2].Resize(d.Count).Sort [J2], Header:=xlNo 'tri
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
'liste les 25 plus petits et 25 plus grands boottimes
If Intersect(Target, [D1]) Is Nothing Then Exit Sub
Dim v As String, tablo, i As Long, t(), n As Long
v = [D1]
tablo = Sheets("Import").Range("A2:E" & Sheets("Import").[B65536].End(xlUp).Row)
For i = 1 To UBound(tablo)
  If tablo(i, 5) = v And tablo(i, 2) > 0 Then
    ReDim Preserve t(4, n)
    t(0, n) = tablo(i, 1)
    t(1, n) = tablo(i, 2)
    t(2, n) = tablo(i, 3)
    t(3, n) = tablo(i, 4)
    t(4, n) = tablo(i, 5)
    n = n + 1
  End If
Next
Application.ScreenUpdating = False
[A4:E65536].ClearContents 'RAZ
If n Then
  Range("A4:E" & n + 3) = Application.Transpose(t)
  Range("A4:E" & n + 3).Sort [B4], Header:=xlNo 'tri
End If
If n > 50 Then Range("A29:E" & n - 22).Delete xlUp
End Sub
Noter qu'avec Application.Transpose on ne peut pas dépasser 65536 lignes.

Fichier joint.

A+
 

Pièces jointes

  • test(1).xls
    300 KB · Affichages: 36
  • test(1).xls
    300 KB · Affichages: 56
  • test(1).xls
    300 KB · Affichages: 41
Dernière édition:

Mimouz

XLDnaute Nouveau
Re : selection de cellules en fonction de conditions

Bonjour Messieurs,

de retour au boulot!!!

est il possible dans un soucis de lisibilite, de separer les valeur minimum des maximum par une ligne?
ou faire 2 colonne, 1 pour les mini et une pour les maxi


A Job75: A quoi sert la colonne Liste DR(à masquer)
 

Mimouz

XLDnaute Nouveau
Re : selection de cellules en fonction de conditions

Ce message annule le précédant, je n'avais pas tester avec l'intégralité des données

Dranreb,

je viens de tester avec 17000 lignes, cela fonctionne impeccable
Peut on nommer mettre les entêtes au deux tableau et ajouter le titre pour savoir a quoi ils correspondent

Puis le faire moi même en décalant les tableaux ou bien va gêner quelque chose dans la macro?
 

Dranreb

XLDnaute Barbatruc
Re : selection de cellules en fonction de conditions

Bonjour.
Ma macro les sépare par une ligne vide, mais seulement quand il y a plus de 50 lignes.

Ah; pas vu la réponse entre temps.
Bien ! À partir du moment où vous n'intervenez qu'à la fin, lors de l'affectation des tableaux au cellules, sans oublier de repasser devant les 25 derniers, il ne devrait pas y avoir de problème pour disposer tout ça comme vous voulez.
 
Dernière édition:

Mimouz

XLDnaute Nouveau
Re : selection de cellules en fonction de conditions

merci a vous tous et surtout pour votre réactivité
Dranreb, je vais utilisé ton fichier. Un grand merci a toi!!!


ca fait plaisir de voir que mon problème en a intéressé certain.
avec tout ca je pense que je devrais m'en sortir
 

job75

XLDnaute Barbatruc
Re : selection de cellules en fonction de conditions

Bonjour Mimouz, Dranreb,

Une autre solution qui utilise le filtre automatique :

Code:
Private Sub Worksheet_Activate()
'crée la liste des DR, sans doublons
Dim tablo, d As Object, t
tablo = Sheets("Import").Range("E2", Sheets("Import").[E65536].End(xlUp))
Set d = CreateObject("Scripting.Dictionary")
For Each t In tablo
  If t <> "" Then d(t) = ""
Next
[M2].Resize(d.Count) = Application.Transpose(d.keys)
Range("M" & d.Count + 2 & ":M65536").ClearContents
[M2].Resize(d.Count).Sort [M2], Header:=xlNo 'tri
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
'liste les 25 plus petits et 25 plus grands boottimes
If Intersect(Target, [D1]) Is Nothing Then Exit Sub
Dim n As Long
Application.ScreenUpdating = False
[A4:K65536].Clear 'RAZ
With Sheets("Import").Range("A1:E" & Sheets("Import").[B65536].End(xlUp).Row)
  .AutoFilter 5, [D1]
  .AutoFilter 2, ">0"
  With .SpecialCells(xlCellTypeVisible)
    .Copy [A3]
    n = .Cells.Count / 5
  End With
  .Parent.AutoFilterMode = False
End With
Range("A3:E" & n + 2).Sort [B3], Header:=xlYes 'tri
If n > 51 Then
  Range("A29:E" & n - 23).Delete xlUp
  [A29:E53].Cut [G4]
End If
End Sub
Le résultat est sur 2 tableaux, comme demandé.

Fichier (2).

A+
 

Pièces jointes

  • test(2).xls
    300.5 KB · Affichages: 39
  • test(2).xls
    300.5 KB · Affichages: 42
  • test(2).xls
    300.5 KB · Affichages: 39

Mimouz

XLDnaute Nouveau
Re : selection de cellules en fonction de conditions

Merci a toi aussi Job,

c'est tout a fait ce que je cherchais mais les gens de la haute dans ma boite veulent maintenant faire des regroupements

j'attends qu'ils se decident sur un projet final et je vous recontacte

une chose est sur vu ce que vous avez réussi a faire, cela donne envie de se perfectionner sur Excel et le vba
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 913
Membres
101 837
dernier inscrit
Ugo