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 :

Nombre de dimensions pour un tableau de variables [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    ingénieur qualité
    Inscrit en
    Mars 2015
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : ingénieur qualité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 600
    Par défaut Nombre de dimensions pour un tableau de variables
    Bonjour,

    Je travaille sur un fichier excel dont le cœur est une feuille qui contient des données sur 30000 lignes * 30 colonnes.
    Pour améliorer le temps de traitement des données j'envisage de stocker le tout dans un tableau de variables.

    Le tableau suit le planning et l'avancement d'éléments qui ont un projet (unique), un type (unique), un client (unique), 3 jalons avec chacun une date d'engagement (unique), entre 0 et N date de replanification et 0 ou une date de clôture.

    Chaque ligne est unique et comporte chacune des données donc pour chaque ligne de l'élément 1, au moins les projet, type, client, dates d'engagement des jalons 1, 2 et 3 sont renseignés.
    je stocke donc un nombre important d'informations redondantes.

    Ma question est donc la suivante vaut il mieux:
    Faire un tableau de variable à deux dimensions qui est identique à mon tableau de données?
    ou
    Faire un tableau a 10 dimensions (projet, type, client, Elément, date du jalon 1, cloture de jalon 1, date du jalon 2, cloture de jalon 2,date du jalon 3, cloture de jalon 3)?
    J'ai plus de cellules du tableau mais j'optimise le nombre de cellules qui contiennent des données?

    bien à vous,

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Tout dépend de comment tu comptes manipuler tes données par la suite, mais je pense que tu risques de te compliquer la vie et de très vite te perdre dans un tableau à 10 dimensions.

  3. #3
    Membre éprouvé
    Homme Profil pro
    ingénieur qualité
    Inscrit en
    Mars 2015
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : ingénieur qualité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 600
    Par défaut
    Les gens travaillent beaucoup par filtre pour avoir le statut global de leur domaine qui est soit le projet, le type ou le client soit une combinaison des deux/trois.

    L'intérêt que j'y vois est qu'à chaque fois qu'un utilisateur définit un filtre la macro supprime une dimension à analyser.

    Aujourd'hui le code ressemble à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For ligne=1 to fin tableau
       if FiltreProjet<>"" and FiltreProjet<>Projet(Ligne) then
       elseif FiltreType<>"" and FiltreType<>Type(Ligne) then
       ...
       Else
          Routine
       End if
    Next
    Je passerais à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if filtreProjet <>"" then
       Analyse(dimension1)=Array(1;2;3;...; nombre de d'indice de dimension 1)
    Else
       Analyse(dimension1) = indice(filtreprojet)  ' Valeur unique
    End if
     
    ....
    For each cellule in TableauAnalyse(Analyse(dim1), Analyse(Dim2), ...)
       If cellule<>"" then
         Routine
      End if
    Next

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour

    la manipulation d'une variable tableau a plus de deux dimension se gère complètement différemment
    il te faudra sans doute gérer des exceptions et autre mauvais tours que les données te renverront des ( if/else/end if ) et autres a tout va

    a partir du moment ou on travaille sur un nombre de lignes importantes les filtre Excel sont parfait pour exécuter un tri ou une sélection selon tes paramètres tu y gagnerais 80% de temps d'exécution

    après tu peux faire ce que tu désire dans une variable tableau de la même dimension de ta plage soit 2 dims x lignes sur y colonnes

    et travailler dans une boucle parfois c'est indispensable mais les filtres resteront les plus rapide ca c'est certain

    tout dépends de ce que tu veux faire en fait

    tu peux meme créer des variables tableau sur la base de plage filtrées se qui si j'ai bien compris serait tout indiqué
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre éprouvé
    Homme Profil pro
    ingénieur qualité
    Inscrit en
    Mars 2015
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : ingénieur qualité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 600
    Par défaut
    Bonjour, et merci de la réponse complète.

    Je ne suis pas sur de bien comprendre:
    a partir du moment ou on travaille sur un nombre de lignes importantes les filtre Excel sont parfait pour exécuter un tri ou une sélection selon tes paramètres tu y gagnerais 80% de temps d'exécution
    Tu parles bien de faire faire le tri dans excel via une macro? J'utilisais ça il y a bien longtemps mais le temps gagné dans le traitement des données était perdu était perdu dans la réalisation du filtre.
    Je suis depuis passé par Range.find qui fonctionne plutôt bien quand on ne filtre que sur une colonne et qui perd en efficacité quand on multiplie les colonnes de filtres.
    Une solution que j'ai utilisé était de faire une colonne qui concaténait l'ensemble des données clefs. Il y a quelques cas où ça ne fonctionne pas.

    La nuit portant conseil j'ai trouvé une bonne part de ma réponse: il vaut mieux, dans mon cas, ne pas utiliser un tableau à N dimensions. Pour une raison simple : je n'ai pas une formation de développeur/programmeur, mon successeur (il est fort probable que j'en ai un un jour ou l'autre) ne le sera probablement pas non plus. je vais grandement lui faciliter la vie en gardant un système proche des outils utilisés habituellement.
    Le message de patricktoulon renforce cette décision.

    Je vais tester un peu toutes ces méthodes. Je vous tiens au courant des conclusions et je clôture le sujet.

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    A voir si c'est applicable (et utile) dans ton cas.
    Tu pourrais te créer un type de variable personnalisé qui permet de clarifier le code.
    Exemple bidon :
    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
    Type ma_var
        nom As String
        client As String
        jalonEtat(1 To 3) As long
        jalonDate(1 To 3) As Date
    End Type
     
    Sub test()
        Dim projets() As ma_var, pro As Long, i As Long
        ReDim projets(1 To 5)
        For pro = 1 To 5
            projets(pro).nom = "projet truc" & pro
            For i = 1 To 3
                projets(pro).jalonDate(i) = Date
            Next i
        Next pro
    End Sub
    Les tableaux dans type peuvent être sans dimension et redimensionné à la bonne valeur dans le code.
    eric

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

Discussions similaires

  1. Trouver le nombre de ligne pour chaque tableau de chaque feuille
    Par andy05 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/03/2014, 00h58
  2. Réponses: 4
    Dernier message: 27/08/2013, 20h10
  3. Identifier le nombre de dimensions d'un tableau
    Par puresprit dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 28/06/2012, 18h10
  4. nombre d'éléments pour un tableau
    Par sakura.haruno dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 10/12/2007, 09h11
  5. Nombre de dimensions d'un tableau multidimensionnel
    Par Bruno75 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 08/07/2005, 10h03

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