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 :

Est-ce possible ? Plugin VBA par defaut dans excel


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Est-ce possible ? Plugin VBA par defaut dans excel
    Bonjour,

    j'aimerais integrer sur tous les postes de mon equipe une sorte d'extension Excel qui serait une fonction VBA,

    En gros ce serait une fonction VBA dans l'esprit de RechercheV dans un referentiel Excel qu'on a, selon ni'mporte quelle cellule clé genre :

    =Referentiel(A1;"CODE";"LIBELLE")

    ou Referentiel() va chercher A1 dans la cellule "CODE" du referentiel excel et me retourner la cellule "LIBELLE" liée,

    donc pas de soucis pour moi pour coder cette fonction, mais peut-on deployer cette fonction sur tous les postes, sur n'importe quel classeur excel ?

    En gros mon collegue crée un nouveau classeur, il tape "XYZ123" dans A1 et "=Referentiel(A1;"CODE";"LIBELLE")" dans B1 et j'ai mon libellé ?

    Le referentiel sera sur le reseau, accessible par tous.

    Possible ou pas ?

    Merci !

  2. #2
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    Il suffit de le mettre dans les macro complémentaires pour que ce soit accessible à l'ouverture d'Excel.

    Par contre, pour le déploiement, c'est un peu plus compliqué, il faut recopier le .xla sur tous les postes et vérifier que chaque Excel l'a bien pris en compte. Mais ça doit marcher normalement.

  3. #3
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    ok parfait, je viens de trouver la doc, et c'est bien ca

    Faut justre faire attention aux feuilles qui sortent par email, quand elles atterissent sur des postes sans ce XLA

    Question subsidiaire, existe t'il un RechercheV à qui on pourrait preciser le numero de la colone clé ?
    Car RechercheV cherche dans la colonne 1 et retourne la colonne qu'on lui indique, mais j'aimerais preciser les deux!

  4. #4
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    Il faut travailler avec INDEX et EQUIV dans ce cas.

  5. #5
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    En effet, c'est bien avec Index et Equiv que j'y arrive,

    par contre, impossible de faire marche ma Function, soucis quand passage vers VBA, en gros, sous excel pur, j'ai ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX('C:\Users\XX0000\Desktop\[ref.xlsm]Ref'!$A:$X;EQUIV(A1;'C:\Users\XX0000\Desktop\[ref.xlsm]Ref'!$A:$A;0);6)
    qui me renvoit la colonne n°6 dans le range $A:$X qui est liée a la valeur de A1 trouvée dans ref.xlsm dans la collone A,

    je souhaite donc creer la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function Referentiel(Source as Variant, Type as String, Retour as String) as Variant
    que j'appelerais comme ceci dans ma cellule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Referentiel(A1; "CODE_BLABLA"; "LIBELLE_TOTO")
    avec une petite association au debut de la fonction Referentiel qui dit que :

    CODE_BLABLA = Colonne 1,
    LIBELLE_BLABLA = Colonne 2,
    LIBELLE_TOTO = Colonne 3

    Pas de soucis pour l'association, c'est pour le passage en VBA de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX('C:\Users\XX0000\Desktop\[ref.xlsm]Ref'!$A:$X;EQUIV(A1;'C:\Users\XX0000\Desktop\[ref.xlsm]Ref'!$A:$A;0);6)
    que je bloque

    Une piste ?

    Je pensais à genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim equi as Variant
    equi = Application.worksheetfunction.match(Source, 'C:\Users\XX0000\Desktop\[ref.xlsm]Ref'!$A:$A, 0)
    mais deja la ca bloque, je pense que le soucis vient de ma syntaxe sur le second parametre de match

  6. #6
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    Tu es sur la bonne piste, mais il faut utiliser des Ranges dans les paramètres

  7. #7
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    J'ai beau essayer, ca me semble pas possible sans ouvrir physiquement le classeur via VBA

    Du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim sh As Worksheet
        sh = Workbooks("C:\Users\XX0000\Desktop\ref.xlsm").Worksheets("Ref")
     
        Dim ra As Range
        ra = sh.Range("$A:$A")
     
        Dim mat As Long
        mat = Application.WorksheetFunction.Match("A13", ra, 0)
    bloque sur le Workbooks(), c'est jouable en VBA de referencer un classeur fermé ?

    Sans passer par ADO ?

    Sinon autre idée, J'ai ma formule excel qui marche à base de Index(Equal()),
    c'est pas jouable que ma formule Referentiel() traduise en formule excel, et remplace dans la cellule ? il restera à tirer vers le bas pour remplir les tableaux, et ce sera peut etre plus efficace niveau lectures de fichier non ?

  8. #8
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    Effectivement, ça ne marchera pas de cette manière sans ouvrir physiquement le classeur VBA. Après, tu peux toujours l'ouvrir en arrière-plan, ce sera transparent pour l'utilisateur. Ou encore écrire la formule dans une cellule pour ne pas utiliser WorksheetFunction. Mais tu vas avoir un gros problème de performance dès qu'il y aura trop d'accès à ta fonction dans un classeur.

    J'avais déjà travaillé sur ce type de problème. Au début de ma fonction, je vérifiais si le classeur était ouvert ou pas et adaptait en fonction. Je conseillais à ceux qui l'utilisaient d'ouvrir le classeur pour que ce soit plus rapide.

    Au final, j'ai réussi à les convaincre de faire une base Access (Pour moi, quelqu'un qui dit qu'il a fait une base de données sous Excel, je me dis "aïe, aïe, aïe" - Sauf bien sûr pour une application mono-utilisateur, avec des données limitées et sans requêtage)

  9. #9
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    En fait, ils ont 3 logiciels lourds (SAP, Arcgis pour situer),
    Avec un export hebdomadaire vers plusieurs Excels,

    et un des collegues recolle tout sous excel en faisant les liaisons entre les ID des un et des autres,

    mais la base de données commune , c'est un projet que je veut developper

    En attendant, ils ont souvent des listes de codes, id ou libellés, et ne maitrisent pas RechercheV pour integrer certains champs à ces listes pour faire leurs traitements

    Ma fonction marche la, pas super propre mais j'ai pas trouvé mieux :

    Etape 1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Referentiel("A", "CD_SAP", "LIB_ARCGIS")
    Ce qui pond dans ma cellule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX('C:\Users\XX0000\Desktop\[ref.xlsm]Ref'!$A:$X;EQUIV(A35;'C:\Users\XX0000\Desktop\[ref.xlsm]Ref'!$D:$D;0);22)
    Apres, copier / collage valeur dans la meme cellule et roule

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/09/2012, 15h19
  2. sous parametre par defaut dans plugin
    Par gtraxx dans le forum jQuery
    Réponses: 3
    Dernier message: 10/11/2011, 11h14
  3. Réponses: 3
    Dernier message: 27/05/2011, 11h47
  4. Réponses: 3
    Dernier message: 02/02/2010, 06h46
  5. [VBA-E] est-ce possible de faire intervenir des données excel dans un html?
    Par guismoman33 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/03/2007, 12h22

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