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 22/10/2011, 18h37   #1
Membre à l'essai
 
Inscription : décembre 2008
Messages : 77
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 77
Points : 21
Points : 21
Par défaut Combobox vide au démarrage(?)

Bonjour le Forum je viens vers vous car j'ai eu beau chercher mais malheureusement je n'ai pas trouvé sur le forum ...

A l'ouverture de mon fichier Excel "test.xls" mon combobox est vide - pour pouvoir "charger" le contenu du combobox, je dois mettre ma souris dans le combobox et taper une touche quelconque, là ma liste (reference colonne A) est chargée ...
Que manque t il a mon code pour démarrer avec par exemple "select Chiffre" dans le combobox et surtout avoir la liste dans le combobox ...?

Voici le code:
Code :
1
2
3
4
5
6
7
8
Private Sub ComboBox1_Click()
Dim Cell As Range
ligne = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To ligne
If ComboBox1.ListIndex = -1 Then _
        Me.ComboBox1.AddItem ActiveSheet.Range("A" & i).Value
Next
End Sub
MErci de votre aide,
Chris
chrystobale est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2011, 21h32   #2
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Ta procédure événementielle :

s'exécute lorsque tu clique sur ton combobox ....

utilise un autre événement..

par exemple :
Code :
Private Sub UserForm_Activate()
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2011, 07h58   #3
Membre à l'essai
 
Inscription : décembre 2008
Messages : 77
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 77
Points : 21
Points : 21
hello, j'ai changé par
Code :
Private Sub ComboBox1_Change()
mais ca nemarche pas ..
chrystobale est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2011, 08h56   #4
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Citation:
Envoyé par chrystobale Voir le message
hello, j'ai changé par


mais ca ne marche pas ..
Et pourquoi change ?
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2011, 20h34   #5
Membre à l'essai
 
Inscription : décembre 2008
Messages : 77
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 77
Points : 21
Points : 21
j'ai tenté par "activate" mais cela ne marche pas non plus ... en fait je ne comprends pas la suggestion et d'ailleurs me demande si elle mène vers quelque chose ...
cordialement,
C
chrystobale est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2011, 20h49   #6
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Citation:
Envoyé par chrystobale Voir le message
j'ai tenté par "activate" mais cela ne marche pas non plus ... en fait je ne comprends pas la suggestion et d'ailleurs me demande si elle mène vers quelque chose ...
cordialement,
C
??


tu la mis ou ton activate ??
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2011, 23h03   #7
Membre à l'essai
 
Inscription : décembre 2008
Messages : 77
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 77
Points : 21
Points : 21
voilà ce que j'ai mis

Code :
1
2
3
4
5
6
7
8
9
10
11
Private Sub UserForm_Activate()
End Sub
 
Private Sub ComboBox1_Change()
Dim Cell As Range
    ligne = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To ligne
    If ComboBox1.ListIndex = -1 Then _
        Me.ComboBox1.AddItem ActiveSheet.Range("A" & i).Value
    Next
End Sub
soit je mis prends comme un manche ou alors j'ai rien compris ...

cdt,
chris
chrystobale est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 09h33   #8
Membre à l'essai
 
Inscription : décembre 2008
Messages : 77
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 77
Points : 21
Points : 21
Hello,
Je viens de dénicher sur un autre lien une solution provisoire ...

Afin que le Combobox soit "rafraîchit" il faut ajouter un bouton. On obtient alors:

Ajouter un bouton sur la feuille Excel:
Code :
1
2
3
Private Sub CommandButton1_Click()
Call ComboBox1_Change
End Sub
Puis dans le Comobox1, mettre le code suivant:
Code :
1
2
3
4
5
6
7
8
9
10
11
Private Sub ComboBox1_Change()
Dim Cell As Range
Dim i As Integer
Dim ligne As Integer
ComboBox1.Clear
    ligne = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To ligne
    If ComboBox1.ListIndex = -1 Then _
        Me.ComboBox1.AddItem ActiveSheet.Range("A" & i).Value
    Next
End Sub
J'avoue que je préférerai me passer d'un bouton pour rafraîchir le contenu de mon combobox1 ...
Si quelqu'un a une autre idée ...?

Cdt,
Chris
chrystobale est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 10h02   #9
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Bonjour,

Ta ComboBox peut-elle être alimentée à l’activation de l’Userform ou doit-elle être mise à jour régulièrement ou occasionnellement (liste évolutive) ?
Si elle peut être alimentée à l’activation de l’Userform, la solution de bbil doit pouvoir te convenir
Code :
1
2
3
4
5
6
7
8
9
Option Explicit
Private Sub UserForm_Activate()
Dim Ligne As Long, i As Long
    Ligne = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To Ligne
    If ComboBox1.ListIndex = -1 Then _
        Me.ComboBox1.AddItem ActiveSheet.Range("A" & i).Value
    Next
End Sub
Tu peux trouver des compléments utiles dans
http://silkyroad.developpez.com/VBA/ControlesUserForm/

Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 10h32   #10
Membre à l'essai
 
Inscription : décembre 2008
Messages : 77
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 77
Points : 21
Points : 21
Bonjour gFZT82 et merci pour ta proposition.
Malheureusement je ne souhaite pas utiliser un userform ... pour certaines raisons (mes utilisateurs ...)
chrystobale est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 11h19   #11
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
As-tu essayé avec l'évènement Worksheet.Activate ?

Code :
1
2
3
4
5
6
7
8
9
10
Option Explicit
Private Sub Worksheet_Activate()
Dim Ligne As Long, i As Long
    ComboBox1.Clear
    Ligne = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To Ligne
    If ComboBox1.ListIndex = -1 Then _
        Me.ComboBox1.AddItem ActiveSheet.Range("A" & i).Value
    Next
End Sub
Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 11h41   #12
Membre à l'essai
 
Inscription : décembre 2008
Messages : 77
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 77
Points : 21
Points : 21
Bonjour gFZT82,
Je viens de tester ta proposition, hélas cela ne fonctionne pas ... y a t il quelque chose à activer pour que le Worksheet s'active ou un autre truc qui ne serait "allumer" sur mon PC
chrystobale est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 12h11   #13
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Il semble effectivement que l'événement Activate concernant le classeur ne se produit pas.
Essaie de placer ce code dans le module ThisWorkbook.
La ComboBox sera alimentée à l’ouverture du classeur.

Code :
1
2
3
4
5
6
7
8
9
10
11
Private Sub Workbook_Open()
Dim Ligne As Long, i As Long
With Worksheets("Feuil1") 'A adapter
    .ComboBox1.Clear
    Ligne = .Cells(.Rows.Count, 1).End(xlUp).Row
    For i = 1 To Ligne
    If .ComboBox1.ListIndex = -1 Then _
        .ComboBox1.AddItem ActiveSheet.Range("A" & i).Value
    Next
End With
End Sub
(Penses à adapter le nom de ta feuille).
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 13h28   #14
Membre à l'essai
 
Inscription : décembre 2008
Messages : 77
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 77
Points : 21
Points : 21
J'ai le même résultat, voir pire la liste ne se charge pas dans le Combobox.
J'ai testé avec MS 2003 et 2010
chrystobale est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 13h54   #15
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Et en rajoutant Worksheets("Feuil1").Select ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
Private Sub Workbook_Open()
Dim Ligne As Long, i As Long
With Worksheets("Feuil1") 'A adapter
    Worksheets("Feuil1").Select
    .ComboBox1.Clear
    Ligne = .Cells(.Rows.Count, 1).End(xlUp).Row
    For i = 1 To Ligne
    If .ComboBox1.ListIndex = -1 Then _
        .ComboBox1.AddItem ActiveSheet.Range("A" & i).Value
    Next
End With
End Sub
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 14h01   #16
Membre à l'essai
 
Inscription : décembre 2008
Messages : 77
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 77
Points : 21
Points : 21
j'avais testé cette hypothèse mais j'avais mis le Worksheets("Feuil1").Select ailleurs...
Malheureusement c'est le même résultat. Comme je l'indiquais, le combobox n'est même plus chargé ... c'est à croire que la fonction Workbook_Open n'est pas reconnu chez moi, une idée ?
chrystobale est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 14h08   #17
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Non, dans l'instant je n'ai pas d'idée .
Peux-tu faire passer ton classeur épuré ?
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 14h33   #18
Membre à l'essai
 
Inscription : décembre 2008
Messages : 77
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 77
Points : 21
Points : 21
salut gFZT82,
J'ai une bonne nouvelle et une mauvaise (pour moi)

La bonne: Je ne mettais la partie de ton code au bon endroit - en effet je mettais cela dans la Feuil-x de Microsoft Excel Objects au lieu de le mettre dans "ThisWorkbook" ...
Maintenant cela marche très très très bien !

La mauvaise: JE suis une quiche c'est confirmé mais j'accepte!

Merci pour ton supportet celui de bbil !!

Cordialement,
Chris
chrystobale 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 07h52.


 
 
 
 
Partenaires

Hébergement Web