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 :

création en chaine de combobox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 141
    Par défaut création en chaine de combobox
    Bonjour,
    j'ai écrit un code qui utilise une fonction que me crée plusieurs combobox mis a jour à chaque ouverture de mon fichier .
    La première box se crée correctement mais la seconde me donne run-time error 1004.
    Quelqu'un serait il pourquoi mon code ne fonctionne pas?

    Merci par avance de votre aide ,
    Will

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Function ConstuctFormActiveX(page)
    Dim rgnPos As Range
    Dim zlist As MSForms.ComboBox
    Dim compteur As Variant
    'Dim tabDynamique() As Variant
    'ajout d'une liste
    Dim DerCel As Long
     
    DerCel = Worksheets(3).Range("A65536").End(xlUp).Row
     
     
        Set rgnPos = ThisWorkbook.Worksheets(page).Range("B3")
        Set zlist = ThisWorkbook.Worksheets(page).OLEObjects.Add("Forms.ComboBox." & page, , , , , , , rgnPos.Left, rgnPos.Top, rgnPos.Resize(, 2).Width, rgnPos.Height).Object
                With zlist
                .ListRows = 2
                For compteur = 2 To DerCel
                zlist.AddItem Worksheets(3).Cells(compteur, 1)
                Next compteur
            End With
     
    End Function
     
    Private Sub Workbook_Open()
     
    Dim i As Integer
    Dim page As Variant
    For i = 1 To 2
     
    ' If IsObject(Worksheets(i).OLEObjects("Forms.ComboBox.1")) Then Worksheets(i).OLEObjects(1).Delete
     
    Call ConstuctFormActiveX(i)
    Next i
     
    End Sub

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Worksheets(page).OLEObjects.Add("Forms.ComboBox.1", , , , , , , rgnPos.Left, rgnPos.Top, rgnPos.Resize(, 2).Width, rgnPos.Height).Object

  3. #3
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 141
    Par défaut
    Merci beaucoup!
    cela fonctionne désormais mais se pose alors un second soucis.
    A chaque ouverture du ficher, je crée une combo box sans supprimer la précédente.
    Du coup, le code qui est associé à chacune d'entre elle dans sa page respective devient obsolète ( la nouvelle combo.box est combo.box.2 ,3, etc).
    Je met le code ci dessous pour l'object de la feuille 1 même si je doute que cela importe.
    Je suppose qu'il faut donc au préalable que je supprime mes fifférentes combobox, comment cela est il possible?

    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
    Private Sub ComboBox1_Change()
     
    Worksheets(1).Rows(6).Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Worksheets(1).Range("C6") = ComboBox1.Value
    Worksheets(1).Range("B6") = Date$
     
        If Worksheets(1).Range("B6") = Worksheets(1).Range("B7") Then
        Worksheets(1).Range("A6") = mess()
        Else: Worksheets(1).Range("A6") = Worksheets(1).Range("A7") + 1
        End If
     
    Worksheets(1).Range("D6") = InputBox("enter the Quantity")
    Worksheets(1).Range("E6") = InputBox("enter the Price per unit")
    Worksheets(1).Range("F6") = Worksheets(1).Range("D6") * Worksheets(1).Range("E6")
    End Sub

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Worksheets(page).OLEObjects.Add("Forms.ComboBox.1", , , , , , , rgnPos.Left, rgnPos.Top, rgnPos.Resize(, 2).Width, rgnPos.Height).Object
    "Forms.ComboBox.1" est la ClassType de l'objet combo, à ne pas confondre avec le nom de la combobox
    Je préfère écrire la ligne comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Set zlist = .OLEObjects.Add(ClassType:="Forms.ComboBox.1", Left:=rgnPos.Left, Top:=rgnPos.Top, Width:=rgnPos.Resize(, 2).Width, Height:=rgnPos.Height).Object

  5. #5
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 141
    Par défaut merci voici comment j'ai gérer le soucis
    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 Workbook_Open()
     
    Dim i As Variant
     
     
    For i = 1 To 2
    Worksheets(i).Activate
    On Error GoTo Erreur
    ThisWorkbook.Worksheets(i).OLEObjects("ComboBox" & i).Delete
    Erreur:
    Call ConstuctFormActiveX(i)
    Next i
     
    End Sub
    Cordialement will

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

Discussions similaires

  1. [XL-2003] Création Formulaire - VBA ALIMENTATION ComboBox
    Par BtjpsspgrW dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/10/2014, 10h39
  2. ActionScript Facile | Chapitre 7 : Création du composant AS3 ComboBox
    Par The_Pretender dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 24/11/2010, 22h52
  3. probleme de création de chaine
    Par boboss123 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 24/09/2010, 17h34
  4. Algo de création de chaine par concaténation de variables
    Par Zhebulon dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 13/04/2006, 14h37

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