Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/10/2011, 09h40   #1
Invité régulier
 
Homme Defter Defter
Dessinateur industriel
Inscription : mai 2011
Messages : 35
Détails du profil
Informations personnelles :
Nom : Homme Defter Defter
Localisation : France

Informations professionnelles :
Activité : Dessinateur industriel
Secteur : Bâtiment

Informations forums :
Inscription : mai 2011
Messages : 35
Points : 8
Points : 8
Par défaut Utilisation de Combobox + Rowsource

Bonjour à tous,

j'ai actuellement un soucis avec l'utilisation de plusieurs combobox liée entre elle.
Je m'explique

J'ai fais clic droit sur la premiere "Visualiser code" et la j'entre en Private sub.

Je rentre donc mon code qui est

Code :
1
2
3
4
5
6
Private Sub ComboBox2_Change()
If Range("B43").Value = "W44" And Range("B49").Value = "Serreur" Then
    ComboBox3.RowSource = "C55:C69"
 
 End If
 End Sub
En gros je veux qu'en fonction des valeures présente en "B43" et "B44" la plage de recherche de la combobox 3 change.

Cela est il possible ?


Merci pour votre aide,
Cordialement
Defter
Defter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 09h46   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Si, comme tu sembles l'indiquer, ta combobox est sur une feuille, la propriété à utiliser est "ListFillRange", et non pas "RowSource" qui est utilisée avec les combobox sur userform.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/10/2011, 10h04   #3
Invité régulier
 
Homme Defter Defter
Dessinateur industriel
Inscription : mai 2011
Messages : 35
Détails du profil
Informations personnelles :
Nom : Homme Defter Defter
Localisation : France

Informations professionnelles :
Activité : Dessinateur industriel
Secteur : Bâtiment

Informations forums :
Inscription : mai 2011
Messages : 35
Points : 8
Points : 8
Bonjour Daniel.C

J'ai utilisé ta technique, et cette fois-ci il me demande une maccro, seulement il n'y en a pas comme je cherche à la créer justement.

Est-ce lié au faite que je sois dans "Private Sub" ?
J'ai aussi actualisé le "_Change" en "_QuandClic" car je souhaite que la Combobox3 s'actualise lors du choix de la 2. Est ce un problème aussi ?

Code :
1
2
3
4
5
6
Private Sub ComboBox2_quandclic()
If Range("B43").Value = "W44" And Range("B49").Value = "Serreur" Then
    Me.ComboBox3.ListFillRange = "C55:C69"
 
 End If
 End Sub
Désolé c'est peut être des questions stupides mais je débute dans l'utilisation de combobox.


Cordialement,
Defter

J'arrive maintenant à obtenir des valeures dans la combobox3, je n'avais pas précisé vers quel feuille aller chercher les prérequis et les données ...

Le code à maintenant cette forme

Code :
1
2
3
4
5
6
Private Sub ComboBox3_Clic()
    If Sheets("Data").Range("B43").Value = "W44" AndSheets("Data").Range("B49").Value = "Serreur" Then
        ComboBox3.ListFillRange = "Data!C55:C69"
 
    End If
End Sub
Existe t-il un moyen de clean une combobox ? C'est à dire qu'elle n'affiche rien comme si aucun prérequis n'avait été selectionné ?
Defter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 10h22   #4
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Tu utilises certainement les contrôles de formulaire. Tu devrais utiliser plutôt les contrôles ActiveX qui offrent davantage de fonctionnalité :

Code :
ActiveSheet.ComboBox3.ListIndex = -1
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/10/2011, 10h34   #5
Invité régulier
 
Homme Defter Defter
Dessinateur industriel
Inscription : mai 2011
Messages : 35
Détails du profil
Informations personnelles :
Nom : Homme Defter Defter
Localisation : France

Informations professionnelles :
Activité : Dessinateur industriel
Secteur : Bâtiment

Informations forums :
Inscription : mai 2011
Messages : 35
Points : 8
Points : 8
Non je suis bien en ActiveX,

J'ai maintenant les données que je souhaite dans ma combobox,
Je cherche maintenant à influencer les valeures présentes dans celle-ci avec des paramètres présents dans d'autre cellules.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub ComboBox2_quandclic()
    If Sheets("Data").Range("B43").Value = "W44" And Sheets("Data").Range("B49").Value = "Serreur" Then
        ComboBox3.ListFillRange = "Poteau_Serreur"
        ComboBox3.ListRows = 6
 
    End If
    If Sheets("Data").Range("B43").Value = "W80" And Sheets("Data").Range("B49").Value = "VEC" Then
        ComboBox3.ListFillRange = "Poteau_VEC"
        ComboBox3.ListRows = 2
    End If
 
End Sub
Il me detecte bien la première condition c'est à dire "Poteau_serreur" mais lorsque je change les valeurs, il n'actualise pas au profit des valeurs de "Poteau_Vec".

Je pense que c'est une erreur de synthaxe au niveau des deux conditions "SI" mais la j'avoue être completement bloqué.

Merci pour tes conseils en tout cas.
Defter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 10h49   #6
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Tu ne peux pas écrire :

Code :
ComboBox3.ListFillRange = "Poteau_Serreur"
Tu dois coder soit une plage de cellules (par exemple A1:A10) ou une plage nommée sans guillemets dans ListFillRange.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 10h59   #7
Invité régulier
 
Homme Defter Defter
Dessinateur industriel
Inscription : mai 2011
Messages : 35
Détails du profil
Informations personnelles :
Nom : Homme Defter Defter
Localisation : France

Informations professionnelles :
Activité : Dessinateur industriel
Secteur : Bâtiment

Informations forums :
Inscription : mai 2011
Messages : 35
Points : 8
Points : 8
Merci pour l'attention que vous me portez,

cependant en écrivant :
Code :
ComboBox3.ListFillRange = "Poteau_Serreur"
il change ce qui est présent dans combobox3 qu'une fois : Si maintenant il est affiché W80 et VEC, il ne va pas me mettre à jour malgrès que la fonction "If" précise que lorsque W80 et VEC sont affiché il affiche les références liées à savoir "Poteau_VEC"

Si j'enlève les guillemets il ne m'affiche plus rien dans combobox3. Celà doit venir d'un problème de synthaxe mais je ne m'y connais pas assez pour le résoudre.


Petit rappel du code actuel :
Code :
1
2
3
4
5
6
7
8
9
10
11
Private Sub ComboBox2_change()
    If Sheets("Data").Range("B43").Value = "W44" And Sheets("Data").Range("B49").Value = "Serreur" Then
        ComboBox3.ListFillRange = Poteau_Serreur
        ComboBox3.ListRows = 6
    End If
    If Sheets("Data").Range("B43").Value = "W80" And Sheets("Data").Range("B49").Value = "VEC" Then
        ComboBox3.ListFillRange = Poteau_VEC
        ComboBox3.ListRows = 2
    End If
 
End Sub
Cordialement,
Defter
Defter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 11h24   #8
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
J'ai peur que tu fasses une confusion. Ta macro n'est PAS une macro évènementielle. Si tu veux qu'une macro se déclenche sur un clic, écris :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub ComboBox2_Click()
    Dim Poteau_Serreur As String, Poteau_VEC As String
    Poteau_Serreur = "Data!C55:C69"
    Poteau_VEC = "Data!D55:D69"
    With Sheets("Data")
       If .Range("B43").Value = "W44" And .Range("B49").Value = "Serreur" Then
           ActiveSheet.ComboBox3.ListFillRange = Poteau_Serreur
           ActiveSheet.ComboBox3.ListRows = 6
 
       End If
       If .Range("B43").Value = "W80" And .Range("B49").Value = "VEC" Then
           Me.ComboBox3.ListFillRange = Poteau_VEC
           Me.ComboBox3.ListRows = 2
       End If
 End With
End Sub
J'ai ajouté les trois premières lignes pour te montrer comment spécifier la propriété "ListFillRange". Tu devras les modifier ou les ôter.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 11h41   #9
Invité régulier
 
Homme Defter Defter
Dessinateur industriel
Inscription : mai 2011
Messages : 35
Détails du profil
Informations personnelles :
Nom : Homme Defter Defter
Localisation : France

Informations professionnelles :
Activité : Dessinateur industriel
Secteur : Bâtiment

Informations forums :
Inscription : mai 2011
Messages : 35
Points : 8
Points : 8
Super ça marche !

J'ai modifier en fonction de mon cas ce qui donne :

Code :
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
Private Sub ComboBox2_Click()
    Dim Poteau_Serreur As String, Poteau_VEC As String, Poteau_SOF As String, Poteau_VEP As String
    Poteau_Serreur = "Data!C59:C65"
    Poteau_VEC = "Data!A59:A60"
    Poteau_SOF = "Data!D59:D60"
    Poteau_VEP = "Data!B59:B61"
        With Sheets("Data")
            If Range("B43").Value = "W44" And .Range("B49").Value = "Serreur" Then
                Me.ComboBox3.ListFillRange = Poteau_Serreur
                Me.ComboBox3.ListRows = 6
 
            End If
            If .Range("B43").Value = "W80" And .Range("B49").Value = "VEC" Then
                Me.ComboBox3.ListFillRange = Poteau_VEC
                Me.ComboBox3.ListRows = 2
            End If
            If .Range("B43").Value = "W80" And Sheets("Data").Range("B49").Value = "VEP" Then
                Me.ComboBox3.ListFillRange = Poteau_VEP
                Me.ComboBox3.ListRows = 3
            End If
            If .Range("B43").Value = "W44" And Sheets("Data").Range("B49").Value = "Serreur+OF" Then
                Me.ComboBox3.ListFillRange = Poteau_SOF
                Me.ComboBox3.ListRows = 6
            End If
        End With
End Sub
Merci beaucoup pour ton aide !

J'ai une petite question subsidiaire (Pour voir si c'etait un coup de chance haha :p)
Est il possible d'afficher par défaut la premiere valeure qui ce trouve dans la collone "Poteau_VEP" ?

Dans le cas actuel lorsque je change la liste s'actualise bien mais elle conserve la valeure de l'ancienne liste par défaut.
Il doit y avoir un moyen de lui dire :
Lorsque c'est tel cas, la valeur affiché de la liste est "XX"

Encore merci pour l'aide apportée et désolé pour les questions stupides mais je débute .


Cordialement,
Defter
Defter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 11h57   #10
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037


Ajoute :

Code :
Me.ComboBox3.ListIndex = 0
derrière les lignes

Code :
Me.ComboBox3.ListFillRange = x
ListIndex est une propriété qui prend les valeurs suivantes :
-1 quand rien est sélecté
0 première valeur de la plage spécifiée dans ListFillRange
1 deuxième valeur de la plage spécifiée dans ListFillRange
etc.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/10/2011, 12h11   #11
Invité régulier
 
Homme Defter Defter
Dessinateur industriel
Inscription : mai 2011
Messages : 35
Détails du profil
Informations personnelles :
Nom : Homme Defter Defter
Localisation : France

Informations professionnelles :
Activité : Dessinateur industriel
Secteur : Bâtiment

Informations forums :
Inscription : mai 2011
Messages : 35
Points : 8
Points : 8
Parfait !

Encore une fois merci beaucoup pour ton aide, j'aurais surement l'occasion de revenir poser des questions haha.

Bon appétit.


Cordialement,
Defter
Defter est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 12h23   #12
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Avec plaisir. Merci du retour.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h31.


 
 
 
 
Partenaires

Hébergement Web