Bonjour,
J'ai une base de données Excel contenant notamment une colonne Nom et
une colonne Prénom. Cette base est consultée via un userform qui
contient une Combobox, nommée Nom, à 2 colonnes : Nom et Prénom. Cette
combobox affiche uniquement le Nom, le prénom et les autres champs étant
récupérés en se basant sur la propriété ListIndex. Certains traitement
se déclenchent sur un changement de cette combobox, càd par la fonction
Nom_change.
Si je choisis dans ma combobox Dupont Albert ou Dupont Gérard, elle
m'affiche toujours Dupont. Les autres champs sont bons, puisqu'ils sont
récupérés par ListIndex. Pourtant la valeur de ma combobox n'a pas
changé, donc Change_nom ne se déclenche pas ... Comment faire pour
détecter le changement de ListIndex ?
Voici une façon de faire qui devrait résoudre ta problématique :
Voici un exemple de code pour gérer ton combobox
'Déclaration de ta variable dans le haut du module Dim Ok As Boolean
'----------------------------------- Private Sub ComboBox1_Change()
Dim A As Long, DerLig As Long
If Ok = False Then With Me.ComboBox1 DerLig = Range("A65536").End(xlUp).Row + 1 For A = 0 To 1 ' 2 colonnes c = c & .List(.ListIndex, A) & " " Next Ok = True Me.ComboBox1.Text = c End With
End If
End Sub
'----------------------------------- Private Sub ComboBox1_Click() Ok = False End Sub '-----------------------------------
Salutations!
"Alain" a écrit dans le message de news: Bonjour, J'ai une base de données Excel contenant notamment une colonne Nom et une colonne Prénom. Cette base est consultée via un userform qui contient une Combobox, nommée Nom, à 2 colonnes : Nom et Prénom. Cette combobox affiche uniquement le Nom, le prénom et les autres champs étant récupérés en se basant sur la propriété ListIndex. Certains traitement se déclenchent sur un changement de cette combobox, càd par la fonction Nom_change. Si je choisis dans ma combobox Dupont Albert ou Dupont Gérard, elle m'affiche toujours Dupont. Les autres champs sont bons, puisqu'ils sont récupérés par ListIndex. Pourtant la valeur de ma combobox n'a pas changé, donc Change_nom ne se déclenche pas ... Comment faire pour détecter le changement de ListIndex ?
Alain
Bonjour Alain,
Voici une façon de faire qui devrait résoudre ta problématique :
Voici un exemple de code pour gérer ton combobox
'Déclaration de ta variable dans le haut du module
Dim Ok As Boolean
'-----------------------------------
Private Sub ComboBox1_Change()
Dim A As Long, DerLig As Long
If Ok = False Then
With Me.ComboBox1
DerLig = Range("A65536").End(xlUp).Row + 1
For A = 0 To 1 ' 2 colonnes
c = c & .List(.ListIndex, A) & " "
Next
Ok = True
Me.ComboBox1.Text = c
End With
End If
End Sub
'-----------------------------------
Private Sub ComboBox1_Click()
Ok = False
End Sub
'-----------------------------------
Salutations!
"Alain" <alain@bidon.com> a écrit dans le message de news: 435BE0E8.1070606@bidon.com...
Bonjour,
J'ai une base de données Excel contenant notamment une colonne Nom et
une colonne Prénom. Cette base est consultée via un userform qui
contient une Combobox, nommée Nom, à 2 colonnes : Nom et Prénom. Cette
combobox affiche uniquement le Nom, le prénom et les autres champs étant
récupérés en se basant sur la propriété ListIndex. Certains traitement
se déclenchent sur un changement de cette combobox, càd par la fonction
Nom_change.
Si je choisis dans ma combobox Dupont Albert ou Dupont Gérard, elle
m'affiche toujours Dupont. Les autres champs sont bons, puisqu'ils sont
récupérés par ListIndex. Pourtant la valeur de ma combobox n'a pas
changé, donc Change_nom ne se déclenche pas ... Comment faire pour
détecter le changement de ListIndex ?
Voici une façon de faire qui devrait résoudre ta problématique :
Voici un exemple de code pour gérer ton combobox
'Déclaration de ta variable dans le haut du module Dim Ok As Boolean
'----------------------------------- Private Sub ComboBox1_Change()
Dim A As Long, DerLig As Long
If Ok = False Then With Me.ComboBox1 DerLig = Range("A65536").End(xlUp).Row + 1 For A = 0 To 1 ' 2 colonnes c = c & .List(.ListIndex, A) & " " Next Ok = True Me.ComboBox1.Text = c End With
End If
End Sub
'----------------------------------- Private Sub ComboBox1_Click() Ok = False End Sub '-----------------------------------
Salutations!
"Alain" a écrit dans le message de news: Bonjour, J'ai une base de données Excel contenant notamment une colonne Nom et une colonne Prénom. Cette base est consultée via un userform qui contient une Combobox, nommée Nom, à 2 colonnes : Nom et Prénom. Cette combobox affiche uniquement le Nom, le prénom et les autres champs étant récupérés en se basant sur la propriété ListIndex. Certains traitement se déclenchent sur un changement de cette combobox, càd par la fonction Nom_change. Si je choisis dans ma combobox Dupont Albert ou Dupont Gérard, elle m'affiche toujours Dupont. Les autres champs sont bons, puisqu'ils sont récupérés par ListIndex. Pourtant la valeur de ma combobox n'a pas changé, donc Change_nom ne se déclenche pas ... Comment faire pour détecter le changement de ListIndex ?
Alain
Alain
Ca aurait effectivement pu résoudre mon problème (en fait j'avais déjà cherché cette façon de faire, sans succès...). Mais dans mon cas, j'utilise la même combobox pour consulter ou entrer un nouveau nom : je commence à taper, si le nom n'existe pas, tout le formulaire s'efface et je crée une nouvelle ligne dans ma base. Je suis donc obligé d'avoir une case Nom et une case Prénom. En fait le pb vient d'ailleurs : dans le combobox Nom, lorsque je choisis un nom pour lequel j'ai plusieurs prénoms disponibles, le formulaire se rempli bien (je récupère ListIndex, puis j'utilise Intersect entre des colonnes nommées et la ligne Listindex). Mais quand je réouvre la Combobox, elle est déjà sur le 1er nom de la série. Je peux en choisir un autre, mais pas le premier, tant que je n'ai pas changé de nom !! Ex : Dupont Jean - Dupont Albert - Dupont Paul Je choisis la ligne Dupont Albert. Combobox Nom = Dupont, TextBox Prénom = Albert. Je réouvre le combobox : la ligne sélectionnée est Dupont Jean. Je choisis Paul, OK. Je choisis Jean (le 1er), La sélection reste sur Paul. Je suis obligé de sélectionner un autre nom, puis de revenir. Une idée ?
Et merci pour ton aide !
Alain
Ca aurait effectivement pu résoudre mon problème (en fait j'avais déjà
cherché cette façon de faire, sans succès...). Mais dans mon cas,
j'utilise la même combobox pour consulter ou entrer un nouveau nom : je
commence à taper, si le nom n'existe pas, tout le formulaire s'efface et
je crée une nouvelle ligne dans ma base. Je suis donc obligé d'avoir une
case Nom et une case Prénom.
En fait le pb vient d'ailleurs : dans le combobox Nom, lorsque je
choisis un nom pour lequel j'ai plusieurs prénoms disponibles, le
formulaire se rempli bien (je récupère ListIndex, puis j'utilise
Intersect entre des colonnes nommées et la ligne Listindex). Mais quand
je réouvre la Combobox, elle est déjà sur le 1er nom de la série. Je
peux en choisir un autre, mais pas le premier, tant que je n'ai pas
changé de nom !!
Ex : Dupont Jean - Dupont Albert - Dupont Paul
Je choisis la ligne Dupont Albert. Combobox Nom = Dupont, TextBox Prénom
= Albert.
Je réouvre le combobox : la ligne sélectionnée est Dupont Jean.
Je choisis Paul, OK.
Je choisis Jean (le 1er), La sélection reste sur Paul. Je suis obligé de
sélectionner un autre nom, puis de revenir.
Une idée ?
Ca aurait effectivement pu résoudre mon problème (en fait j'avais déjà cherché cette façon de faire, sans succès...). Mais dans mon cas, j'utilise la même combobox pour consulter ou entrer un nouveau nom : je commence à taper, si le nom n'existe pas, tout le formulaire s'efface et je crée une nouvelle ligne dans ma base. Je suis donc obligé d'avoir une case Nom et une case Prénom. En fait le pb vient d'ailleurs : dans le combobox Nom, lorsque je choisis un nom pour lequel j'ai plusieurs prénoms disponibles, le formulaire se rempli bien (je récupère ListIndex, puis j'utilise Intersect entre des colonnes nommées et la ligne Listindex). Mais quand je réouvre la Combobox, elle est déjà sur le 1er nom de la série. Je peux en choisir un autre, mais pas le premier, tant que je n'ai pas changé de nom !! Ex : Dupont Jean - Dupont Albert - Dupont Paul Je choisis la ligne Dupont Albert. Combobox Nom = Dupont, TextBox Prénom = Albert. Je réouvre le combobox : la ligne sélectionnée est Dupont Jean. Je choisis Paul, OK. Je choisis Jean (le 1er), La sélection reste sur Paul. Je suis obligé de sélectionner un autre nom, puis de revenir. Une idée ?
Et merci pour ton aide !
Alain
jb
Créer un premier élément neutre. Pour obliger Change à se déclencher lors du nouveau choix de Dupont, il faut positionner la liste sur un autre élément que Dupont:
En fin de séquence Change, positionner la liste sur le premier élément avec:
me.xxx.listindex=0
Ceci va déclencher un événement parasite. Le neutraliser avec If me.xx.listindex=0 then exit sub
JB
Créer un premier élément neutre.
Pour obliger Change à se déclencher lors du nouveau choix de Dupont,
il faut positionner la liste sur un autre élément que Dupont:
En fin de séquence Change, positionner la liste sur le premier
élément avec:
me.xxx.listindex=0
Ceci va déclencher un événement parasite. Le neutraliser avec If
me.xx.listindex=0 then exit sub
Créer un premier élément neutre. Pour obliger Change à se déclencher lors du nouveau choix de Dupont, il faut positionner la liste sur un autre élément que Dupont:
En fin de séquence Change, positionner la liste sur le premier élément avec:
me.xxx.listindex=0
Ceci va déclencher un événement parasite. Le neutraliser avec If me.xx.listindex=0 then exit sub
JB
michdenis
| Mais quand je réouvre la Combobox, elle est déjà sur le 1er nom de la série.
Est-ce une obligation d'ouvrir la combobox affichant la première entrée ?
Si tu utilises Listindex = -1 , aucun élément sera affiché dans le combobox à l'ouverture. L''événement "ComboBox1_Change" fera son travail adéquatement.
Si tu tiens vraiment à l'affichage du premier élément affiché à l'ouverture, à toi de te d'utiliser d'autres événements que "ComboBox1_Change" pour obtenir ce que tu désires !
Salutations!
"Alain" a écrit dans le message de news: Ca aurait effectivement pu résoudre mon problème (en fait j'avais déjà cherché cette façon de faire, sans succès...). Mais dans mon cas, j'utilise la même combobox pour consulter ou entrer un nouveau nom : je commence à taper, si le nom n'existe pas, tout le formulaire s'efface et je crée une nouvelle ligne dans ma base. Je suis donc obligé d'avoir une case Nom et une case Prénom. En fait le pb vient d'ailleurs : dans le combobox Nom, lorsque je choisis un nom pour lequel j'ai plusieurs prénoms disponibles, le formulaire se rempli bien (je récupère ListIndex, puis j'utilise Intersect entre des colonnes nommées et la ligne Listindex). Mais quand je réouvre la Combobox, elle est déjà sur le 1er nom de la série. Je peux en choisir un autre, mais pas le premier, tant que je n'ai pas changé de nom !! Ex : Dupont Jean - Dupont Albert - Dupont Paul Je choisis la ligne Dupont Albert. Combobox Nom = Dupont, TextBox Prénom = Albert. Je réouvre le combobox : la ligne sélectionnée est Dupont Jean. Je choisis Paul, OK. Je choisis Jean (le 1er), La sélection reste sur Paul. Je suis obligé de sélectionner un autre nom, puis de revenir. Une idée ?
Et merci pour ton aide !
Alain
| Mais quand je réouvre la Combobox, elle est déjà sur le 1er nom de la série.
Est-ce une obligation d'ouvrir la combobox affichant la première entrée ?
Si tu utilises Listindex = -1 , aucun élément sera affiché dans le combobox à l'ouverture.
L''événement "ComboBox1_Change" fera son travail adéquatement.
Si tu tiens vraiment à l'affichage du premier élément affiché à l'ouverture, à toi de te d'utiliser d'autres événements que
"ComboBox1_Change" pour obtenir ce que tu désires !
Salutations!
"Alain" <alain@bidon.com> a écrit dans le message de news: 435C1B44.2060404@bidon.com...
Ca aurait effectivement pu résoudre mon problème (en fait j'avais déjà
cherché cette façon de faire, sans succès...). Mais dans mon cas,
j'utilise la même combobox pour consulter ou entrer un nouveau nom : je
commence à taper, si le nom n'existe pas, tout le formulaire s'efface et
je crée une nouvelle ligne dans ma base. Je suis donc obligé d'avoir une
case Nom et une case Prénom.
En fait le pb vient d'ailleurs : dans le combobox Nom, lorsque je
choisis un nom pour lequel j'ai plusieurs prénoms disponibles, le
formulaire se rempli bien (je récupère ListIndex, puis j'utilise
Intersect entre des colonnes nommées et la ligne Listindex). Mais quand
je réouvre la Combobox, elle est déjà sur le 1er nom de la série. Je
peux en choisir un autre, mais pas le premier, tant que je n'ai pas
changé de nom !!
Ex : Dupont Jean - Dupont Albert - Dupont Paul
Je choisis la ligne Dupont Albert. Combobox Nom = Dupont, TextBox Prénom
= Albert.
Je réouvre le combobox : la ligne sélectionnée est Dupont Jean.
Je choisis Paul, OK.
Je choisis Jean (le 1er), La sélection reste sur Paul. Je suis obligé de
sélectionner un autre nom, puis de revenir.
Une idée ?
| Mais quand je réouvre la Combobox, elle est déjà sur le 1er nom de la série.
Est-ce une obligation d'ouvrir la combobox affichant la première entrée ?
Si tu utilises Listindex = -1 , aucun élément sera affiché dans le combobox à l'ouverture. L''événement "ComboBox1_Change" fera son travail adéquatement.
Si tu tiens vraiment à l'affichage du premier élément affiché à l'ouverture, à toi de te d'utiliser d'autres événements que "ComboBox1_Change" pour obtenir ce que tu désires !
Salutations!
"Alain" a écrit dans le message de news: Ca aurait effectivement pu résoudre mon problème (en fait j'avais déjà cherché cette façon de faire, sans succès...). Mais dans mon cas, j'utilise la même combobox pour consulter ou entrer un nouveau nom : je commence à taper, si le nom n'existe pas, tout le formulaire s'efface et je crée une nouvelle ligne dans ma base. Je suis donc obligé d'avoir une case Nom et une case Prénom. En fait le pb vient d'ailleurs : dans le combobox Nom, lorsque je choisis un nom pour lequel j'ai plusieurs prénoms disponibles, le formulaire se rempli bien (je récupère ListIndex, puis j'utilise Intersect entre des colonnes nommées et la ligne Listindex). Mais quand je réouvre la Combobox, elle est déjà sur le 1er nom de la série. Je peux en choisir un autre, mais pas le premier, tant que je n'ai pas changé de nom !! Ex : Dupont Jean - Dupont Albert - Dupont Paul Je choisis la ligne Dupont Albert. Combobox Nom = Dupont, TextBox Prénom = Albert. Je réouvre le combobox : la ligne sélectionnée est Dupont Jean. Je choisis Paul, OK. Je choisis Jean (le 1er), La sélection reste sur Paul. Je suis obligé de sélectionner un autre nom, puis de revenir. Une idée ?
Et merci pour ton aide !
Alain
Alain
Je ne cherche pas du tout à afficher la première entrée ! Je constate seulement que quand j'ai un nom avec plusieurs prénoms possibles, quel que soit le prénom choisi, quand je réouvre la combobox c'est le premier nom de la série qui est activé. Du coup lorsque je le resélectionne Combobox_change ne se déclenche pas. J'ai refait des tests avec un fichier "de base", soit uniquement 2 colonnes (nom et prénom) et un formulaire contenant une combobox pour le nom et une textbox pour le prénom correspondant, ça marche. Je ne trouve pas pourquoi sur le fichier complet ça ne marche pas ...
Je ne cherche pas du tout à afficher la première entrée ! Je constate
seulement que quand j'ai un nom avec plusieurs prénoms possibles, quel
que soit le prénom choisi, quand je réouvre la combobox c'est le premier
nom de la série qui est activé. Du coup lorsque je le resélectionne
Combobox_change ne se déclenche pas. J'ai refait des tests avec un
fichier "de base", soit uniquement 2 colonnes (nom et prénom) et un
formulaire contenant une combobox pour le nom et une textbox pour le
prénom correspondant, ça marche. Je ne trouve pas pourquoi sur le
fichier complet ça ne marche pas ...
Je ne cherche pas du tout à afficher la première entrée ! Je constate seulement que quand j'ai un nom avec plusieurs prénoms possibles, quel que soit le prénom choisi, quand je réouvre la combobox c'est le premier nom de la série qui est activé. Du coup lorsque je le resélectionne Combobox_change ne se déclenche pas. J'ai refait des tests avec un fichier "de base", soit uniquement 2 colonnes (nom et prénom) et un formulaire contenant une combobox pour le nom et une textbox pour le prénom correspondant, ça marche. Je ne trouve pas pourquoi sur le fichier complet ça ne marche pas ...
michdenis
Bonjour Alain,
Tu peux m'envoyer ton classeur dans ma Bal si tu veux ! Avec quelques explications.
Salutations!
"Alain" a écrit dans le message de news: Je ne cherche pas du tout à afficher la première entrée ! Je constate seulement que quand j'ai un nom avec plusieurs prénoms possibles, quel que soit le prénom choisi, quand je réouvre la combobox c'est le premier nom de la série qui est activé. Du coup lorsque je le resélectionne Combobox_change ne se déclenche pas. J'ai refait des tests avec un fichier "de base", soit uniquement 2 colonnes (nom et prénom) et un formulaire contenant une combobox pour le nom et une textbox pour le prénom correspondant, ça marche. Je ne trouve pas pourquoi sur le fichier complet ça ne marche pas ...
Bonjour Alain,
Tu peux m'envoyer ton classeur dans ma Bal si tu veux ! Avec quelques explications.
Salutations!
"Alain" <alain@bidon.com> a écrit dans le message de news: 435D34C4.5050402@bidon.com...
Je ne cherche pas du tout à afficher la première entrée ! Je constate
seulement que quand j'ai un nom avec plusieurs prénoms possibles, quel
que soit le prénom choisi, quand je réouvre la combobox c'est le premier
nom de la série qui est activé. Du coup lorsque je le resélectionne
Combobox_change ne se déclenche pas. J'ai refait des tests avec un
fichier "de base", soit uniquement 2 colonnes (nom et prénom) et un
formulaire contenant une combobox pour le nom et une textbox pour le
prénom correspondant, ça marche. Je ne trouve pas pourquoi sur le
fichier complet ça ne marche pas ...
Tu peux m'envoyer ton classeur dans ma Bal si tu veux ! Avec quelques explications.
Salutations!
"Alain" a écrit dans le message de news: Je ne cherche pas du tout à afficher la première entrée ! Je constate seulement que quand j'ai un nom avec plusieurs prénoms possibles, quel que soit le prénom choisi, quand je réouvre la combobox c'est le premier nom de la série qui est activé. Du coup lorsque je le resélectionne Combobox_change ne se déclenche pas. J'ai refait des tests avec un fichier "de base", soit uniquement 2 colonnes (nom et prénom) et un formulaire contenant une combobox pour le nom et une textbox pour le prénom correspondant, ça marche. Je ne trouve pas pourquoi sur le fichier complet ça ne marche pas ...