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 :

Combobox et cellulle


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 21
    Par défaut Combobox et cellulle
    Bonjour a tous , (re)

    J'ia un tableau excel de cette forme
    A B C D E

    1 string heure minute entier combobox

    2 string heure minute entier combobox

    3 string heure minute entier combobox

    4 string heure minute entier combobox
    ... ... ... ... ... ...

    Mon tableau est parcouru tant que A est différent de " " (donc en gros tant que ya une chaine de caractere dans la colonne A (donc une variable i initialiser et qui s'incrémente).

    Mes combobox située dans la colonne E contiennent la mm chose et c'est a partir de la valeur choisis dans la combobox que je peux effectué mes calculs.

    Ma question est donc , comment puis je faire pour dire a mon programme a quel combobox il a affaire?(Etant donné que cela peut s'etendre a plus d'une cinquantaine de ligne, je ne peux pas le faire en fonction du nom de ma combobox.

    Merci de m'avoir lu merci d'avance a ceux qui repondront aussi ^^
    bonne journée

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Par défaut
    Tu peux essayer une fonction comme celle-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function DropDownDeLaLigne(ByRef rng As Range) As Excel.DropDown
        Dim dd As Excel.DropDown
     
        For Each dd In rng.Worksheet.DropDowns
            If rng.Worksheet.Range(dd.TopLeftCell.Address).Row = rng.Row Then
               Set DropDownDeLaLigne = dd
               Exit Function
            End If
        Next dd
    End Function
    Cette fonction renvoit un objet DropDown (objet secret dans Excel qui représente les ComboBox de type Formulaire et non celui associé au UserForms). Elle prend en paramètre l'objet Range qui représente la cellule que tu calcules.

    Pour qu'elle fonctionne correctement, il faut s'assurer que les ComboBox sont bien positionnés dans les cellules appropriées (en mettant le coin haut-gauche à l'intérieur de la cellule).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 21
    Par défaut
    Oki j'ai pas encore utilisé de fonction en VBA dc je sais pas trop comment l'appeler toussa voici mon code

    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
    Private Sub commande1.click()
    
    i=21
    Do while cells(i,1)<>" "
     if blabla then   (je t'epargne une quinzaine de ligne de code ininterressante)
     end if 
    ICI j'appel la fonction
    youpla je recupere mon index
    if index=0 then
    blabla 
    else 
    if index=1 then
    blabla
    end if 
    end if
    i=i+1
    loop
    end sub
    Donc la fonction est censé me renvoyé le listindex.
    Mais je t'avoue mm avec tes explications ne rien comprendre a la fonction -_-'

    "Elle prend en paramètre l'objet Range qui représente la cellule que tu calcules."
    jveux juste recuperer l'index...

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 122
    Par défaut
    SAlut
    Je ne sais pas comment sont créés tes combobox mais ils ont une propriete Cellule lié, il te suffit de lier par exemple la cellule de la colonne E qui se trouve sous le combobox, ainsi quand la valeur de ton combobox change, celle de la cellule aussi

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Par défaut
    Pour insérer la fonction dans ton projet, suis les instructions données ici.

    Pour te servir de cette fonction dans le pseudo-code que tu m'as fourni, voici un exemple:

    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
    Private Sub CommandButton1_Click()
        Dim i As Long
        Dim Index As Long
     
        i = 21
        Do While Cells(i, 1) <> " "
            If blabla Then
                ' (je t'epargne une quinzaine de ligne de code ininterressante)
            End If
     
            ' ICI j 'appel la fonction
            Index = DropDownDeLaLigne(Cells(i, 1)).ListIndex    ' youpla je recupere mon index
     
            ' Remplace la structure de code en If ... Then ... ElseIf ... Endif
            '   par code plus approprié au traitement de valeur de ComboBox
            Select Case Index
                Case 0
                    ' blabla
                Case 1
                    ' blabla
                Case 2
                    ' blabla
                Case 3
                    ' blabla
                Case Else
                    ' Ne fait rien si pas dans les valeurs possibles!!!
            End Select
            i = i + 1
        Loop
    End Sub
    Comme tu peux le constater, j'ai apporté quelques modifications à ton code pour te montrer comment écrire du code plus sur et plus facilement débogable.

    Je déclare les variables en début de procédure en indiquant leur type, pour être plus clair avec moi-même et les autres programmeurs ainsi que pour le compilateur.

    J'ai remplacé la structure If ... Then ... Else par une structure Select Case car celle-ci est plus claire et mieux adaptée au traitement de valeurs numériques.

    Tu peux aussi voir comment j'utilise la fonction et récupère le numéro d'Index dans le ComboBox. Cells(i,1) est un objet Range...

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    Les objet cachés ne sont plus d'application depuis Excel 2000 bien que certaine fonctions 'fonctionnent' encore.
    Je crois que le mieux serrai de te servir d'une collection.
    Dans le fichier joint ce n'est pas des combo, mais à toi d'adapter,( je n'ai pas le temps maintenand).
    Pour la ligne suffit de nommer tes combo ComboBox* ou * représente la ligne.
    le * devrai être genre 07, 17 etc.. (pour récupérer les 2 derniers caractères du nom.
    Et quand tu à récupérer le combo tu peu connaître le ListIndex .
    Il y a aussi plusieurs exemples de collections dans la FAQ.
    A+
    Fichiers attachés Fichiers attachés

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Par défaut
    Citation Envoyé par LeForestier Voir le message
    ... Les objet cachés ne sont plus d'application depuis Excel 2000 bien que certaine fonctions 'fonctionnent' encore.
    C'est vrai qu'ils ne sont plus documentés mais ils sont là pour rester; c'est une question de compatibilité avec les versions plus anciennes d'Excel.

    J'utilise personnellement ces contrôles pour leur simplicité de code (pas d'initialisations élaborées et d'emploi d'objets utilitaires tels que les Collections) car les collections sont déjà en place dans l'architecture de l'application. Il ne suffit que de connaitre leur existence pour les utiliser.

    Mais, bien sur, on devrait toujours suivre les nouveaux usages dans les versions plus récentes... Naaaan!!!

Discussions similaires

  1. [XL-2007] Problème création de combobox dans cellule de listView
    Par fyejumpy dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/06/2015, 12h28
  2. Copier valeur choisie dans ComboBox dans cellule a chaque fois differente
    Par juliematlab dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/01/2013, 09h04
  3. [XL-2010] Transfert données Textbox et Combobox vers cellules
    Par justin74 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/05/2011, 21h30
  4. DataGrid et Combobox dans cellules
    Par sandav dans le forum Windows Presentation Foundation
    Réponses: 11
    Dernier message: 14/12/2010, 21h31
  5. Combobox dans cellule de MSFlexgrid
    Par red210 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 13/02/2008, 16h56

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