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 fonction indirect [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Février 2012
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 243
    Par défaut Combobox et fonction indirect
    Bonjour à tous
    J'ai crée un tableau sous Excel 2010 qui me quantifier du matériel. Ce matériel est classé par famille, sous-famille et libellé (je précise que j'aurais opté pour une bdd access, mais je ne peux pas)
    J'ai donc créé des listes déroulantes avec la fonction validation et la formule indirect. Fonctionne parfaitement.
    Pour des raisons ergonomiques, je voudrais faire évoluer un peu le tableur en créant en VBA un formulaire qui se lance au double-clic dans une cellule et qui affiche directement
    la liste déroulante, qui s'initialiserait automatiquement en fonction de la cellule située à gauche. Ex : cellule active en D1, double clic, il récupère la valeur de C1 et m'affiche la liste correspondante
    avec la formule indirect.
    Je n'arrive pas à saisir la bonne formule sur Private Sub UserForm_Initialize().
    Comment dois-je déclarer la variable ? Et comment se fait l'appel de la fonction inidrect ?

    Un énorme merci d'avance pour votre aide
    BV

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour bvalenza, la forum
    si tu cherche à insérer un USERFORM avec deux combobox la valeur de la deuxième est conditionner par la valeur de la première (combi1 : catégorie et combo2 sous catégorie) et donnée combo 1 en colonneA et données combo2 en colonne B tu peux procéder de la façon suivante :
    après tu peux trouver la valeur de TEXTBOX (commentaire)
    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
    Dim dernLigne As Long
    Private Sub ComboBox1_Change()
    Dim CodeR As String
    ComboBox2.Clear
    With Sheets("feuil1")
      CodeR = ComboBox1.Value
      Set rg = .range("A1:A" & dernLigne)
     For Each cell In rg
      If cell.Value = CodeR Then
       ComboBox2 = .range("B" & cell.Row)
       If ComboBox2.ListIndex = -1 Then ComboBox2.AddItem .range("B" & cell.Row)
      End If
      Next cell
    End With
    End Sub
     
    Private Sub UserForm_Initialize()
    dernLigne = Sheets("feuil1").range("A" & Rows.Count).End(xlUp).Row
    Dim i As Integer
    dernLigne = Sheets("feuil1").range("A" & Rows.Count).End(xlUp).Row
    For i = 2 To dernLigne
      ComboBox1 = Sheets("feuil1").range("A" & i)
      If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem Sheets("feuil1").range("A" & i)
    Next i
    TextBox1.Value = ""
    ComboBox2.Value = ""
    End Sub

  3. #3
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Février 2012
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 243
    Par défaut Re
    Bonjour BENNSAR et merci

    Concernant ta réponse voici ce que je décrypte (je ne maitrise pas aussi bien que toi le code, j'ai quelques bases)

    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
    Dim dernLigne As Long
    Private Sub ComboBox1_Change()
    Dim CodeR As String
    ComboBox2.Clear
    With Sheets("feuil1")
      CodeR = ComboBox1.Value
      Set rg = .range("A1:A" & dernLigne)
     For Each cell In rg
      If cell.Value = CodeR Then
       ComboBox2 = .range("B" & cell.Row)
       If ComboBox2.ListIndex = -1 Then ComboBox2.AddItem .range("B" & cell.Row)  //// -> c'est ici je pense que tu utilise la fonction indirect n'est ce pas ?
      End If
      Next cell
    End With
    End Sub
     
    Private Sub UserForm_Initialize()
    dernLigne = Sheets("feuil1").range("A" & Rows.Count).End(xlUp).Row
    Dim i As Integer
    dernLigne = Sheets("feuil1").range("A" & Rows.Count).End(xlUp).Row
    For i = 2 To dernLigne
      ComboBox1 = Sheets("feuil1").range("A" & i)
      If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem Sheets("feuil1").range("A" & i)
    Next i
    TextBox1.Value = ""
    ComboBox2.Value = ""
    End Sub
    je vais essayer de regarder tout ceci à tête reposée
    un grand merci et je reviens vers toi

  4. #4
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Février 2012
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 243
    Par défaut Re
    test.xlsmtest.xlsm

    J'ai commencé à tester votre solution
    2 problèmes :
    - j'ai besoin de la fonction intercaler pour actualiser la deuxième liste en fonction de la première et j'ai l'impression qu'il ne procède qu'à une recherchev
    - par facilité je voudrai nommer mes plages de cellule pour les appeler plus facilement

    Je joins mon tableur d'essai pour etre plus clair


    merci beaucoup

  5. #5
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonsoir
    voir ce ci :
    Fichiers attachés Fichiers attachés

  6. #6
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Février 2012
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 243
    Par défaut re
    Merci 1000 fois, je vais pouvoir bien avancer
    c'st exactement ce que je voulais

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

Discussions similaires

  1. remplir un combobox en fonction d'un autre
    Par alex.a dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 17/07/2007, 17h19
  2. Réponses: 2
    Dernier message: 29/09/2006, 16h40
  3. Fonction INDIRECT avec variable sur n° de colonne
    Par mat.guillaume dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 30/08/2006, 18h04
  4. Réponses: 3
    Dernier message: 01/06/2006, 19h45
  5. Remplir un combobox en fonction d'un autre
    Par emkka dans le forum Composants VCL
    Réponses: 10
    Dernier message: 30/04/2006, 19h17

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