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 :

Test pour des plages de données [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 28
    Par défaut Test pour des plages de données
    Bonjour,

    Je dispose d'un tableau de type "min" "max" "coeff" correspondant à des tranches de valeur pour lesquels un certain coefficient s'applique et j'ai un autre tableau avec mes valeurs.

    L'objectif ici est de faire un test tel que ma valeur est multiplié par le coefficient correspondant à la plage de donnée.

    Où est le problème me direz vous ?

    je dois travailler avec une feuille de calcul unique et je peux être amené aussi bien à modifier les plages de valeur, que les coefficient ou même le nombre de plage de valeur.

    Merci de votre aide.

  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
    Par défaut
    Première chose : réduit ton tableau à deux colonne, avec une première colonne "Critère" qui remplacera tes Min et Max, en supposant que le critère de chaque ligne représente le max de la ligne précédente.

    Ensuite, il suffira que tu utilises une fonction RECHERCHEV, en oubliant pas de mettre VRAI en quatrième paramètre.
    Si tes critères sont en A1:A10, tes coefs en B1:B10 et la valeur à traitée est en C1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =C1*RECHERCHEV(C1;A1:B10;2;VRAI)

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 28
    Par défaut
    La fonction recherchev n'est pas sensée ressortir le résultat le plus proche dans ce cas la ? (Par exemple si mon premier max est 20 et mon deuxième 200 et que je cherche le coefficient pour 21, ne risque-t-il pas de me sortir la valeur correspondant à la ligne du 20 ?
    (après un test rapide il me ressort bien le coefficient du 20 et non celui du 200)

    J'aimerai aussi savoir s'il est possible de "variabiliser" le tableau pour avoir une fonction recherchev du type recherchev(A1;maVariable;2;VRAI) (dans une macro bien sur)

    et si c'est possible, quelle est la commande pour entrer le tableau actuellement sélectionné dans la variable.

    Je commence mon code vba par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Ligne As Integer
        Ligne = activcell.Row
    pour garder en mémoire la ligne de la cellule sélectionnée au moment du lancement de la macro mais cela ne fonctionne pas et je ne comprends pas pourquoi

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 28
    Par défaut
    Réussi avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     Function Comparer(N As Double, Ligne As Integer)
     
            If N < Range("A" & Ligne).Value Then
                    Comparer = Range("B" & Ligne).Value
            Else
                    Comparer = Comparer(N, Ligne + 1)
            End If
     
    End Function

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

Discussions similaires

  1. Test pour des modèles non-ActiveRecord
    Par Flackou dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 11/08/2008, 10h23
  2. Qu'utiliser pour des envois de données rapides
    Par metalamania dans le forum Réseau/Web
    Réponses: 5
    Dernier message: 20/05/2008, 16h15
  3. Petit test pour des pro du java
    Par vincent63 dans le forum Langage
    Réponses: 11
    Dernier message: 01/02/2008, 15h46
  4. Menu principal pour des bases de données différentes ?
    Par Kareg dans le forum Modélisation
    Réponses: 30
    Dernier message: 20/08/2007, 16h10
  5. Ecrire des plages de données dans Excel
    Par Papino dans le forum Delphi
    Réponses: 10
    Dernier message: 02/07/2006, 14h26

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