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 :

Adapter formule à la longueur d'un tableau


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 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2015
    Messages : 54
    Par défaut Adapter formule à la longueur d'un tableau
    Bonjour,

    Pour des questions d'automatisation, je me suis débrouillé pour construire un fichier excel qui récupère des données selon un paramètre en liste déroulante pour en fournir une synthèse via un TCD. J'aurais idéalement voulu ajouter deux formules juste en bas ce TCD qui reprennent la structure de ce dernier. En effet, la longueur du tableau étant variable selon le paramètre choisi, je ne sais pas comment automatiser ma formule en fonction.

    Dans le fichier excel ci-joint, mes deux formules sont écrites de façon à récupérer les 3 premières lignes. Ce qui pose soucis pour le paramètre ROUGE (4 lignes). De fait, comment peut - on automatiser ces formules en VBA pour qu'elles soient directement liés à mon TCD ? De façon à ce que ces formules interviennent juste en dessous du TCD (en supposant qu'il puisse y avoir plus d'une cinquantaine de ligne).

    http://www.cjoint.com/c/FIurnoLVMZZ

    A noter que les données sont fictives et qu'un petit bout de code VBA a été écrit pour la récupération des données et la mise en forme du tableau.


    Merci,
    Eliam.

  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
    Citation Envoyé par Mac_Leod Voir le message
    Dans le fichier excel ci-joint
    http://www.developpez.net/forums/d84...s-discussions/

  3. #3
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour

    Pourquoi
    • ne pas construire le TCD sur la plage de la feuille DATA et mettre Couleur en zone de filtre du TCD ou en Segment si Excel 2010 ou + ? Cela éviterait le VBA
    • ne pas mettre la source sous forme de tableau et éviter ainsi des valeurs vides ?

    En l'état :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =F.TEST(DECALER(L$9;0;0;EQUIV("*total*";I:I;0)-9;1);DECALER(P$9;0;0;EQUIV("*total*";I:I;0)-9;1))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =T.TEST(DECALER(L$9;0;0;EQUIV("*total*";I:I;0)-9;1);DECALER(P$9;0;0;EQUIV("*total*";I:I;0)-9;1);2;SI(J4>0,05;2;3))
    Il est plus simple de laisser les formules au-dessus du TCD, sinon il va falloir calculer à chaque fois la fauteur du TCD pour déplacer les formules ou masquer des lignes vides laissées en sécurité.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2015
    Messages : 54
    Par défaut
    Bonjour,

    Merci pour vos réponses.

    @Menhir : J'ai par habitude de procéder ainsi, l'utilité première de cette pièce jointe étant d'illustrer mon propos. Le format n'est effectivement peut être pas le plus adéquat, une capture d'écran aurait pu suffire également, je ne sais pas ce que vous en pensez ? J'estime pour le coup permettre à mes interlocuteurs de beaucoup mieux cerner le problème, quand bien même la demande est formulée parfaitement.


    @78chris : En réponse à vos deux interrogations :

    - Le TCD apporte permet une synthèse des données filtrées mais le détail de celui-ci est également indispensable. La volumétrie de mes données étant beaucoup plus importante que celle de cet échantillon fictif. En tout les cas, je ne cherche pas nécessaire à éviter le VBA.
    - Les valeurs vides dans le TCD n'apparaissent normalement pas (filtre "greater than 0").

    Il est en effet peut être plus sage de laisser ces formules au dessus du TCD, et je vais m'y tenir, cela facilite pas mal les choses. De fait, les formules proposées fonctionnent parfaitement, belle découverte de cette fonction DECALER que je ne connaissais pas.

    J'allais vous poser deux questions mais j'ai finalement su les résoudre puisqu'elles dépendantes en soi (intérêt du -9 et résultats incorrects quand le TCD est placé à un autre endroit). En conséquence, j'ai poussé l'automatisation un peu plus loin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =F.TEST(OFFSET(M$35;0;0;MATCH("*total*";J:J;0)-MATCH(1;J:J;0);1);OFFSET(Q$35;0;0;MATCH("*total*";J:J;0)-MATCH(1;J:J;0);1))

    Encore merci et bonne journée à vous deux.

  5. #5
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour
    Citation Envoyé par Mac_Leod Voir le message
    ...

    @78chris : En réponse à vos deux interrogations :

    - Le TCD apporte permet une synthèse des données filtrées mais le détail de celui-ci est également indispensable. La volumétrie de mes données étant beaucoup plus importante que celle de cet échantillon fictif. En tout les cas, je ne cherche pas nécessaire à éviter le VBA.
    - Les valeurs vides dans le TCD n'apparaissent normalement pas (filtre "greater than 0").
    Quitte à faire du VBA, pourquoi ne pas ajuster la plage source du TCD ? Il est totalement inutile de le faire pour le filtre avancé, qui marche parfaitement sur colonnes complètes, mais bien plus utile sur la source du TCD...
    Certes le filtre masque les valeurs vides mais elles alourdissent le cube de données et limitent les possibilités de regroupement dans les TCD (moins depuis 2010) : même si le TCD actuel ne les utilisent pas, autant s'imprégner des bonnes pratiques.

  6. #6
    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
    Citation Envoyé par Mac_Leod Voir le message
    J'ai par habitude de procéder ainsi, l'utilité première de cette pièce jointe étant d'illustrer mon propos. Le format n'est effectivement peut être pas le plus adéquat, une capture d'écran aurait pu suffire également, je ne sais pas ce que vous en pensez ?
    Plus jamais je n'ouvrirai une pièce jointe pouvant contenir des macro depuis qu'un abruti (je ne trouve pas de terme plus édulcoré pour désigné ce triste individu) en avait placé un en oubliant de précisé qu'il contenant une macro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Workbook_BeforeClose(Cancel as Boolean) 
        Application.DisplayAlerts = False 
        Application.Close
    End Sub
    Deux heures de boulot perdu.

    Et je l'apprécie d'autant moins quand la pièce jointe est hébergée sur un site qui commence par te bombarder d'une batterie de traceurs.

Discussions similaires

  1. Length : longueur d'un tableau dans pointeur de record
    Par sendibacori dans le forum Ada
    Réponses: 8
    Dernier message: 25/12/2007, 19h55
  2. Réponses: 4
    Dernier message: 04/02/2007, 00h06
  3. Longueur d'un tableau en VB6
    Par ssakhri dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 01/12/2006, 12h51
  4. [debutant] Connaitre la longueur d'un tableau.
    Par parp1 dans le forum Langage
    Réponses: 3
    Dernier message: 18/05/2006, 18h32
  5. Longueur d'un tableau
    Par petdelascar dans le forum MFC
    Réponses: 11
    Dernier message: 28/10/2005, 04h59

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