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

VBA Access Discussion :

[VBA ActivX] Créer un objet Name [OWC10.Spreadsheet.10] [À faire]


Sujet :

VBA Access

  1. #1
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut [VBA ActivX] Créer un objet Name [OWC10.Spreadsheet.10]
    : : : :

    Bonjour à tous,

    Précision préalable : les objets dont il est question sont des objets Microsoft Office Web Component, fournis par la bibliothèque OWC10. En l'occurence il est question de l'objet Spreadsheet.

    Voivi mon problème :
    Je ne parviens pas à ajouter des objet Name "valides" en utilisant la méthode Add de la propriété Names de l'objet Spreadsheet.ActiveWorbook.

    Voici le code que j'utilise dans le module du formulaire qui contient l'objet OWC10.Spreadsheet.10 dans un contrôle ActivX :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me!Spreadsheet1.ActiveWorbook.Add "Pfff", "Sheet1!$A$1"
    Résultat : je crée bien un objet Name qui s'appelle "Pfff", en revanche, cet objet ne fait pas référence à la cellule $A$1 de la feuille Sheet1...
    Il ne fait référence à aucune cellule car sa propriété RefersTo renvoie "Sheet1!$A$1", avec les guillemets, au lieu de renvoyer simplement Sheet1!$A$1, sans guillemets.
    Du coup, évidemment, il est impossible d'utiliser la propriété RefersToRange pour renvoyer l'objet Range auquel devrait faire référence l'objet Name "Pfff"

    Conclusion :
    je ne comprends pas ce qui m'échappe ou ce qui cloche, aussi votre aide sera vraiment la bienvenue

  2. #2
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Qui aurait la gentillesse de faire un petit test et me communiquer son résultat ?


    1) Dans un form, insérez un objet Microsoft Office Spreadsheet.

    2) Sélectionnez la cellule A2.

    3) Dans la barre d'outils de l'objet Spreadsheet, cliquez sur le bouton Commandes et options. Affichez la page Formule.

    4) Là, vous pouvez entrez un nom et cliquez sur Définir. Essayez le nom suivant : nom1

    Tout va bien ! On peut voir d'ailleurs à quelle cellule fait référence le nom que vous venez de définir :
    Si vous avez bien sélectionné la cellule A2, ça donne :
    Fait référence à : =Feuille1!$A$2

    5) Maintenant, essayez de créer un autre nom faisant référence cette fois-ci à la cellule A1. Essayez avec ce nom : nom2

    Attention : cette fois-ci n'utilisez que VBA. (Pour cela il faut créer un objet Name de la collection Names).

    Quel est votre résultat ?
    Si vous sélectionnez la cellule A2 et répétez l'étapes 3), qu'inquent les propriétés Nom : et Fait référence à :

    Par pitié ce serait vraiment bien si vous pouviez faire ce petit essai

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    salut FRED.G

    Me!Spreadsheet1.ActiveWorbook.Add "Pfff", "Sheet1!$A$1"
    je ne suis pas sur que ca créé un objet Name...

    sinon, j'ai fait ton test, j'ai d'abord eu un bug chelou, je ne pouvais pas nommer par l'interface l'objet nom1, ni nom2, mais nom oui... !!

    j'ai par contre le même problème que toi pour référencer la cellule, j'ai essayé différentes syntaxes avec des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WorkSheets(1).Range("$A$1")
    voire des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me!Spreadsheet1.WorkSheets(1).Range("$A$1")
    j'arrive pas non plus à référencer la cellule.

    bon, je continue à chercher un peu

  4. #4
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    ah ! merci ! enfin quelqu'un qui s'interesse à mon pb ! c'était inespéré

    Merci NiKro75 !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    un rendu pour un prété

    je comprends pas comment sont référencées ces cellules... J'ai une syntaxe qui marche, enfin qui est propre, mais qui ne fait rien !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me!Spreadsheet1.Worksheets(1).Range("$A$1")
    en 'RefersTo' (même si c'est lourd, c'est sensé être précis !)
    pourtant, ca marche car avec 'Value', on peut modifier la valeur...

  6. #6
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Citation Envoyé par NiKro75
    salut FRED.G

    j'ai fait ton test, j'ai d'abord eu un bug chelou, je ne pouvais pas nommer par l'interface l'objet nom1, ni nom2, mais nom oui... !!
    Ouais, en fait c'est de ma faute j'ai indiqué des noms qui sont surement interprétés comme des références, à savoir numéro de ligne (1) précédé du numéro de colonnes exprimé en lettre (nom)...

    Donc t'as bien fait de supprimer le numéro...

    Citation Envoyé par NiKro75
    Me!Spreadsheet1.ActiveWorbook.Add "Pfff", "Sheet1!$A$1"
    je ne suis pas sur que ca créé un objet Name...
    Excuse-moi c'est bien sûr :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me!Spreadsheet1.ActiveWorbook.Names.Add "Pfff", "Sheet1!$A$1"

    Citation Envoyé par NiKro75
    j'ai par contre le même problème que toi pour référencer la cellule, j'ai essayé différentes syntaxes avec des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WorkSheets(1).Range("$A$1")
    voire des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me!Spreadsheet1.WorkSheets(1).Range("$A$1")
    j'arrive pas non plus à référencer la cellule.
    Dans quel contexte as-tu ce pb ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    l'aide précise qu'un certain nombre de paramètres ne sont pas pris en compte.
    ca marche pt etre pas...

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Dans quel contexte as-tu ce pb ?
    tu veux dire quoi par là ?

    si c'est où je l'écris, c'est ce que j'utilise en tant qu'argument 'RefersTo'

  9. #9
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Citation Envoyé par NiKro75
    un rendu pour un prété
    Merci

    Citation Envoyé par NiKro75
    l'aide précise qu'un certain nombre de paramètres ne sont pas pris en compte.
    ca marche pt etre pas...
    Où ça ?

    Citation Envoyé par NiKro75
    Dans quel contexte as-tu ce pb ?

    tu veux dire quoi par là ?

    si c'est où je l'écris, c'est ce que j'utilise en tant qu'argument 'RefersTo'
    C'est moi m'embrouille... En fait je croyais que l'argument 'RefersTo' était de type String mais en fait il est de type variant, donc je comprens pourquoi tu cherches à renvoyer un objet Range...
    Et tu dis que ça ne marche pas ?
    Maintenant que j'ai compris je vais tester pour essayer de comprendre; en tout cas je suis sûr qu'on avance...

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    j'ai trouvé

    en fait, comme on est sous Access et qu'on 'parle' Excel, certaines Métode/Objets/Arguments/etc sont un peu ambigü, et donc ca marche pas très bien.
    Comme tu disais dans mon post, ca marche mieux en définissant bien les objets, ici, pareil, sauf que c'est pour les arguments. c'est lourd, mais précis...

    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me!Spreadsheet1.Names.Add "test2", RefersTo:="=Feuille1!$A$1"
    ca marche chez moi !!

    question subsisdiaire : un objet 'Spreadsheet' a dans la propriété 'ControlType' la valeur 119. J'arrive pas à trouver ce à quoi ca correspond, pour par exemple écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim objSpreadsheet as [b]????[/b]
    Set objSpreadsheet = Me!Spreadsheet1
    ??

  11. #11
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Franchement bien joué, sans toi je crois que j'en aurais mis du temps avant de penser à nommer les arguments :o
    Sinon l'argument RefersTo est de type Variant mais c'est bien une chaîne qu'il faut passer et non l'objet Range lui-même. Comme ça c'est clair et précis pour les futurs lecteurs


    Si j'ai bien compris ta dernière question, tu veux savoir comment déclarer un objet spreedsheet...

    Moi je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim spd as OWC10.Spreadsheet
    j'espère que c'est ce que tu voulais, auquel cas je vais pouvoir mettre un beau RESOLU, grâce toi, merci... ça c'est du retour d'ascenceur

  12. #12
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Citation Envoyé par NiKro75
    question subsisdiaire : un objet 'Spreadsheet' a dans la propriété 'ControlType' la valeur 119. J'arrive pas à trouver ce à quoi ca correspond
    Au fait, ultime précision ( )

    Ne pas confondre le contrôle placé dans le formulaire (c'est lui le type 119 = CustomControl) et l'objet ActivX (en l'occurence Spreedsheet) qu'il contient...

    Ainsi ta variable sera parfaitement initialisée comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim objSpreadsheet as OWC10.Spreadsheet 
    Set objSpreadsheet = Me!Spreadsheet1.Object
    Dernière remarque: tu peux déclarer et manipuler des objets 'Spreadsheet' uniquement à l'aide de variable dans le code (grâce à la bibliothèque OWC10); tu n'est pas obligé d'insérer le contrôle dans ton form... Enfin tout dépend de tes besoins...

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Merci pour les précisions, c'est bien ce que je me demandais

    Par contre, ce control me parait un peu limité pour l'Edition, beaucoup de fonctionnalité d'Excel lui manque

    a+ !

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

Discussions similaires

  1. [XL-2010] VBA Excel "Erreur 429 un composant ActiveX ne peut pas créer d'objet"
    Par esimo dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 07/09/2014, 18h32
  2. [XL-2002] vba OWC10.Spreadsheet, Controls.Add
    Par sabzzz dans le forum Excel
    Réponses: 1
    Dernier message: 13/03/2010, 16h35
  3. [C#] Créer des objets Winform personnalisés
    Par KibitO dans le forum Windows Forms
    Réponses: 8
    Dernier message: 31/05/2005, 17h09
  4. [Info]Créer un objet persistent
    Par seb55555 dans le forum JDBC
    Réponses: 5
    Dernier message: 22/02/2005, 16h53
  5. Créer des objets sur la pile ?
    Par Cornell dans le forum Langage
    Réponses: 8
    Dernier message: 03/03/2003, 11h47

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