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 :

NB.SI.ENS en VBA ou comment récupérer le contenu d'une zone de liste [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 31
    Par défaut NB.SI.ENS en VBA ou comment récupérer le contenu d'une zone de liste
    Bonjour,
    À partir d'une liste d'adhérents, je voudrais remplir une feuille de statistiques.
    Les critères sont :
    - par catégorie jeunes, adultes et seniors calculé dans le UF sans souci,
    - par le choix du loisir dans une zone de liste, et là ça se complique.
    Dans la feuilles STATS, la fonction NB.SI.ENS fonctionne parfaitement mais juste à partir de la V2007. Or ce tableau doit fonctionner aussi sur les versions antérieures.
    Catégorie | Cot2012 | Broderie | Cinéma | Cuisine | etc.
    Jeunes | 422 € | 2 6
    Adultes | 340 € | 7 4
    Seniors etc.

    Formule pour l'année de cotisation : =SOMME.SI.ENS(l_mont_cot;l_id_adh;"JEU*";l_annee_adh;2012)
    Formule pour les loisirs : =NB.SI.ENS(l_id_adh;"JEU*";l_loisirs;I$2)
    J'ai essayé avec somme prod mais il me retourne 0.

    Donc pour "essayer" de contourner le problème, j'envisage de faire une boucle pour récupérer le loisir choisi et l'ajouter dans les colonnes/lignes respectives et .
    Le code sous trouve dans le mod_traitement, sub écrit_adhérent et presque à la fin mise à jour du tableau annuel des statistiques.

    Merci pour votre aide.
    Cordialement
    Chris
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,
    Dans H3 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD((l_mont_cot)*(GAUCHE(l_id_adh;3)="JEU")*(l_annee_adh=2012))
    D'autre part, plutôt que de définir des noms faisant une colonne de taille, tu as intérêt à définir des noms définis dynamiques, par exemple :
    l_id_adh
    sera défini par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DECALER(ADHERENTS!$A$4;;;NBVAL(ADHERENTS!$A:$A)-3)
    ce qui permet d'optimiser les formules. Il faut cependant qu'il n'y ait pas de cellules vides dans la plage de données.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 31
    Par défaut Sommeprod
    Bonjour et merci pour ta réponse.
    Sommeprod fonctionne très bien pour la catégorie.
    Que pourrais-je mettre pour mes loisirs à la place de nb.si.ens ?
    =NB.SI.ENS(l_id_adh;"JEU*";l_loisirs;I$2)
    Encore merci pour ton aide.
    Cordialement
    Chris

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD((GAUCHE(l_id_adh;3)="JEU")*(l_loisirs=I$2))
    Ote-moi d'un doute. Je ne suis pas en train de faire tes devoirs ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 31
    Par défaut Un petit graphique pour finaliser le tout
    Encore merci, ça fonctionne nickel !
    Du coup plus besoin de faire la mise à jour en VBA.
    Pour finaliser le tout, j'aimerai afficher le graphique dans un autre formulaire quand je clique sur le bouton Statistiques.
    Le graphique existe déjà dans la feuille PAR_ADH, il "suffit" donc de l'afficher dans un formulaire, j'ai bien pensé à exporter mon graphique en image, puis insérer l'image dans le formulaire, mais il doit y avoir plus professionnel .
    Sinon en vba avec le code suivant (qui ne fonctionne pas, en fait ça recrée un graphique, ça ne récupère pas l'existant):
    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
    Sub aff_graphique()
    'début en col G jusqu'en P, et lignes 3 à 5
    Dim arrData(7 To 16, 3 To 5)
    Dim i As Integer
    For i = 7 To 16
       ' Les valeurs de la colonne G remplissent la première
       ' série du tableau. Si ces valeurs sont des chaînes,
       ' elles deviennent des étiquettes de lignes.
       Dim arrValues(7 To 16, 3 To 5)
        arrData(i, 1) = Worksheets("PAR_ADH").Range("G" & i + 1).Value
     
       ' Les valeurs de la colonne B remplissent ensuite la seconde série.
       arrData(i, 2) = Worksheets(1) _
       .Range("I" & i + 1).Value
    Next i
    MSChart1.SeriesType = VtChSeriesType2dArea
    MSChart1.ChartType = VtChChartType2dBar
    MSChart1.ChartData = arrData
    End Sub

    Sur la ligne en rouge, il me dit que l'indice n'appartient pas à la sélection, je pense que c'est arrData le problème.

    Merci encore pour ton aide.
    Cordialement
    Chris

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    j'ai bien pensé à exporter mon graphique en image, puis insérer l'image dans le formulaire, mais il doit y avoir plus professionnel
    C'est ce qu'il y a de plus pratique. Si tu veux te compliquer la vie, regarde du côté du contrôle ChartSpace :

    http://excel.developpez.com/faq/?pag...phiqueUserForm

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

Discussions similaires

  1. [XL-2010] VBA : comment récupérer valeur contenue dans une page web?
    Par pegase33 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/01/2012, 00h39
  2. Réponses: 5
    Dernier message: 18/11/2009, 11h25
  3. [DEBUTANT] Comment récupérer le contenu d'une zone texte
    Par josémaria dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/02/2007, 01h24
  4. Réponses: 12
    Dernier message: 10/06/2006, 19h07
  5. Réponses: 3
    Dernier message: 22/03/2006, 09h47

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