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 :

Macro vba Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 5
    Par défaut Macro vba Excel
    Bonjour,
    Ne connaissant rien au macro de vba excel et avec le peu de temps que je dispose pour me former je demande donc de l'aide tout en ne sachant pas si ce que je vais vous demander est réalisable.
    J'aurai besoin d'une macro qui serai capable tout d'abord de comparer un nombre indéfini de personnes en fonction de leur âge avec des normes définies pour obtenir un score.

    Par exemple:
    ci dessous un tableau de normes.
    Tranche d'âge : moins de 30ans, 31-40, 41-50, 51-60, 60 ans et plus
    Perf homme: 800, 700, 600, 500, 400 = 5 (score)
    750, 650, 550, 450, 350 = 4
    700, 600, 500, 400, 300 = 3
    650, 550, 450, 350, 250 = 2
    600, 500, 400, 300, 200 = 1

    Perf femme: 700, 600, 500, 400, 300 = 5
    650, 550, 450, 350, 250 = 4
    600, 500, 400, 300, 200 = 3
    550, 450, 350, 250, 150 = 2
    500, 400, 300, 200, 100 = 1

    Par exemple un homme de 35 ans qui réalise une perf de 640 obtient un score de 3 car il est compris dans la tranche d'âge 31-49 et que 640 est inférieur à 650 exclus.

    Voilà ce que je suis obligé de faire manuellement pour un grand nombre de personnes pour trouver leur score. Mais traiter les données une par une en deviens infinissable d'où mon appel au secours!

    Merci d'avance!

  2. #2
    Membre chevronné Avatar de Drowan
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2014
    Messages : 460
    Par défaut
    Avec des "select case" imbriqués tu devrais t'en sortir

    ça doit ressembler à ça :


    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
    Sub a()
    Dim blnEstHomme As Boolean
    Dim intAge As Integer
    Dim intPerf As Integer
     
    ' Je suppose que tes valeurs sont rangées dans un tableau sur ta feuille 1
    ' Le sexe est noté dans la colonne B par H ou F
    ' l'age dans la colonne C
    ' La perf dans la colonne D
    ' Et le score s'écrit dans le colonne E
     
    For i = NuméroDeLaPremièreLigne To NuméroDeLaDernièreLigne
        blnEstHomme = IIf(Feuil1.Range("B" & i).Value = H, True, False)
        intAge = Feuil1.Range("C" & i).Value
        intPerf = Feuil1.Range("D" & i).Value
     
        If blnEstHomme Then
            Select Case intAge
                Case 1 To 30
                    ' à repeter dans chage cas
                    Select Case intPerf
                        Case 1 To 599
                            ' à repeter dans chaque sous-cas
                            Feuil1.Range("E" & i).Value = 0
                        Case 600 To 649
                            Feuil1.Range("E" & i).Value = 1
                        Case 650 To 699
     
                        Case 700 To 749
     
                        Case 750 To 799
     
                        Case Else
     
                    End Select
     
                Case 31 To 40
     
                Case 41 To 50
     
                Case 51 To 60
     
                Case Else
     
            End Select
        Else
        ' faire la meme chose avec les valeurs pour les femmes
        End If
     
    End Sub
    En espérant que ça t'aide

  3. #3
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut
    Je pense que l'on peut faire ça sans VBA, avec les fonction PLANCHER() et rechercheH()
    La fonction Plancher permet d'arrondir ta valeur au multiple inférieur, par exemple =PLANCHER(640, 50) = 600, ce qui permet des recherches dans le tableau

    Après, je maitrise mal les rechercheV et rechercheH, donc il faut bidouiller un peu

  4. #4
    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 171
    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 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une solution parmi d'autres avec la combinaison des formules SI, EQUIV et DECALER
    Organisation des données
    Il y a lieu de créer deux tableaux distincts un pour les hommes et un pour les femmes mais triés par Points
    Feuille [Parameter]
    Nom : Paramter.jpg
Affichages : 92
Taille : 58,8 Ko
    Plages nommées, (Références), ' Explications
    tblAge (A1:E1) ' Les âges 0, 31, 41, 51, 60
    tblPerfMale (A9:E13) ' Le tableau de performance des hommes
    tblPerfFemale (A9:E13) ' Le tableau de performance des femmes
    tblScoring (F3:F7) ' Le tableau des poins 1, 2, etc.

    Feuille [Données]
    Nom : Data.jpg
Affichages : 91
Taille : 25,5 Ko
    Ligne 1, les étiquettes de colonnes
    Lignes 2 et suivantes les données avec en colonne
    A - Nom
    B - Sexe ' (H/F)
    C - Age ' (0 à x ans)
    D - Perf ' (100 à 800)
    E - Points avec la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(B2="H";EQUIV(D2;DECALER(tblPerfMale;0;EQUIV(C2;tblAge;1)-1;;1);1);EQUIV(D2;DECALER(tblPerfFemale;0;EQUIV(C2;tblAge;1)-1;;1);1))
    Si la performance n'est pas trouvée (par exemple perf 500 pour Homme de 30 ans), un message d'erreur #N/A va être renvoyé. Il y a lieu donc si la version Excel est supérieure à 2003 de faire précéder la formule par SIERREUR
    Je reviens éventuellement plus tard dans la journée avec les explications si nécessaire.
    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

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 5
    Par défaut Re:
    Bonjour,

    Tout d'abord merci à tous d'avoir pris le temps pour me proposer diverses solutions à mon problème.

    Ensuite M. Tulliez, j'ai utilisé principalement votre solution mais pour deux de mes tableaux je n'arrive pas à utiliser la formule. Je vous ai donc mi en pièce jointe une feuille Excel avec mes deux tableaux qui ne fonctionnent pas.
    Si vous avez un peu de temps pour y jeter un oeil pour essayer de trouver une solution je vous en remercie d'avance! Sinon ce n'est pas grave vous m'avez déjà bien aidé.

    Merci encore!Classeur1.xls

  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 171
    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 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    j'ai utilisé principalement votre solution mais pour deux de mes tableaux je n'arrive pas à utiliser la formule. Je vous ai donc mi en pièce jointe une feuille Excel avec mes deux tableaux qui ne fonctionnent pas.
    J'ai ouvert le classeur;
    Qu'est-ce que je constate, tu n'as pas nommé les plages de cellules comme indiqué dans mon explication, d'ailleurs tu n'as rien nommés.
    et plus grave ........ il n'y a aucune formule dans ce classeur.
    Alors effectivement rien ne peut fonctionner.

    Il y a des moments on se pose des questions de savoir si on lit vraiment les réponses faites sur ce forum.
    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. [VBA-E]Probleme macro VBA excel 2000 2003
    Par skichatchat dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/04/2007, 21h16
  2. incompatibilité macros VBA excel 2000 et 2003
    Par hiline6 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/04/2007, 12h20
  3. Macro VBA Excel : Comparaison des deux 1ères colonnes de 2 fichiers Excel
    Par techneric dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/01/2007, 10h00
  4. Auto install macro vba excel
    Par zootman dans le forum Installation, Déploiement et Sécurité
    Réponses: 6
    Dernier message: 14/06/2006, 21h30
  5. [VBA-E] macro VBA excel suppression graphiques
    Par totoza dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 30/05/2006, 08h45

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