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 :

un gros projet en Excel 2010 VBA


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Directeur General & COO
    Inscrit en
    Octobre 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Philippines

    Informations professionnelles :
    Activité : Directeur General & COO
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 17
    Points : 7
    Points
    7
    Par défaut un gros projet en Excel 2010 VBA
    Bonjour à tous,
    Environnement win 7 32 pro (en prévision 64) office 2010 pro VBA 7.0

    desole d'etre si long dans mon message, les autre seront plus court

    Il y a sans doute pas mal de réponse a l’intérieur du forum mais je dois avouez que aucune ne répond complètement à mon/mes besoins et fouiller partout dans plus de 16,000 post est un travail de fourmi que je ne peux pas me permettre pour le moment, donc si vous pouvez me répondre ne serait-ce que en me donnant l’url de la discussion traitant un cas particulier, ce sera grandement apprécies.

    Si l’on doit découper cette demande en plusieurs modules, guider moi et je découperai dans les bons endroits (je suis nouveau mon premier post) en gardant une liaison avec la demande initiale, qui sait cela pourra peut-être servir à quelqu’un…

    A lire plusieurs des post du forum, j’en suis arrivé a la conclusion que les infos de base sur la problématique n’étaient pas souvent claires et il y avait plusieurs aller-retour avant de pouvoir donner un conseil (ou plusieurs au demandeur) . Alors voici une explication assez complète et complexe de ma problématique, et de mon projet tout en conservant une certaine discrétion. (business oblige )

    1- mise en contexte et ma presentation
    a. je suis un dinosaure de la programmation…. Ex-programmeur IBM assembly 370, cobol, cics, ims DB/DC, JCL,….. bref toute la panoplie des mainframes vos ancêtres, et au niveau PC …. MS/DOS 6.0. Même si je suis un utilisateur win 7 32 et 64 je dis bien UTILISATEUR et de base.
    b. j’ai abandonné la programmation pour me concentrer sur l’analyse, la modélisation des données et architecture, puis gestion de projet et enfin direction de programme, BPM, PMO etc… mais je suis toujours resté en TI ou très proche.
    c. Conclusion :
    plus une ligne de code depuis pfeuuuuu des lustres, exception faite de quelques formules un peu compliquées parfois dans mes tableurs Excel d’analyse de performance, pour le reste je donnais mon analyse de besoins a une des équipes et j’avais le résultat.

    2- Seulement voilà…..
    a. Maintenant, je suis directeur général d’un backoffice internet startup (je serais discret sur le nom et le métier – disons du B2B), l’équipe de développement est réduite, se situe sur un autre fuseau horaire que le mien, est sur « booker » un peu à cause de mes besoins en amélioration des processus et toutes celles que le MKG peut développer
    b. J’ai besoin d’analyses, de rapport,…. D’un CUBE de données que je puisse manipuler à ma convenance pour piloter ma production (développement des partenariats, facturation/encaissement, qualification des demande, dispatcher, surveillance de la qualité…) et pour le moment pas question de créer un « entrepôt » les besoins sont trop variables et évolutifs (startup oblige )
    c. Comme je dispose assez facilement d’export en .xls je me suis donc oriente vers EXCEL que je connais correctement (VBA en apprentissage) pour construire mon CUBE avec plusieurs faces la liaison entre les faces se faisant par identifiant donc une pseudo base plus hiérarchique que relationnelle
    i. Une face marche (pays-volume estime-importance, etc)
    ii. Une face partenaire (profil capacitaire, pays, etc)
    iii. Une face client
    iv. Une face vente
    v. Etc.
    les croisements selectifs de 1, 2, 3 voir 4 faces avec analyses statistiques me donnant une vision de la tendance et de notre direction…. Et donc de pouvoir corriger la direction pour s’aligner sur la tendance.
    d. Vivant dans une ile paradisiaque sous les tropiques (ne soyez pas jaloux si j’habite a 20m de la mer sous les cocotiers il y a aussi un prix à payer comme les typhons et les tremblements de terre), même avec une université américaine sur place, après quelques « tests » de développeurs stagiaires locaux en fin de cursus de formation, j’ai dû me rendre à l’évidence je ne dispose pas de ressources locales compétentes pour programmer, même en cherchant des seniors locaux
    i. Excel inconnu ou même pas au niveau d’une secrétaire
    ii. Aucune curiosité pour apprendre…..
    au résultat j’ai mis au panier tout ce qu’ils ont pu faire, à peine capable de d’utiliser l’instruction DIR dans une boucle pour lire les noms des fichiers…
    e. les developpeurs senior que vous etes etant pour le moment trop eleve pour mon budget d'operation .
    Je me suis donc résous à retourner en programmation............... VBA dans mes heures supplémentaires et je redécouvre un univers qui en 20 ans a évoluer et JE TIRE MON CHAPEAU a tout ceux qui sont capables de savoir qu’elle méthode, fonction, procedure à utiliser et comment la coder (avec la « bien vaillante » discrétion Microsoft sur le contenu des API, dll etc…bande d’enffoire !!!)

    3- Maintenant, j’aurais besoin de vos conseils car même si j’ai déjà réalisé quelques macro lisant plusieurs fichiers, faisant la mise en forme paginée de rapports statistiques, j’avoue que je pédale fort (même si je prends mon pieds a le faire ).
    mon objectif (pour le moment) a partir de 7 exports Excel serait de construire un fichier EXCEL MAITRE, qui comprend les paramètres de travail et de rapport (journalier, semaine, mensuel) pour différentes analyses, que je peux lancer en automatique (exemple 0h15) ou à la demande. Avec envoi automatique par Outlook (ca je sais faire, au bon destinataire me reste a apprendre)
    J’envisage ce MAITRE en modulaire utilisant
    a. Plusieurs feuilles paramètres (techniques et de configuration a la demande)
    b. des sub function private
    c. des modules externes regroupant des fonctions particulières
    d. Des fonctions spécifiques de contrôle de gestion des fichiers .xls en entrée et sortie et cohérence des données Exemple : mes exports sont systématiquement constitues d’une première ligne avec les noms des champs dans la base et de la ligne 2 a n des données. Mais je ne suis pas le seul à vouloir ces exports et bien sur même si les noms de champs restent les mêmes (on va changer tous les programmes du système pour vouloir changer un nom de données) ils sont susceptibles de changer de place dans l’export.
    J’ai donc conçu une fonction d’analyse de la position des champs (position colonne) et qui récupère la valeur de la dite colonne pour pouvoir la donner en paramètres de façon à ne jamais (ou presque) me retrouver avec un champs invalide et ma function traite le cas anormal et m’envoie un e-mail d’alerte, avec alerte a l’écran.
    e. Le maitre contiendra et fera :
    i. la liste de toutes les données en PUBLIC
    ii. la liste des noms officiels de données dans une feuille excel
    iii. le traitement de la « date de traitement » de la durée et du rapport d’exécution
    iv. Call - Mise à jour de profil marche, partenaire, client, vente… si un fichier a été déposé dans les répertoires predefinis, avec bien sur nettoyage et archivage du dis fichier
    v. l’orientation des traitements
    1. call ouverture-cohérence

    3. CALL aux fonctions demandées par l’utilisateur et bien sur interaction avec l’utilisateur si besoin est
    4. Génération de rapport
    5. Call fermeture
    6. Rapport d’exécution
    f. Je voudrais également pouvoir installer le module maitre sur les postes de mon équipe, mais que les exports datas soient sur un serveur fichier qui lui est….. LINUX

    Maintenant que vous avez une idée « globale » de la « patente a gogosse » que pourriez-vous me conseiller:
    1- Pseudo découpage fonctionnel et comme méthode VBA à utiliser avec toujours en vue le besoin de performance, travailler en fichier ferme ADODB ?
    2- est-il possible en VBA, lorsqu’un module est stabilise de le compiler en exécutable du type dll
    3- existe-t-il une liste des dll dans l’API ? et surtout comment les utiliser ? ou pouvez-vous me recommander un certain nombre control VBA intéressant ? gestion de date, comparaison de date, gestion de fichier.... ou puis-je trouver (en francais cela me fera du bien de lire ma langue natale) une liste exhaustive du contenu VBA

    4- Je me suis heurte plusieurs fois a des difficultés d’appel de module, si je code une fonction a l’intérieur du même module aucun problème, mais si je veux regrouper mes différentes fonctions de même type dans des modules spécialisés et appeler une fonction particuliere…. VBA est incapable de résoudre et il ne trouve ni le module ni la fonction exemple
    a. Module gestion fichier
    i. Fonction vérification cohérence fichier - j’ai bien tous mes champs et je veux récupérer leur position pour l’utiliser dans différentes fonctions indépendamment de l’évolution du fichier export. A partir du MAITRE faire un appel à la fonction
    -----------MAITRE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Call Fichier_coherence_verif ( nom_fichier,  _
                                                         feuille_parrametre, _
                                                         DATA_1, DATA_2,…….etc)
    ----------------------------------------------------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SUB gestion_fichier ()
    End sub 
    Private Function Fichier_coherence_verif ( nom_fichier,  _
                                                         feuille_parrametre, _
                                                         DATA_1, DATA_2,…….etc
    end Function

  2. #2
    Membre éclairé 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
    Points : 758
    Points
    758
    Par défaut
    Bonjour,

    Et bien, c'est un gros boulot que tu entreprends !

    Pour les questions préliminaires, quand tu déclare Private Sub, la procédure est limité au module ou elle est écrites, donc pas d'appel possible depuis un autre module. Un simple Sub suffit, sans le Private.

    Pour ta question 2, je ne sais pas trop si c'est possible de compiler une dll, mais microsoft propose des fichier xlam, qui fonctionne comme des AddIn.
    C'est à dire que tu peux créer un fichier xlam à partir de tes modules stables, et ensuite les lier à différents projet xlsm.

    Pour ta question 3, tu peux regarder l'explorateur d'objet (F2), qui va te lister tous les objets, avec leurs méthodes/propriétés :
    Nom : Sans titre.png
Affichages : 996
Taille : 44,5 Ko

    En espérant t'aider un peu dans ton projet
    Citation Envoyé par Oscar Wilde
    Je déteste les discussions: elles vous font parfois changer d'avis.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut,

    Si c'est un gros projet, je plussoie Nico Chg pour l'AddIn.
    Il n'est pas possible de faire de dll nativement avec le VBA.

    Pour conserver une plus grande clareté dans un projet, il ne faut presque que des modules de classe/object. Les modules standard sont bon pour tout ce qui est Variable, Type, Enum, Constante ou pour les fonctions visible depuis Excel. Toutes les fonctions publiques qui sont déclarés dans un module standard pollue l'environnement de travail car déclaré dans l'espace de nom global du project. Si il y a 100 fonctions publiques, les 100 fonctions seront accessibles comme ça directement. C'est pas terrible.
    L'avantage des classes sera que tu pourras tout hiérarchiser.

    Voir la FAQ également :
    FAQ Excel
    FAQ Excel - Les macros VBA
    FAQ Excel - La manipulation des fichiers textes

    @+

  4. #4
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Pour la question 2 : non, ou du moins pas avec les outils standard du VBA dans Microsoft Office.

    Pour la question 3 : l'aide VBA intégrée à Excel est plutôt bien faite, surtout pour les objets VBA spécifiques à Excel. Elle donne des listes de membres de tous les objets, avec une courte description pour chaque et un renvoie à une page contenant une description plus complète.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Directeur General & COO
    Inscrit en
    Octobre 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Philippines

    Informations professionnelles :
    Activité : Directeur General & COO
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 17
    Points : 7
    Points
    7
    Par défaut merci pour ce debut de reponse
    Merci a tous pour ce debut de reponse a mes nombreuses question qui flottent dans ma tete et surgissent avec les blocages en cours de route.
    Oui c'est un gros projet, mais c'est vital pour moi si je ne veux pas travailler 70h par semaines rien que pour compiler les infos dont j'ai besoin pour decider des orientation de mes equipes.

    Menhir : tu dis "non, ou du moins pas avec les outils standard du VBA dans Microsoft Office." y a t-il des outils permettant cela ?

    Nouveau2 : que veux tu dire par "je plussoie Nico Chg pour l'AddIn." ? et merci pour les liens cela va me faire de la lecture de table de chevet

  6. #6
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par PingouinJaune Voir le message
    tu dis "non, ou du moins pas avec les outils standard du VBA dans Microsoft Office." y a t-il des outils permettant cela ?
    Je n'ai jamais utilisé Visual Studio mais comme il permet aussi de traiter du C, je suppose qu'il doit pouvoir créer des dll.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 765
    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 : 12 765
    Points : 28 623
    Points
    28 623
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Dans ton énumération 2 paragraphe b
    b. J’ai besoin d’analyses, de rapport,…. D’un CUBE de données que je puisse manipuler à ma convenance pour piloter ma production (développement des partenariats, facturation/encaissement, qualification des demande, dispatcher, surveillance de la qualité…) et pour le moment pas question de créer un « entrepôt » les besoins sont trop variables et évolutifs (startup oblige )
    Connais-tu PowerPivot qui un Add-In téléchargeable gratuitement, qui permet de créer un cube de données et qui je pense doit répondre à ta demande.
    Je te conseille la lecture de Excel 2010 et PowerPivot de Jean-Philippe Gouigoux chez ENI
    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

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Directeur General & COO
    Inscrit en
    Octobre 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Philippines

    Informations professionnelles :
    Activité : Directeur General & COO
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 17
    Points : 7
    Points
    7
    Par défaut PowerPivot ???
    PowerPivot inconnue au bataillon, je regarde cela immediatement merci Philippe

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/10/2014, 13h48
  2. excel 2010 : VBA : graphiques se superposent
    Par markym dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/08/2014, 12h11
  3. [XL-2010] Impossible d'ouvrir un fichier excel 2010 (Vba)
    Par Nemesis-fr dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/12/2013, 14h57
  4. Refresh QueryTable (excel 2010 - VBA)
    Par cdurep dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 16/05/2013, 11h02
  5. Plantage du projet VBA avec Excel 2010 et 2003
    Par Franck_P dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/05/2012, 19h34

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