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 :

Programme VBA pour extraire des données selon une condition


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Programme VBA pour extraire des données selon une condition
    Bonjour à tous,
    Je suis novice en VBA donc je viens demander votre aide.
    Je dois réaliser un programme VBA pour :
    Qu'à partir d'une base de données, comparer les salaires des collaborateurs exerçant des fonctions identique. Je dois donc calculer le salaire moyen par fonction (employé, cadre...) puis extraire les matricules pour lesquels le salaire ne rentre pas dans la fourchette (l'utilisateur peut vouloir que les salaires mini et maxi ne s'écarte que de 20% maximum, ou 30%, selon son choix).

    J'ai donc commencé mon programme VBA (cf fichier VBA) ainsi qu'une base de données (cf fichier "Base" excel).

    Pour l'instant je me concentre uniquement sur les employés et mon programme fonctionne sauf que pour les salaires qui dépasse le mini ou le maxi, à la fin, dans mon "Msgbox" il me sort par exemple: valeur hors fourchette pour les matricules 43000 2700 etc... . Tout mon problème est donc de faire en sorte que lorsqu'il détecte un salaire en dehors de la fourchette, il ne m'affiche pas ce salaire mais plutôt le matricule qui correspond à ce salaire.
    A savoir que pour mes tests j'utilise une fourchette de 20%.

    Merci de votre aide
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés
    Dernière modification par Invité ; 21/03/2017 à 19h07.

  2. #2
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut
    Je pense que ceci répond à ton souhait.

    remplacer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      CoordonnesCellErreur = CoordonnesCellErreur & ", " & Cell.Value
    par cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     CoordonnesCellErreur = CoordonnesCellErreur & ", " & Cell.Offset(0, -3).Value
    bonne journée

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci beaucoup a_diard pour ta réponse. En effet maintenant ça marche.
    Juste une autre petite question, il y a t-il un moyen pour faire en sorte que dans mon MsgBox il ne m'affiche pas : " Valeur hors fourchettes pour les matricules E0102, E0103 ,,,,,,,,,,,,,,,,,,,, " mais plutôt "Valeur hors fourchettes pour les matricules E0102, E0103."

    En effet toutes mes autres cellules de E7 à E100 étant pour l'instant vides, il considère qu'elle valent 0 et qu'elle sont donc "hors fourchette". Il y a t-il un moyen de faire en sorte qu'il ne prenne pas en compte ces cellules vides ?

    merci d'avance
    Dernière modification par Invité ; 21/03/2017 à 19h07.

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonsoir à tous
    Peut erte comme ça :
    1/ à ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim DernLigne As Long
    DernLigne = Sheets("BaseSalaires").Range("B" & Rows.Count).End(xlUp).Row
    et ça :
    2/ à modifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set maplage = Range("E3:E" & DernLigne)

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci beaucoup pour vos réponses, tout marche parfaitement.

    Bonne journée
    Dernière modification par Invité ; 21/03/2017 à 19h08.

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

Discussions similaires

  1. Extraire des données selon une date et n°identique
    Par Aurianelm dans le forum SAS Base
    Réponses: 4
    Dernier message: 23/09/2013, 16h28
  2. Besoin d'aide pour extraire des données d'une feuille à l'autre
    Par fransky dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/11/2010, 15h03
  3. Réponses: 2
    Dernier message: 25/06/2009, 08h23
  4. Réponses: 6
    Dernier message: 05/05/2008, 15h19

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