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

Access Discussion :

Ecrire des valeurs dans un objet OLE Excel


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 18
    Points
    18
    Par défaut Ecrire des valeurs dans un objet OLE Excel
    Boujours,

    J'ai crée dans un formulaire un cadre d'objet indépendant de type Excel 2000.
    (Les propriétés "Application OLE" et "Classe Objet" valent respectivement "Microsoft Excel 2000" et "Excel.Sheet.8".)

    A l'aide d'une macro, je récupère des données d'un fichier *.LOG et les stocke dans une variable. (tableau(14,25) as variant)

    Comment faire pour mettre les données de cette variable dans le cadre d'objet indépendant?

    Je n'ai malheureusement pas réussis à trouver dans l'aide VBA comment faire.

    Merci d'avance

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,

    Les contrôles cadre d'objet indépendant et cadre d'objet dépendant sont des containers de document OLE.
    Un document OLE est un objet créé par un serveur OLE.

    Pour "accéder" au document OLE contenu dans le cadre d'objet, tu dois utiliser la propriété Object du contrôle cadre d'objet.

    Attention, il y a parfois des "pièges".
    Dans ton cas, le container OLE (cadre d'objet) contient probablement un objet de type Excel.Workbook et non pas Excel.Worksheet.

    Pour en être certain, vérifie le type de l'objet, par exemple grâce à un MsgBox. Je suppose que le contrôle cadre d'objet s'appelle CtrlOLE; trouve le moyen d'exécuter le code qui suit dans une procédure événementielle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Typename(CtrlOLE.Object)

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    c'est bien un Excel.Workbook. Mais comment je fais pour l'éditer depuis VBA?
    Il me manque 2-3 notions...

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,
    Citation Envoyé par NewbiePower
    c'est bien un Excel.Workbook. Mais comment je fais pour l'éditer depuis VBA?
    Il me manque 2-3 notions...
    Pour les notions, ce site est à ta disposition.
    Il y a plein de ressources .

    Je vais te mettre le pied à l'étrier.

    Code pour créer une variable objet (ici oWB) qui fait référence à l'objet Excel.Workbook contenu dans un contrôle cadre d'objet (ici CtrlOLE).
    Une fois la référence obtenue, on peut accéder à une plage de cellules pour y copier les données (ici la plage de cellules commence à la cellule A1 de la première feuille de données et peut-être unique feuille de données ?).

    Pour dimensionner la plage de cellules où le tableau sera copié, je fais l'hypothèse que, dans ton tableau, l'indice de base est 0.
    Ce qui revient à définir tableau(0 To 14, 0 To 25), par conséquent les tailles des dimensions sont respectivement de 15 et 26.
    Si ce n'est pas le cas, à toi d'adapter.
    .
    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
    18
    19
    20
    21
    22
    Dim i As Integer, j As Integer
    Dim tableau(14, 25) As Variant
     
    Dim oWB As Excel.Workbook
    Dim oRange As Excel.Range
     
    ' initialiser les valeurs du tableau
    ' ??? pour tester, j'utilise des nombres aléatoires
    For i = 0 To 14
        For j = 0 To 25
            tableau(i, j) = Int((100 - 1 + 1) * Rnd + 1)
        Next j
    Next i
     
    ' référencer le classeur Excel
    Set oWB = CtrlOLE.Object
     
    ' dimensionner et référencer la plage de cellules
    Set oRange = oWB.Worksheets(1).Range("A1").Resize(15, 26)
     
    ' copier le contenu du tableau dans la plage de cellules
    oRange.Value = tableau

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 18
    Points
    18
    Par défaut ca marche!
    youpi!

    Mon problème est résolu.
    J'ai juste du faire une petite modification dans le code. J'ai changé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim oWB As Excel.Workbook
    Dim oRange As Excel.Range
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim oWB As Object
    Dim oRange As Object
    sinon j'obtient une erreur de compilation : Type défini par l'utilisateur non défini

    Mais ca marche comme ca

    Encore merci

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

Discussions similaires

  1. [AC-2007] recupérer une valeur dans un Objet OLE Excel
    Par lewebr dans le forum IHM
    Réponses: 3
    Dernier message: 07/08/2011, 09h05
  2. Ecrire des valeurs dans un fichier
    Par Sébastien89 dans le forum C++
    Réponses: 1
    Dernier message: 11/12/2008, 09h07
  3. modifier des valeurs dans l'objet Request?
    Par airod dans le forum Zope
    Réponses: 2
    Dernier message: 27/05/2008, 15h36
  4. Macro - Ecrire des valeurs dans une table
    Par gojaru dans le forum Access
    Réponses: 2
    Dernier message: 17/08/2006, 13h54
  5. ecrire des valeurs dans un tableau via formulaire
    Par kenny49 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/07/2006, 10h23

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