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 :

Simplification d'une itération de comparaison pour classement


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Polygos
    Homme Profil pro
    Ma petite entreprise
    Inscrit en
    Avril 2016
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ma petite entreprise
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2016
    Messages : 190
    Par défaut Simplification d'une itération de comparaison pour classement
    Bonjour
    je dois convertir un poids en classe de poids à partir d'un tableau de correspondance
    Si le Pb est inférieur à 250, alos ma cellule doit contenir le résultat texte PC

    J'ai écrit un truc assez bourrin qui ne me plait pas:
    PB est la somme de deux valeurs d'un même tableau

    Code vba : 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
    PB = (ws1.Cells(i, 96) + ws1.Cells(i, 193)) * 1.05
                If PB < 0.25 Then
                ws2.Cells(j, 13) = "PC"
                Else
                    If PB < 0.5 Then
                    ws2.Cells(j, 13) = "MC"
                    Else
                        If PB < 1 Then
                        ws2.Cells(j, 13) = "GC"
                        Else
                            If PB < 2 Then
                            ws2.Cells(j, 13) = "HG1"
                            Else
                                If PB < 3 Then
                                ws2.Cells(j, 13) = "HG2"
                                Else
                                End If
                            End If
                       End If
                   End If
               End If

    C'est joli esthétiquement mais très lourd et long en temps de calcul; je ne maitrise pas les tableaux. Qqn a une idée simple et "élégante", ce qui ne peut pas être difficile..

    Merci


  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037

  3. #3
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,
    Citation Envoyé par Polygos Voir le message
    Qqn a une idée simple et "élégante", ce qui ne peut pas être difficile..
    Une idée simple mais à toi de voir si elle est élégante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim chx()
        chx = Array(0, 0.25, 0.5, 1, 2, 3)
        With Application
            ws1.Cells(j + 1, 13) = .Choose(.Match(PB, chx, 1), "PC", "MC", "GC", "HG1", "HG2", "?")
        End With
    Ainsi tu utilises les fonctions Excel et c'est simple pour maintenir.

  4. #4
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour
    Citation Envoyé par Polygos Voir le message
    ce qui ne peut pas être difficile..
    Ce n'est peut-être pas difficile non plus de donner une réponse à ceux qui t'ont proposé une idée ?

  5. #5
    Membre confirmé Avatar de Polygos
    Homme Profil pro
    Ma petite entreprise
    Inscrit en
    Avril 2016
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ma petite entreprise
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2016
    Messages : 190
    Par défaut
    Citation Envoyé par anasecu Voir le message
    Bonjour


    Ce n'est peut-être pas difficile non plus de donner une réponse à ceux qui t'ont proposé une idée ?
    Absent, pas pu voir.
    Merci c'est parfait.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Personnellement, je déteste le "Hardcodage".

    Si tu reprends ta question initiale "je dois convertir un poids en classe de poids à partir d'un tableau de correspondance", pourquoi ne passe-tu pas justement par une table de correspondance à placer dans une feuille contenant tes paramètres et avec un simple RECHERCHEV avec valeur proche tu aurais le texte correspondant à la valeur cherchée, tu pourrais donc le résoudre sans VBA mais s'il faut absolument passer par de la programmation, c'est une ligne de code avec l'avantage que tu peux modifier ta table sans devoir modifier le code.

    Exemple de la table
    Nom : 200524 dvp TableMapping.png
Affichages : 135
Taille : 4,0 Ko
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre confirmé Avatar de Polygos
    Homme Profil pro
    Ma petite entreprise
    Inscrit en
    Avril 2016
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ma petite entreprise
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2016
    Messages : 190
    Par défaut
    Pardon, des fois je mets des semaines à ne pas avoir le temps de comprendre vos réponses. Je suis surbooké, mai sje les relis toujours.
    Oui le tableau est deja ce que j'utilise sur Excel mais là c'est un code qui fait autre chose et qui a besoin de cette info, nécessaire.

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Oui le tableau est deja ce que j'utilise sur Excel mais là c'est un code qui fait autre chose et qui a besoin de cette info, nécessaire.
    Mais encore
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. Réponses: 5
    Dernier message: 24/11/2011, 11h22
  2. Réponses: 1
    Dernier message: 06/04/2010, 12h42
  3. Réponses: 3
    Dernier message: 23/07/2009, 11h44
  4. Aide pour une requete de comparaison de table et d'insertion
    Par Froufou dans le forum SQL Procédural
    Réponses: 23
    Dernier message: 26/02/2008, 12h00
  5. [MySQL] Utilisation d'une itération foreach pour le parcours du résultat
    Par jexl dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 27/01/2006, 10h27

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