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 :

Enregistrer des paramètres dans une macro xla


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 855
    Points : 581
    Points
    581
    Par défaut Enregistrer des paramètres dans une macro xla
    Bonjour,

    Avec une macro xla, est-il possible d'écrire non dans une feuille du classeur xls mais dans une feuille de la macro xla elle-même?

    Je voudrais que chaque utilisateur puisse enregistrer ses propres paramètres nécessaires au fonctionnement de la macro.

    Merci

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    Bonjour jlgcf,

    Si je comprends bien ta question...

    Une macro complémentaire (.xla) est avant tout un fichier sans aucune feuille visible. Ce classeur n'est donc jamais le classeur "actif". Ainsi, dans ton code, si tu dois pointer sur une feuille de ce classeur particulier, tu ne dois donc pas faire référence à l'ActiveWorkbook ou l'ActiveSheet par exemple.

    Pour ne pas te tromper, le moyen le plus sûr est encore d'utiliser systématiquement la propriété ThisWorkbook, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Sheets(1).Range("A1").Value = LaValeur
    La propriété ThisWorkbook renvoie toujours le classeur dans lequel le code s'exécute.

    Cordialement,

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 855
    Points : 581
    Points
    581
    Par défaut
    Ok merci je vais tester cela et reviendrai

    Je me suis aperçu par ailleurs que dans mon classeur j'avais la même procédure à la fois dans Microsoft Excel Objets et dans Modules de classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Workbook_Open()
     
    .....
     
    End sub
    Une fois sous ThisWorkbook et une 2ème sous ThisWorkbook1

    A quoi correspond cette notion de "Modules de classe"?

    Merci pour ton aide

  4. #4
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    http://www.developpez.net/forums/d62...r/#post3667871
    Pour ecrire dans le classeur ouvert utiliser ActiiveWorkbook

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 855
    Points : 581
    Points
    581
    Par défaut
    Pas compris ce que tu voulais me dire

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 855
    Points : 581
    Points
    581
    Par défaut
    Citation Envoyé par myDearFriend! Voir le message
    Bonjour jlgcf,


    Pour ne pas te tromper, le moyen le plus sûr est encore d'utiliser systématiquement la propriété ThisWorkbook, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Sheets(1).Range("A1").Value = LaValeur
    La propriété ThisWorkbook renvoie toujours le classeur dans lequel le code s'exécute.

    Cordialement,

    Dans ton exemple c'est une procédure de la macro complémentaire qui va écrire dans une feuille du classeur xla.

    Si je veux aussi pouvoir écrire dans cette feuille du classeur xla à partir du d'une macro classeur xls, comment dois je faire référence à cette feuille de la macro complémentaire? Comme ceci ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
     
        Workbooks("Macro.xla").Worksheets(1).Range("A1").Value= _
        ActiveWorkbook.Worksheets("Feuil1").[A1].Value
     
    End Sub
    Merci

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    Re,

    Oui, ça me parait une façon de faire tout à fait correcte, mais le mieux est toujours de tester, qu'en penses-tu ?

    Attention toutefois à ActiveWorkbook : si tu fermes ton classeur xls par macro notamment, l'ActiveWorkbook ne sera pas forcément celui qui contient tes instructions (tout dépend de ce que l'utilisateur aura ouvert dans Excel). Je réitère donc mon conseil plus haut (n'en déplaise à delphidelphi ), il vaut mieux utiliser ThisWorkbook si tu veux faire référence au classeur contenant le code en cours.

    Il convient également de veiller à ce que la xla soit installée sur le poste de l'utilisateur, sinon.... plantage assuré !

    Par ailleurs, pour ma part, je ne suis pas très fan du mélange de notation Range("A1") et [A1] dans la même instruction. Pourquoi faire un mélange ? Soit tu optes pour l'un ou pour l'autre, mais mélanger les deux, je ne vois pas trop l'intérêt...

    Cordialement,
    Didier_mDF

  8. #8
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    ce code permts d'executer des actions achaque ouverture d'un fichier
    le code de class nomme class1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Option Explicit
    Public WithEvents App As Application
    Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
    If Wb.Name <> ThisWorkbook.Name Then
      With Wb
    'faire quelque chose a chaque ouverture d'un fichier
    .ActiveSheet.Cells(1) = Wb.Name 'ecrit le nom de fichier dans sa cellule1
    MsgBox "Actionner"
    End With
    End If
    End Sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Option Explicit
    Dim X As New Classe1
    Private Sub Workbook_Open()
    Set X.App = Application
    End Sub
    sinon voici le fichier

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 855
    Points : 581
    Points
    581
    Par défaut
    Citation Envoyé par myDearFriend! Voir le message
    Re,

    Par ailleurs, pour ma part, je ne suis pas très fan du mélange de notation Range("A1") et [A1] dans la même instruction. Pourquoi faire un mélange ? Soit tu optes pour l'un ou pour l'autre, mais mélanger les deux, je ne vois pas trop l'intérêt...

    Didier_mDF
    Je ne suis qu'un "amateur", c'est la raison ;-)

    Autrement ça marche. Il faut aussi sauvegarder la macro après écriture, aucun message ne rappelle de le faire

    Merci

    Citation Envoyé par delphidelphi Voir le message
    ce code permts d'executer des actions achaque ouverture d'un fichier
    le code de class nomme class1
    Ok merci mais je ne sais pas ce qu'est un "module de classe" ou un "code de classe" ni à quoi sert ce code

  10. #10
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    Bonjour
    Pour le bon déroulement de la discussion il est mieux que te nous donne plus de détails sur ton problème que commenter mes postes


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

Discussions similaires

  1. Ouvrir, Enregistrer des textbox dans une base de donnee ( DEBUTANT!)
    Par macfly77 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 01/12/2006, 13h21
  2. Réponses: 4
    Dernier message: 26/09/2006, 11h42
  3. enregistrer des variables dans une table via requete sql
    Par Echizen1 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 15/09/2006, 15h15
  4. Réponses: 10
    Dernier message: 13/09/2006, 09h13
  5. Réponses: 1
    Dernier message: 21/03/2006, 14h29

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