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 :

macroVBA filtrage : PB de nombre de chiffre après la virgule


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Avril 2020
    Messages : 1
    Par défaut macroVBA filtrage : PB de nombre de chiffre après la virgule
    Bonjour,

    Je suis en train de me faire des nœuds au cerveau depuis 2 jours.
    Dans une macro, je filtre une colonne sur sa valeur max après avoir déterminé le max.
    Les cases contenant les valeurs sont définie en tant que "standard" .
    Déclarations:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim Max As Variant
         'Dim Vr As Variant
             Dim Ligne As Range
         Dim N As Integer
         Dim TabTemp As Variant
         Dim sht As Worksheet
         Dim MaPlage As Range, Monfiltrage As Range
         Dim derlig As Integer, dercol As Integer
    Le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Set MaPlage = Range("Q5:Q" & derlig)
       Set Monfiltrage = Range("O4:AE4")
         Max = ""
         TabTemp = MaPlage.Value 'remplissage du tableau temporaire.
         For N = LBound(TabTemp) To UBound(TabTemp) 'on passe par un tableau temporaire car il y a des valeurs à N/A
       If TabTemp(N, 1) > Vr31 Then
       Vr31 = TabTemp(N, 1) '1 car tableau à une colonne
       Worksheets(Nom_feuille).Range("AI" & N + 4).Value = Vr31 'pour vérifier les valeurs max trouvées
       Worksheets(Nom_feuille).Range("AI2").Value = Application.WorksheetFunction.Max("AI5:AI" & derlig) ' Mais ne fonctionne pas
       End If
       Next N
       Max = Vr31
       'filtre sur le max
        Monfiltrage.AutoFilter Field:=3, Criteria1:=Max, Operator:=xlAnd
    Le problème est le suivant : Quand je filtre manuellement (données/filtrer): la valeur max affichée dans le filtre est de 4,1234. La macro détecte une valeur max à 4,1234567 qui est la valeur réelle(visible dans la barre de formule quand on sélectionne la case avec la souris) .
    Et donc le tri automatique par la macro, ne se fait pas (pas de case affichée).
    J'ai essayé de déclarer les cases en tant que nombre avec 7 chiffres après la virgule, mais la macro fait n'importe quoi au niveau sélection.
    Je fais ce type de filtrage sur plusieurs colonnes successives. Le nombre de chiffres après la virgule diffère selon les colonnes, mais aussi à l'intérieur d'une même colonne.. Aussi, je ne sais pas comment m'en sortir.
    Merci d'avance pour vos réponses.

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Ce que je tenterai de faire à votre place: multiplier les valeurs par exemple par 100000, exécuter les opérations max, filtre etc.. sur ces valeurs et rediviser par 100000 à la fin.

    Cdlt

  3. #3
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,

    Pour ta recherche de max, tu utilises des variables de type double alors que le filtre travaille sur les valeurs .Text des cellules.
    Tu devrais boucler sur la valeur affichée dans chaque cellule : val(Cells(L, C).Text).

Discussions similaires

  1. [VB.Net] Determiner le nombre de chiffre apres la virgule
    Par badnane2 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 30/05/2019, 10h00
  2. [C#] Limiter le nombre de chiffre apres la virgule ?
    Par MaxiMax dans le forum ASP.NET
    Réponses: 3
    Dernier message: 01/08/2011, 14h20
  3. Limiter nombre de chiffre apres la virgule
    Par MaxiMax dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 03/08/2005, 12h02
  4. arrondir un nombre à 2 chiffres après la virgule
    Par El Saigneur dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 01/02/2005, 08h36
  5. [MFC] Nombre de chiffres après la virgule
    Par karl3i dans le forum MFC
    Réponses: 3
    Dernier message: 27/01/2004, 13h04

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