Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1124 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Filtre Excell - récupération des données après filtrage

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Filtre Excell - récupération des données après filtrage

n°1043356
olivier857
Posté le 11-04-2005 à 19:21:24  profilanswer
 

Slt,  
je debute en filtre et je rencontre un problème.
 
J'ai fait une macro qui me permet de filter, dynamiquement selon les valeurs variables contenues dans 2 cellules, un tableau de 8 colonnes selon 3 critères.
 
Cela fonctionne très bien, je diminue le nombre de ligne de mon tableau de 40 à environ 5 ou 10 lignes selon les valeurs de mes 2 cellules.
 
Je voudrais maintenant récupérer le contenu de la première ligne récupéré par mon filtre.
Je n'y arrive pas car je sais pas comment lire les lignesrestantes après le filtrage.
 
J'ai essayé de mettre un offset(1,0) sur le titre de mes colonnes mais il va cherché la première ligne du tableau et non la première ligne des lignes restantes après le filtrage.
 
Voilà j'éspère que j'ai étais assez claire.
 
merci d'avance
 
Olivier

mood
Publicité
Posté le 11-04-2005 à 19:21:24  profilanswer
 

n°1043533
galopin01
Posté le 11-04-2005 à 22:16:18  profilanswer
 

bonsoir,
dans une boucle tu utilises la propriété hidden et tu ne retiens que les "Range" dont la valeur hidden = False
Ok ?

n°1043567
olivier857
Posté le 11-04-2005 à 22:37:47  profilanswer
 

Ok je crois que je vois, je vais essayer de suite merci beaucoup pour ta reponse.

n°1043599
olivier857
Posté le 11-04-2005 à 23:13:41  profilanswer
 

Merci beaucoup ca marche nickel.
 
Voilà pour info mon code :
 

Code :
  1. Sub selection_borne()
  2.     Application.ScreenUpdating = False
  3.     Workbooks.Open FileName:="C:\feuil1.xls"
  4.    
  5.     test = "=" & Workbooks("essai.xls" ).Worksheets("feuil1" ).Range("U_isol_HT" )
  6.     test2 = ">=" & Workbooks("essai.xls" ).Worksheets("feuil1" ).Range("I_borne_HT" )
  7.     test3 = "=" & Workbooks("essai.xls" ).Worksheets("feuil1" ).Range("U_isol_BT" )
  8.     test4 = ">=" & Workbooks("essai.xls" ).Worksheets("feuil1" ).Range("I_borne_BT" )
  9.     Range("A7:K115" ).Select
  10.     Selection.AutoFilter
  11.     Selection.AutoFilter Field:=1, Criteria1:="DIN"
  12.     Selection.AutoFilter Field:=3, Criteria1:=test
  13.     Selection.AutoFilter Field:=4, Criteria1:=test2
  14.          
  15.     i = 8
  16.     j = 0
  17.     While Rows(i).Hidden = True
  18.         i = i + 1
  19.     Wend
  20.    
  21.     Workbooks("essai.xls" ).Worksheets("feuil1" ).Range("Borne_HT" ) = Cells(i, 5)
  22.    
  23.     Selection.AutoFilter
  24.     Selection.AutoFilter Field:=1, Criteria1:="DIN"
  25.     Selection.AutoFilter Field:=3, Criteria1:=test3
  26.     Selection.AutoFilter Field:=4, Criteria1:=test4
  27.    
  28.     i = 8
  29.     j = 0
  30.     While Rows(i).Hidden = True
  31.         i = i + 1
  32.     Wend
  33.     Workbooks("essai.xls" ).Worksheets("feuil1" ).Range("Borne_BT" ) = Cells(i, 5)
  34.     Workbooks("essai.xls" ).Activate
  35.    
  36.     Application.DisplayAlerts = False
  37.     Workbooks("feuil1.xls" ).Close
  38.     Application.DisplayAlerts = True
  39.    
  40.     Range("D8" ).Select
  41.    
  42.     Application.ScreenUpdating = True
  43.    
  44. End Sub


 
Si tu a des remarques ou suggestions a faire sur ce code, n'hésite pas elles seront la bienvenue.
 
Bonne soirée  
 
olivier

n°1043616
galopin01
Posté le 11-04-2005 à 23:48:04  profilanswer
 

bonsoir,
Je suis assez surpris de ce choix de boucle While... Wend : j'y voyais pas comme ça ! Mais si tu dis que le résultat est bon, c'est le principal. Vérifier quand même que ce ne soit pas bon "par hasard" car cela me laisse... perplexe!
A+

n°1043623
olivier857
Posté le 11-04-2005 à 23:58:53  profilanswer
 

Merci, mais je viens de vérifier en changeant les critères de mon filtre et je trouve tjs les résultats voulu.
 
a+

n°1043628
olivier857
Posté le 12-04-2005 à 00:10:46  profilanswer
 

Ha par contre j'ai un problème,
 
Lorsque les valeurs du Range("U_isol_HT" ) et Range("U_isol_BT" ), utilisées dans les tests 1 et 3, sont décimals le filtre n'affiche plus rien. Il cache toute les lignes comme si les valeurs des critère 1 et 3 n'exister pas, mais ce n'est pas le cas il y a tjs au moins une ligne correspondant a ces valeurs.
 
Tu a une idéee d'ou ca peut venir.

n°1044375
AlainTech
Pas trouvé? Cherche encore!
Posté le 12-04-2005 à 15:41:08  profilanswer
 

Je vois que tu n'utilises ton filtre que pour trouver la première ligne qui convient.
 
Essaye ce code et dis-moi s'il fait ce que tu veux.

Sub selection_borne()
   
  Dim nBorne_BT As Single
  Dim nBorne_HT As Single
  Dim nIsol_BT As Single
  Dim nIsol_HT As Single
  Dim rTest As Range
  Dim vI As Variant
   
  Application.ScreenUpdating = False
 
  nIsol_HT = Workbooks("essai.xls" ).Worksheets("feuil1" ).[U_isol_HT]
  nBorne_HT = Workbooks("essai.xls" ).Worksheets("feuil1" ).[I_borne_HT]
  nIsol_BT = Workbooks("essai.xls" ).Worksheets("feuil1" ).[U_isol_BT]
  nBorne_BT = Workbooks("essai.xls" ).Worksheets("feuil1" ).[I_borne_BT]
   
  Workbooks.Open FileName:="C:\feuil1.xls"
 
  Set rTest = Range("A7:A115" )
   
  For Each vI In rTest
    If vI = "DIN" And vI.Cells(1, 3) = nIsol_HT And vI.Cells(1, 4) >= nBorne_HT Then
      Workbooks("essai.xls" ).Worksheets("feuil1" ).[Borne_HT] = vI.Cells(1, 5)
      Exit For
    End If
  Next vI
         
  For Each vI In rTest
    If vI = "DIN" And vI.Cells(1, 3) = nIsol_BT And vI.Cells(1, 4) >= nBorne_BT Then
      Workbooks("essai.xls" ).Worksheets("feuil1" ).[Borne_BT] = vI.Cells(1, 5)
      Exit For
    End If
  Next vI
 
  Workbooks("essai.xls" ).Activate
   
  Application.DisplayAlerts = False
  Workbooks("feuil1.xls" ).Close
  Application.DisplayAlerts = True
   
  [D8].Select
   
  Application.ScreenUpdating = True
     
End Sub


Edit --> Corrigé Cells(0,... en Cells(1,...


Message édité par AlainTech le 12-04-2005 à 16:09:15

---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1044642
olivier857
Posté le 12-04-2005 à 18:23:50  profilanswer
 

Merci de ton aide, mais ca y est mon code marche.
 
Par contre content de voir aussi le tiens que je vais tester.
 
Ton code ma appris [Borne_BT] au lieu de range("" ), c'est pas grand chose mais je ne connaisais pas.
Je vais tout de même essayer ton code il pourra m'inspirer.
 
Merci
 
Olivier


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Filtre Excell - récupération des données après filtrage

 

Sujets relatifs
Formulaire, problème insertion de données[C#.NET]logiciel GNU et acces a une base de données fichier ?
probleme avec EXCELL[SQL]Regrouper 2 lignes dans un même champ de données
[PHP] problème pour echanger des donnees avec un serveur SOAPMacro excel VBA complexe sur Filtre auto + récupération des données...
Requêtes SQL sur une base de données ACCESS en réseau ?[J2ME] Besoin d'explication sur les données persistentes
Plus de sujets relatifs à : Filtre Excell - récupération des données après filtrage


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)