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 :

Faire la feuille utiliser dans une sub en fonction d'un critère comme l'appartenance à une catégorie


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2011
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Faire la feuille utiliser dans une sub en fonction d'un critère comme l'appartenance à une catégorie
    J'essai de créer une interface me permettant de calculer automatiquement des normes sans passer des heures à chercher dans des tables.

    En fonction du nombre de points obtenus à une échelle je détermine une note standard selon la table. les normes varient en fonction de la classe d'âge de la personne qui passe les tests.

    Exemple:

    12 à 15 ans 16 à 18 ans
    0 à 3 points --> 1 0 à 1 point --> 1
    4 à 6 points --> 2 2 à 3 points --> 2
    7 à 12 points --> 3 4 à 7 points --> 3
    ...

    pour chaque classe d'âge les tableau pour convertir les points en notes standard sont sur une page différente

    Exemple 12 à 15 ans --> page 1; 16 à 18 ans --> page 2

    j'ai écris la sub "AssignNS" qui permet la conversion des points en notes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    If Feuil1.Range("B10").Value = 0 Or Feuil1.Range("B10").Value < (FeuilX.Range("B2").Value + 1) Then
    Feuil1.Range("C10") = FeuilX.Range("A2").Value
    ElseIf Feuil1.Range("B10").Value > Feuil1.Range("B2").Value And Feuil1.Range("B10").Value < (FeuilX.Range("B3").Value + 1) Then
    Feuil1.Range("C10") = FeuilX.Range("A3").Value
    ElseIf Feuil1.Range("B10").Value > Feuil1.Range("B3").Value And Feuil1.Range("B10").Value < (FeuilX.Range("B4").Value + 1) Then
    Feuil1.Range("C10") = FeuilX.Range("A4").Value....

    je ne trouve pas comment faire une sub "RefClasseAge" qui ferait varier la référence de la feuille de normes dans la sub "AssignNS"
    si la Catégorie d'âge est "12 à 15" FeuilX est la Feuille 1
    si la Catégorie d'âge est "16 à 18" FeuilX est la Feuille 2...
    où FeuilX est utilisé

    Quelqu'un a une idée??? Un grand merci d'avance

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    tiens une idée avec un select case :

    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
    Sub ChoixFeuille()
    Dim iAge As Integer
    Dim f As Worksheet
    iAge = InputBox("Age")
    Select Case iAge
        Case 12 To 15
          Set f = ThisWorkbook.Sheets("Feuil1")
        Case 16 To 18
          Set f = ThisWorkbook.Sheets("Feuil2")
        Case Else
          MsgBox "Choix incorrect", vbCritical
          Exit Sub
    End Select
    MsgBox "Feuille  pour age : " & iAge & " = " & f.Name
    End Sub

  3. #3
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2011
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup j'ai essayé mais ça complique beaucoup les choses.

    En effet j'ai déjà un calcul de l'âge qui est effctué à partir d'un Userform il calcule l'âge en fonction de la date de passation et de la date de naissance et assigne la catégorie d'âge correspondant (ex. "16 à 17") à une cellule se situant sur une feuille nomée "donnée".

    Il faut donc que la routine aie chercher la catégorie dans cette case puis en fonction aille sur la feuille correspondante regerder à quelle note correspond le nombre de points obtenus. Ce nombre de points est lui aussi saisi dans un UserForm qui s'ouvre automatiquement après la saisie des données biographiques et du calcul de l'âge. Le nombre de points est lui aussi assigné à une case de la feuille donnée. Il faut en effet que je puisse ensuite récupérer ces différentes valeurs pour calculer des crières de validité des notes et les retranscrire dans un rapport.

    En gros le reste du programme fonctionne mais je bloque sur ce problème de feuille.

    J'ai modifié de la manière suivante mais ça ne fonctionne toujours pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub AssignNS()
    Dim f As Worksheet
    If Feuil1.Range("I1") = "16 à 17" Then
    Set f = ThisWorkbook.Sheets("Feuil7")
    ElseIf Feuil1.Range("I1") = "18 à 19" Then
    Set f = ThisWorkbook.Sheets("Feuil8")...
    End If
    f Feuil1.Range("B10").Value = 0 Or Feuil1.Range("B10").Value < (f.Range("B2").Value + 1) Then
    Feuil1.Range("C10") = f.Range("A2").Value
    ElseIf Feuil1.Range("B10").Value > f.Range("B2").Value And Feuil1.Range("B10").Value < (f.Range("B3").Value + 1) Then
    Feuil1.Range("C10") = f.Range("A3").Value
    ElseIf Feuil1.Range("B10").Value > f.Range("B3").Value And Feuil1.Range("B10").Value < (f.Range("B4").Value + 1) Then
    Feuil1.Range("C10") = f.Range("A4").Value...
    End If

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    et c'est quoi qui ne "marche pas .."

    vérifie ton assignation de f en rajoutant la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "Feuille  pour age : " & Feuil1.Range("I1")& " = " & f.Name

Discussions similaires

  1. [Débutant] Feuille excel dans un sub
    Par aiglevb dans le forum VB.NET
    Réponses: 2
    Dernier message: 12/12/2013, 13h37
  2. [Toutes versions] Faire apparaître un message dans une cellule en fonction de différents critères
    Par niiiiiiiiiico dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 26/04/2013, 15h43
  3. [AC-2003] Mise à jour d'une date dans une table en fonction d'un critère
    Par carlostropico dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 09/12/2009, 19h07
  4. Réponses: 1
    Dernier message: 08/02/2009, 19h04
  5. Réponses: 1
    Dernier message: 26/01/2009, 17h07

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