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 :

probleme detection de valeurs


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Mars 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 120
    Par défaut probleme detection de valeurs
    Bonjour tout le monde,

    j'éprouve quelques difficultés pour boucler mon programme.
    J'essaye de détecter des valeurs suivant un ecart bien précis.
    Mes données sont dans la feuille Datas, si je détecte cet ecart dans la feuille datas alors je les copie.

    Voici mon code:


    Merci par avance pour votre aide. C'est très important merci

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Bonjour,

    Soit je suis devenu aveugle, soit je n'ai pas vu de question dans ton post

    Quel est le problème, où se trouve-t-il ?

    A plus tard !

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut marie33000 et le forum
    j'éprouve quelques difficultés pour boucler mon programme.
    et nous quelques difficultés à t'aider. On ne sait pas quel est le vrai problème!!!
    Néanmois je crois détecter des anomalies dans le bout de 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
    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
    54
    55
    56
    57
    test = True
    derniereligne = Sheets("Datas").Range("A65536").End(xlUp).Row 'derniere ligne non vide
     
    pourcent = 0
    k = 2 '*************************
    For i = 2 To derniereligne - 1
        masse = Cells(i, "A")
        ecart = 1.0033
        precision = Val(UserForm1.precisionbox.Value)
        delta = (masse * precision) / 100
        bornesup = ecart + delta
        borneinf = ecart - delta
        Cells(2, "K") = borneinf '********** sert à ?
        Cells(2, "L") = bornesup '********** sert à ?
     
        If Sheets("Datas").Cells(i, "D") >= Val(UserForm1.seuilbox.Value) Then
            For j = i + 1 To derniereligne
                If Sheets("Datas").Cells(j, "D") >= Val(UserForm1.seuilbox.Value) Then
                    dif = Abs(Sheets("Datas").Cells(i, "A") - Sheets("Datas").Cells(j, "A"))
                    If (dif < bornesup And dif > borneinf) Then
                        test = False
                        exist = False
                        For n = 3 To k '***************
                            If Sheets("Feuil2").Cells(n, "A") = Sheets("Datas").Cells(j, "A") Then
                                exist = True
                            End If
                        Next n
                        If Not exist Then  ' ********** exit=faux => not(exist)=vrai
                            Sheets("Datas").Rows(j).Copy Sheets("Feuil2").Rows(k)
                            Sheets("Feuil2").Rows(k).Font.ColorIndex = 3
                            k = k + 1
                        End If
                        ' test la deuxième valeur
                        exist = False
                        For n = 3 To k '***************
                            If Sheets("Feuil2").Cells(n, "A") = Sheets("Datas").Cells(i, "A") Then
                                exist = True
                            End If
                        Next n
                        If Not exist Then
                            Sheets("Datas").Rows(i).Copy Sheets("Feuil2").Rows(k)
                            Sheets("Feuil2").Rows(k).Font.ColorIndex = 3
                            k = k + 1
                        End If
                    End If
                End If
            Next j
        End If
    Next i
    Application.StatusBar = False '***************************
    If Not test Then
    '    Cells(1, DerniereColonne + 2) = "Carbone 13"
    '   MsgBox "des valeurs ont été trouvés, voir colonne " & DerniereColonne + 2
    'Rows(2).InteriorColor = 0.599993896298105
    Else
        MsgBox "pas de valeurs trouvées"
    End If
    Le même, mais avec des indentations qui permettent de s'y retrouver.

    les "******" désignent des lignes à vérifiées.
    Vu le nombre de variables déclarées (ça c'est bien), ce n'est qu'un extrait du code total. Les remarques suivantes n'ont donc pas forcément d'existences.

    Variable Test : Tu la mets à True au départ, pour la remettre à False sans l'utiliser.
    borneinf et bornesup sont collée en K2 et L2 à chaque changement de i
    Variable K : elle est initialisée à 2.
    Variable N : elle évolue de 3 à K => donc tant que K n'est pas modifié (K=2), on n'effectue pas la boucle
    Variable exist : tu ne la testes que sous la forme Not(exist). Pourquoi ne pas inverser tes réponses et la traiter en direct, même s'il faut la renommer Non_Exist ou d'un autre plus parlant ?
    StatusBar : est mis à false. j'espère que tu pense dans le reste à la remettre à true, même en cas d'erreur détectée par Excel.
    C'est très important
    Je ne pense pas : si c'était réellement important pour toi, tu te serais mis à la place des dépanneurs et aurais cherché de quelles infos ils auraient besoins : quelle est la question ?

    Mets un point d'arrêt sur ta ligne de titre et effectues ta macro en pas-à-pas en regardant l'évolution de tes variables (affichage>>variables locales).

    Je te conseillerais de faire fonctionner ta macro sur un fichier d'essai de quelques lignes, avec des valeurs reconnaissables : si tu as 100, 9% de tolérance te donne de 91 à 109 et donc si tu as 4 valeurs 109, 108.99, 91.01, 91, tu pourras tester facilement tes limites et voir si la macro réagit comme tu l'as souhaité ou non. Et tu pouras expliquer facilement avec ce fichier, ce que la macro est censée faire

    Ne jamais oublier que l'inforamtique fait toujours ce qu'on lui demande, et parfois, ce qu'on veut qu'elle fasse.
    A+

  4. #4
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Mars 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 120
    Par défaut
    Pardon je voulais détailler mon post mais j'ai eu un problème de connexion et par conséquent je n'ai pas pu rajouter plus d'explication.

    Ce programme sert à détecter des écarts. Cet écart est de 1.0033. Les données ou cette détection doit être faite sont dans ma colonne 1 de la feuille Datas.
    Je met dans celle ci des valeurs pouvant faire fonctionner mon programme:

    1.0033
    2.0066
    3.0099

    Entre chaque ligne il y a un écart de 1.0033, par conséquent on peut copier ces donner et les mettre dans le Feuil2.

    2.0066-1.0033=1.0033
    Alors on peut copier 2.0066 et 1.0033 vers Feuil2
    3.0099-1.0033=2*1.0033 alors on peut copier 3.0099 vers Feuil2

    Or ça ne marche pas...
    Je n'ai pas de questions à poser, j'aurais plutôt besoin de conseils aviser sur le pourquoi du comment du non fonctionnement du programme.

    Encore désolée pour ne pas avoir pu détailler le problème plutôt.

    Merci pour vos réponses

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 28/06/2006, 11h11
  2. Problème détection du CDROM à l'installation
    Par grinder59 dans le forum Debian
    Réponses: 6
    Dernier message: 13/03/2006, 13h01
  3. [FLASH 8] Detecter changement valeur d'une variable
    Par orelero dans le forum Flash
    Réponses: 1
    Dernier message: 18/02/2006, 18h25
  4. Problème avec une valeur decimale
    Par vbcasimir dans le forum Linux
    Réponses: 3
    Dernier message: 12/07/2005, 11h00
  5. [v3.0] probleme detection plugins
    Par jcarre dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 05/07/2004, 15h15

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