IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Filtre à distance avec valeur inférieure à 1 [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 68
    Par défaut Filtre à distance avec valeur inférieure à 1
    Bonsoir à toutes et à tous, voilà je vous expose mon petit soucis.Je filtre d'une feuille 1 un tableau en feuille 2.En fait dans ma feuille 1 je rentre une valeur mini et maxi qui va filtrer une colonne en feuille 2 dans mon tableau. Tout fonctionne bien sauf que lorsque je saisi une valeur inférieur à 1 cela ne marche plus.Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Application.CountBlank(.Range("A1:A2")) < 2 Then
            Minprix = IIf(.Range("A1").Value = "", Application.Min(Plage), .Range("A1"))
            Maxprix = IIf(.Range("A2").Value = "", Application.Max(Plage), .Range("A2"))
            Plage.AutoFilter field:=8, Criteria1:=">=" & Minprix, Criteria2:="<=" & Maxprix, Operator:=xlAnd
        End If

    J'ai éssayé de mettre < 0,0001 avant le then mais cela ne fonctionne pas non plus...
    A1->case dans laquelle je saisi mon mini
    A2->case dans laquelle je saisi mon maxi
    field 8-> 8e colonne de mon tableau

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Déclare
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim MinPrix as double, MaxPrix as double

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 68
    Par défaut
    salut,

    j'ai essayé cela ne marche pas...en faite je pense que mon < à 2 pose pb car les valeurs que je saisi sont < à 2 justement.

    Bonne soirée.Aurélien

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Ne te fie pas aux apparences, cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Application.CountBlank(.Range("A1:A2")) < 2 Then
    vaut dire: si au moins A1 ou A2 est remplie (le 2 signifie 2 cellules)
    remets un extrait de ton fichier

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 68
    Par défaut
    oui mais je comprends pas pourquoi cela ne marche pas,voilà un extrait de l'original:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim MinNb As Double, MaxNb As Long
    Dim MinCa As Double, MaxCa As Long
    Dim MinCeq As Double, MaxCeq As Long
    '....
     
    If Application.CountBlank(.Range("H28:I28")) < 2 Then
            MinCeq = IIf(.Range("H28").Value = "", Application.Min(Plage), .Range("H28"))
            MaxCeq = IIf(.Range("I28").Value = "", Application.Max(Plage), .Range("I28"))
            Plage.AutoFilter field:=24, Criteria1:=">=" & MinCeq, Criteria2:="<=" & MaxCeq, Operator:=xlAnd
        End If

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    J'ai proposé que tu mette un extrait de ton fichier en pièces jointes

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 68
    Par défaut
    Pièce jointe 70531

    Pièce jointe 70532

    Pièce jointe 70533

    Salut voilà mes différentes feuilles.En fait dans ma feuille laminage,par exemple, je peux rentrer une valeur en D3 qu'il cherche dans ma base de données cette valeur(colonne nbre de chaudes) , idem en D13 pour le refroidissement qu'il cherchera dans ma base de données.De plus,en K3 et L3(et les autres de ma feuille laminage) je peux rentrer un mini et un maxi.En fait, je souhaiterais tout d'abord que si je n'indique pas de valeur dans ces cases que le programme ne filtre rien.Que si j'indique qu'une valeur(ex le mini)qu'il ne me prenne pas le maxi à 0, et que si j'indique le mini et max il filtre le min et max dans ma colonne de ma base de données.Enfin je souhaite que si la valeur saisie est inférieure à 1 qu'il la prenne quand même en compte.
    exemple mini=0,0421 et maxi=0,1.
    Voilà
    Merci

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 68
    Par défaut problème filtre à distance
    Bonsoir tout le monde,voici mon petit soucis. En fait, sur une feuille 1 de mon classeur, j'ai 1 case dans laquelle je filtre à distance une colonne en feuille 2 et 2 autres cases dans ma feuille 1 qui correspondent au mini et au maxi que je souhaite filtrer dans une autre colonne en feuille 2.En effet, si l'on regarde les pièces jointes, sur la feuille "laminage", la valeur indiquée en D3 est recherchée dans ma feuille "base de données" dans la colonne AF 'nbre de chaudes".De plus dans cette feuille "laminage' je filtre par un mini et un maxi(K3 et L3) une colonne sur ma feuille "base de données".
    Cela fonctionne pas trop mal sauf que lorsque je choisi une valeur comprise entre 0 et 1 cela ne marche pas pour le mini et le maxi(si je prends un mini de 0,01 et un max de 0,1 cela filtre mal) ou bien si je n'indique pas de valeur pour le min ou max.en fait, cela fonctionne bien que lorsque je rentre un mini et un max...


    Voici ma rédaction VBA:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Sub filtre()
    Dim aa As String
    Dim MinC As Double, MaxC As Long
    Dim MinMn As Double, MaxMn As Long
    Dim MinSi As Double, MaxSi As Long
    Dim MinNi As Double, MaxNi As Long
    Dim MinCr As Double, MaxCr As Long
    '...
    Dim Minpoidslgt As Double, Maxpoidslgt As Long
    Dim Minduréelaminage1 As Double, Maxduréelaminage1 As Long
    Dim Minduréelaminage2 As Double, Maxduréelaminage2 As Long
    Dim Mintempératurelaminage1 As Double, Maxtempératurelaminage1 As Long
    Dim Mintempératurelaminage2 As Double, Maxtempératurelaminage2 As Long
    Dim Minpoidsenfausté1 As Double, Maxpoidsenfausté1 As Long
    '...
    Dim Plage As Range
     
    Application.ScreenUpdating = False
    With Sheets("base de données")
        .AutoFilterMode = False
        Set Plage = .Range("A7:EQ500")
    End With
    '....
    With Sheets("Laminage")
        If Application.CountBlank(.Range("K3:L3")) < 2 Then
            Minduréelaminage1 = IIf(.Range("K3").Value = "", Application.Min(Plage), .Range("K3"))
            Maxduréelaminage1 = IIf(.Range("L3").Value = "", Application.Max(Plage), .Range("L3"))
            Plage.AutoFilter field:=33, Criteria1:=">=" & Minduréelaminage1, Criteria2:="<=" & Maxduréelaminage1, Operator:=xlAnd
        End If
        If Application.CountBlank(.Range("K13:L13")) < 2 Then
            Minduréelaminage2 = IIf(.Range("K13").Value = "", Application.Min(Plage), .Range("K13"))
            Maxduréelaminage2 = IIf(.Range("L13").Value = "", Application.Max(Plage), .Range("L13"))
            Plage.AutoFilter field:=34, Criteria1:=">=" & Minduréelaminage2, Criteria2:="<=" & Maxduréelaminage2, Operator:=xlAnd
        End If
        If Application.CountBlank(.Range("Q3:R3")) < 2 Then
            Mintempératurelaminage1 = IIf(.Range("Q3").Value = "", Application.Min(Plage), .Range("Q3"))
            Maxtempératurelaminage1 = IIf(.Range("R3").Value = "", Application.Max(Plage), .Range("R3"))
            Plage.AutoFilter field:=35, Criteria1:=">=" & Mintempératurelaminage1, Criteria2:="<=" & Maxtempératurelaminage1, Operator:=xlAnd
        End If
        If Application.CountBlank(.Range("Q13:R13")) < 2 Then
            Mintempératurelaminage2 = IIf(.Range("Q13").Value = "", Application.Min(Plage), .Range("Q13"))
            Maxtempératurelaminage2 = IIf(.Range("R13").Value = "", Application.Max(Plage), .Range("R13"))
            Plage.AutoFilter field:=36, Criteria1:=">=" & Mintempératurelaminage2, Criteria2:="<=" & Maxtempératurelaminage2, Operator:=xlAnd
        End If
     
    End With
    '...
    If Worksheets("Laminage").Range("D13").Value <> "" Then
        Worksheets("Base de données").Range("$A$7:$EQ$500").AutoFilter field:=37, Criteria1:=Worksheets("Laminage").Range("D13").Value
    Else
       Worksheets("Base de données").Range("$A$7:$EQ$1000").AutoFilter field:=37
    End If
    '...
    Voilà
    Je cherche..mais en vain..si une personne a une idée...merci
    igno
    Images attachées Images attachées   

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 68
    Par défaut
    Salut j'ai trouvé voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Application.CountBlank(.Range("H19:I19")) < 2 Then
            MinP = IIf(.Range("H19").Value = "", "0", .Range("H19"))
            MaxP = IIf(.Range("I19").Value = "", "1000000", .Range("I19"))
            Plage.AutoFilter field:=15, Criteria1:=">=" & MinP, Criteria2:="<=" & MaxP, Operator:=xlAnd
        End If
    en fait, si je renseigne pas mon mini il me prend zero en valeur par défaut etpour le maxi, si je ne renseigne pas il prend comme valeur 10000...
    par contre j'ai toujours le soucis des valeurs entre 0 et 1 cela ne marche pas encore...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/07/2014, 17h14
  2. sleep avec une valeur inférieure à 1ms
    Par franckcl dans le forum Langage
    Réponses: 12
    Dernier message: 27/07/2012, 20h21
  3. [AC-2010] Zone de liste avec valeurs filtrées
    Par sardaucar dans le forum IHM
    Réponses: 2
    Dernier message: 20/05/2012, 11h14
  4. [XL-2010] TRI.Paiements avec valeurs filtrées
    Par Bobby362 dans le forum Excel
    Réponses: 0
    Dernier message: 17/01/2012, 12h23
  5. [BO]prompt avec filtre sur les valeurs proposées
    Par arnauann dans le forum Deski
    Réponses: 3
    Dernier message: 30/11/2006, 17h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo