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 :

MsForms incorporé à une feuille : Incompatibilité de type à la déclaration


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Juin 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 3
    Par défaut MsForms incorporé à une feuille : Incompatibilité de type à la déclaration
    Bonsoir à tous,

    Avant de vous exposer mon souci, voici les versions sur lesquelles je travaille :

    Excel 2003 (11.8324.8221) SP3
    Visual Basic 6.3

    Voilà le contexte :

    A la base, je voulais ajouter des formulaires de contrôle de type "OptionButton" à une feuille de calcul. Cependant, tous les boutons étaient liés entre eux et s'excluaient, alors que je voulais qu'ils fonctionnent par paires (deux questions ayant pour choix "Oui" ou "Non").

    Je me suis donc tourné vers des contrôles MsForms incorporés à la feuille. Pour la syntaxe, je me suis appuyé sur ce tutoriel remarquablement bien fait de J-M Rabilloud :

    Formation VBA

    Et c'est là que l'erreur se produit. Le code est le suivant, directement recopié du tuto page 215 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Sub test()
     
        Dim Feuille As Worksheet, rngPos As Range
        Dim Opt As MsForms.OptionButton
     
        Set Feuille = ThisWorkbook.Sheets("MENU")
        Set rngPos = Feuille.Cells(6, 1)
     
        Set Opt = Feuille.OLEObjects.Add("Forms.OptionButton.1", , , , , , , rngPos.Left, rngPos.Top, rngPos.Width, rngPos.Height)
     
    End Sub
    J'obtiens une erreur n°13 : incompatibilité de type.

    Autre remarque, si j'utilise la méthode "add" en l'affectant à un OLEObject, ça fonctionne. Seulement je ne peux pas accéder à la propriété qui m'intéressait dans les MsForms, à savoir "GroupName".

    Après recherche, le problème ressemble fortement à celui de cette page :

    http://support.microsoft.com/kb/166933/fr

    Malheureusement, vous vous en douterez, la solution proposée ne fonctionne pas.

    Voilà, j'espère que vous serez inspiré. Je suis ouvert à une solution de contournement si celle-ci reste sans issue.

    Merci d'avance !

    Olivier

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 315
    Par défaut
    Bonjour,

    En déclarant Opt as OleObject, cela fonctionne chez moi...

    essaie ce code, qui te crée 2 OptionButtons par ligne, sur 4 ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Sub test()
    Dim Feuille As Worksheet
    Dim rngPos As Range
    Dim Opt As OLEObject
    Dim I As Byte, J As Byte
    Set Feuille = ThisWorkbook.Sheets("MENU")
    For I = 6 To 9
        For J = 1 To 2
            Set rngPos = Feuille.Cells(I, J)
            Set Opt = Feuille.OLEObjects.Add("Forms.OptionButton.1", , , , , , , rngPos.Left, rngPos.Top, rngPos.Width, rngPos.Height)
            Opt.Object.GroupName = "question" & I - 5
        Next J
    Next I
    End Sub
    Bonne journée

  3. #3
    Candidat au Club
    Inscrit en
    Juin 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 3
    Par défaut
    Bonjour mapeh,

    Effectivement ce code marche aussi chez moi. Mon erreur venait du fait que je voulais accéder directement à la propriété "GroupName" et que je ne tapais pas ".Object" entre les deux.

    Merci cela devrait me permettre de faire ce que je veux.

    Une idée pour expliquer l'incompatibilité en déclarant un MsForms.OptionButton ?

Discussions similaires

  1. Incorporer une feuille Excel/word dans une page html
    Par lovelace dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 25/02/2008, 15h27
  2. "Incompatibilité de type" dans une formule
    Par Log_polmed dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 19/06/2007, 15h03
  3. [DAO]Incompatibilité de type lors d'une concaténation
    Par mouaa dans le forum VBA Access
    Réponses: 19
    Dernier message: 06/04/2007, 10h33
  4. [VBA-E]type de donnée range en vba utilisée dans une feuille
    Par Yoyo51 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/03/2006, 10h26
  5. [VBA-E]Type d'une feuille excel
    Par LitteulKevin dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/05/2004, 14h43

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