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 :

Une macro qui permet de de referencer un .xla sur plusieurs CL avec un code dans le "thisworkbook"


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 71
    Points : 31
    Points
    31
    Par défaut Une macro qui permet de de referencer un .xla sur plusieurs CL avec un code dans le "thisworkbook"
    Hello tous le monde

    J'ai un programme qui crée plusieurs fichiers excel et je voudrais creer un script qui permet de donné pour reference un fichier .xla (c'est à dire automatiser la procedure: Alt+F11 --> outils --> reference --> cocher le xla) + rajouter un code dans le 'thisworkbook" (idem dans le alt+F11 --> this workbook)

    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 261
    Points : 340
    Points
    340
    Par défaut
    Bonjour,

    cette ligne de code, dans le WorkBook_Open, te permet de référencer la xla...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ThisWorkbook.VBProject.References.AddFromFile _
    "C:\Documents and Settings\Ta_Macro.xla"
    Chemin et nom de la macro à adapter...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 71
    Points : 31
    Points
    31
    Par défaut
    ok merci et pour le code dans le "thisworkbook"
    Exemple: je souhaite que le fichier A.xls rajoute un code dans le "thiswokbook" du fichier .xls

  4. #4
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Un tuto pour manipuler l'éditeur de macro par macro, et donc écrire du code par macro
    http://silkyroad.developpez.com/VBA/VisualBasicEditor/

    Tu devrais y trouver ton bonheur

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 261
    Points : 340
    Points
    340
    Par défaut
    Re-,

    le code suivant ajoute un code évènementiel dans le ThisWorkBook du classeur actif

    Lorsque tu créés ton fichier (WorkBooks.Add....), tu es donc dans ce nouveau classeur..

    Essaie :

    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
    Sub Insert_Proc()
    'nécessite une référence à :
    'Microsoft Visual Basic For Applications Extensibility 5.3
    Dim DebutCode As Long
    Dim S As String
     
    S = "ThisWorkbook.VBProject.References.AddFromFile _" & vbLf
    S = S & """C:\Documents and Settings\TaMacro.xla"""
     
    With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
        DebutCode = .CreateEventProc("Open", "Workbook")
        .InsertLines DebutCode + 1, S
    End With
     
    End Sub
    N'oublie pas d'activer la référence citée en haut du code (ne sera utile que pour le classeur qui exécute le code....)

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 71
    Points : 31
    Points
    31
    Par défaut
    Merci j'ai trouvé ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        'Ajoute une macro dans le module
        With VBComp.CodeModule
            X = .CountOfLines
            .InsertLines X + 1, "Sub laMacro()"
            .InsertLines X + 2, "Range(""A1"").Value = ""Coucou"""
            .InsertLines X + 3, "End Sub"
        End With
    Mais pas j'ai pas trop compris la syntaxe ici je dois remplacer "CodeModule" par le code de mon module donc "thisworkbook"? mais ensuite je coprend l'autre paris du code.. la fonction... ou faut il que je copie le code que je souahite transferer?

    Merci

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 71
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par mapeh Voir le message
    Re-,

    le code suivant ajoute un code évènementiel dans le ThisWorkBook du classeur actif

    Lorsque tu créés ton fichier (WorkBooks.Add....), tu es donc dans ce nouveau classeur..

    Essaie :

    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
    Sub Insert_Proc()
    'nécessite une référence à :
    'Microsoft Visual Basic For Applications Extensibility 5.3
    Dim DebutCode As Long
    Dim S As String
     
    S = "ThisWorkbook.VBProject.References.AddFromFile _" & vbLf
    S = S & """C:\Documents and Settings\TaMacro.xla"""
     
    With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
        DebutCode = .CreateEventProc("Open", "Workbook")
        .InsertLines DebutCode + 1, S
    End With
     
    End Sub
    N'oublie pas d'activer la référence citée en haut du code (ne sera utile que pour le classeur qui exécute le code....)

    Ok merci pour la reponse

    Ici on active le addin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    S = "ThisWorkbook.VBProject.References.AddFromFile _" & vbLf
    S = S & """C:\Documents and Settings\TaMacro.xla"""

    mais ici j'ai pas trop compris la synthaxe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .InsertLines DebutCode + 1, S
    ou est ce que je peux rajouter mon code ?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 261
    Points : 340
    Points
    340
    Par défaut
    Re-,

    Tu as déjà un code de fait?

    J'ai un programme qui crée plusieurs fichiers excel
    Montre-le, et on pourra peut-être t'aider....

    Je te conseille également

    pour la ligne de code que tu ne comprends pas

    Et S n'est nullement un Add-in, mais une variable String, qui a la valeur marquée en Rouge....

    Lorsque tu as inséré cette variable, elle devient une ligne de procédure, dans le WorkBook_Open

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 71
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par mapeh Voir le message
    Re-,
    Tu as déjà un code de fait?
    Montre-le, et on pourra peut-être t'aider....
    C'est un programme à part realiser par quelqu'un d'autre

    Sinon pour le bouton F1 j'ai pas compris la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .InsertLines DebutCode + 1, S

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 71
    Points : 31
    Points
    31
    Par défaut
    Est ce que qu'un pourrais m'aider ?

    donc pour rajouter la reference je fais rajoute cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ThisWorkbook.VBProject.References.AddFromFile _
    "C:\Documents and Settings\Ta_Macro.xla"
    et pour ajouter une macro dans le module "thisworkbook" je fais comment?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
        DebutCode = .CreateEventProc("Open", "Workbook")
        .InsertLines DebutCode + 1, S
    End With

    la macro fait une 50ene de ligne il n'y pas de methode plus facile?

    merci

    et til possible d'exporter une module directement?
    car je dois transférer un module entier

  11. #11
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour,
    Exporter le module ne présente aucun intérêt, tu peu l'exporter manuellement dans un répertoir.
    Et dans le classeur que tu ouvre tu peu importer le module.

    et en VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Workbooks("NomDuClasseur.xls").VBProject.VBComponents.Import _
    "C:\Rép\Rép\Module1.Bas"
    Si le nom est Module1.
    Je ne crois pas que ça fonctionne pour un module de feuille ou de classeur. (jamais essayer)
    A+

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 71
    Points : 31
    Points
    31
    Par défaut
    non cela ne marche pas:
    De plus, le fichier orignal s'appel "diesearbeitmap" et dans la version "francaise de word cela donne "thisworkbook" :/

Discussions similaires

  1. Existe-il une macro qui permet de différencier des cellules identiques ?
    Par marion1857 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/04/2013, 16h57
  2. Macro qui permet de décocher une checkbox
    Par vince2712 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/08/2009, 08h49
  3. Macro qui permet de mettre une macro sur une poste
    Par Tinien dans le forum VBA Word
    Réponses: 4
    Dernier message: 26/11/2008, 01h17
  4. creation d'une macro qui permet d'imprimer
    Par INCO13 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/06/2008, 17h22

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