Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problèmes d'adaptation d'un formulaire de JB en multi-colonnes

8 réponses
Avatar
François
Bonjour à tous,

Dans un fichier jb-formulaires (onglet ChoixLettreBD ->
http://boisgontierj.free.fr/fichiers/jb-formulaire.zip ) JB nous propose
dans un Userform, une ComboBox qui, par la sélection d'une lettre de
l'alphabet, active le remplissage d'une ListBox sur 1 seule colonne ...

J'essaie d'adapter ce Formulaire en multi-colonnes, pour qu'il n'affiche non
plus une mais les 4 colonnes (contiguës du tableau) dans la ListBox.

J'ai donc modifié la ListBox ChoixNom de JB par :
ColumnCount -> 4
ColumnHead -> True
RowSource -> A2:D22 (= tableau inchangé de JB) -> la ListBox s'incrémente
alors correctement dans le VBA

Le problème est que lorsque le formulaire est lancé, cela bogue ...
Je n'arrive pas à comprendre comment corriger cela ... Seul l'appel du
formulaire est mis en jaune par le débogueur.

Sauriez-vous ce qu'il faut modifier, pour autant que ce que je cherche à
faire soit possible ?

Merci à tous

François

8 réponses

Avatar
JB
Bonjour,

Private Sub UserForm_Initialize()
Sheets("ChoixLettreBD").[A2:D1000].Sort key1:=[A2]
'-- A,B,C,
Me.ChoixLettre.AddItem "*"
For c = 65 To 65 + 25
Me.ChoixLettre.AddItem Chr(c)
Next c
'-- Liste des noms
derlig = [A65000].End(xlUp).Row
Me.ChoixNom.List = Range("A2:D" & derlig).Value
[A2].Select
maj
End Sub

Private Sub ChoixLettre_Change()
j = 0
Me.ChoixNom.Clear
If Me.ChoixLettre <> "*" Then
For Each c In Range([A2], [A65000].End(xlUp))
If Left(c.Value, 1) = Me.ChoixLettre Then
Me.ChoixNom.AddItem
Me.ChoixNom.List(j, 0) = c
Me.ChoixNom.List(j, 1) = c.Offset(0, 1)
Me.ChoixNom.List(j, 2) = c.Offset(0, 2)
Me.ChoixNom.List(j, 3) = c.Offset(0, 3)
j = j + 1
End If
Next c
Else
derlig = [A65000].End(xlUp).Row
Me.ChoixNom.List = Range("A2:D" & derlig).Value
End If
End Sub

Private Sub ChoixNom_Click()
[A:A].Find(ChoixNom, LookIn:=xlValues).Select
maj
End Sub
Sub maj()
nom = ActiveCell.Value
Me.Tph = ActiveCell.Offset(0, 1).Value
Me.Portable = ActiveCell.Offset(0, 2).Value
Me.Email = ActiveCell.Offset(0, 3).Value
End Sub

Private Sub b_validation_Click()
If Me.nom = "" Then
MsgBox "Saisir un nom!"
Me.nom.SetFocus
Exit Sub
End If
'---- transfert base
ActiveCell.Value = Application.Proper(Me.nom)
ActiveCell.Offset(0, 1).Value = Me.Tph
ActiveCell.Offset(0, 2).Value = Me.Portable
ActiveCell.Offset(0, 3).Value = Me.Email
Me.nom.SetFocus
End Sub
Private Sub b_fin_Click()
Unload Me
End Sub


JB
http://boisgontierjacques.free.fr

On 5 jan, 16:35, "François" wrote:
Bonjour à tous,

Dans un fichier jb-formulaires (onglet ChoixLettreBD ->http://boisgontier j.free.fr/fichiers/jb-formulaire.zip) JB nous propose
dans un Userform, une ComboBox qui, par la sélection d'une lettre de
l'alphabet, active le remplissage d'une ListBox sur 1 seule colonne ...

J'essaie d'adapter ce Formulaire en multi-colonnes, pour qu'il n'affiche non
plus une mais les 4 colonnes (contiguës du tableau) dans la ListBox.

J'ai donc modifié la ListBox ChoixNom de JB par :
ColumnCount -> 4
ColumnHead -> True
RowSource -> A2:D22 (= tableau inchangé de JB) -> la ListBox s'incr émente
alors correctement dans le VBA

Le problème est que lorsque le formulaire est lancé, cela bogue ...
Je n'arrive pas à comprendre comment corriger cela ... Seul l'appel du
formulaire est mis en jaune par le débogueur.

Sauriez-vous ce qu'il faut modifier, pour autant que ce que je cherche à
faire soit possible ?

Merci à tous

François


Avatar
François
Bonjour JB,

Merci beaucoup pour ton aide et la qualité de tout ce que tu nous mets sur
ton site.

J'ai remplacé le contenu du Userform par ce que tu m'a renvoyé, mais j'ai un
bog à l'intérieur du formulaire (Excel 2000) :

Erreur d'exécution 1004
Impossible de lire la propriété Find de la classe Range sur la ligne :
-> [A:A].Find(ChoixNom, LookIn:=xlValues).Select
dans Private Sub ChoixNom_Click()

Les seuls propriétés changées dans la ListBox sont :
ColumnCount -> 4 / ColumnHead -> True / RowSource -> A2:D22

Y-a-t-il un autre paramètre à corriger dans les propriétés ?

Merci

François
Avatar
JB
On 5 jan, 19:00, "François" wrote:
Bonjour JB,

Merci beaucoup pour ton aide et la qualité de tout ce que tu nous mets sur
ton site.

J'ai remplacé le contenu du Userform par ce que tu m'a renvoyé, mais j'ai un
bog à l'intérieur du formulaire (Excel 2000) :




http://cjoint.com/?bfuMbAxhuT

JB

Erreur d'exécution 1004
Impossible de lire la propriété Find de la classe Range sur la ligne :
->  [A:A].Find(ChoixNom, LookIn:=xlValues).Select
dans Private Sub ChoixNom_Click()

Les seuls propriétés changées dans la ListBox sont :
ColumnCount -> 4 / ColumnHead -> True / RowSource -> A2:D22

Y-a-t-il un autre paramètre à corriger dans les propriétés ?

Merci

François


Avatar
JB
http://cjoint.com/?bfvbw4ikff

JB

On 5 jan, 19:00, "François" wrote:
Bonjour JB,

Merci beaucoup pour ton aide et la qualité de tout ce que tu nous mets sur
ton site.

J'ai remplacé le contenu du Userform par ce que tu m'a renvoyé, mais j'ai un
bog à l'intérieur du formulaire (Excel 2000) :

Erreur d'exécution 1004
Impossible de lire la propriété Find de la classe Range sur la ligne :
->  [A:A].Find(ChoixNom, LookIn:=xlValues).Select
dans Private Sub ChoixNom_Click()

Les seuls propriétés changées dans la ListBox sont :
ColumnCount -> 4 / ColumnHead -> True / RowSource -> A2:D22

Y-a-t-il un autre paramètre à corriger dans les propriétés ?

Merci

François


Avatar
François
Cela marche super !

Ma version d'excel est donc tout à fait compatible ; mais je rencontre une
petite difficulté :
si j'ai des données en colonne 1 et 2 qui sont identiques, et ne se
différencient que par la colonne 3 ou la colonne 4, la sélection faite par
le process reprends toujours la 1ère adresse ...

Est-il possible, lorsque les noms s'affichent et que l'on ait des homonymes,
de les individualiser lors de la sélection dans la ListBox sur les critères
différentiels de la 3 ou 4ème colonne ...
Naïvement, en faisant afficher les autres colonnes, je pensais que la
différenciation par les lignes permettraient d'individualiser la bonne
cible.

Merci encore

François


"JB" a écrit dans le message de news:


http://cjoint.com/?bfvbw4ikff

JB

On 5 jan, 19:00, "François" wrote:
Bonjour JB,

Merci beaucoup pour ton aide et la qualité de tout ce que tu nous mets sur
ton site.

J'ai remplacé le contenu du Userform par ce que tu m'a renvoyé, mais j'ai
un
bog à l'intérieur du formulaire (Excel 2000) :

Erreur d'exécution 1004
Impossible de lire la propriété Find de la classe Range sur la ligne :
-> [A:A].Find(ChoixNom, LookIn:=xlValues).Select
dans Private Sub ChoixNom_Click()

Les seuls propriétés changées dans la ListBox sont :
ColumnCount -> 4 / ColumnHead -> True / RowSource -> A2:D22

Y-a-t-il un autre paramètre à corriger dans les propriétés ?

Merci

François


Avatar
François
Pardon 'ai oublié de mettre le fichier en Cjoint ...

http://cjoint.com/?bfwUlIyD0D

François

"JB" a écrit dans le message de news:


http://cjoint.com/?bfvbw4ikff

JB

On 5 jan, 19:00, "François" wrote:
Bonjour JB,

Merci beaucoup pour ton aide et la qualité de tout ce que tu nous mets sur
ton site.

J'ai remplacé le contenu du Userform par ce que tu m'a renvoyé, mais j'ai
un
bog à l'intérieur du formulaire (Excel 2000) :

Erreur d'exécution 1004
Impossible de lire la propriété Find de la classe Range sur la ligne :
-> [A:A].Find(ChoixNom, LookIn:=xlValues).Select
dans Private Sub ChoixNom_Click()

Les seuls propriétés changées dans la ListBox sont :
ColumnCount -> 4 / ColumnHead -> True / RowSource -> A2:D22

Y-a-t-il un autre paramètre à corriger dans les propriétés ?

Merci

François


Avatar
JB
http://cjoint.com/?bfxEjArZXM

JB

On 5 jan, 22:00, "François" wrote:
Pardon 'ai oublié de mettre le fichier en Cjoint ...

http://cjoint.com/?bfwUlIyD0D

François

"JB" a écrit dans le message de news:


http://cjoint.com/?bfvbw4ikff

JB

On 5 jan, 19:00, "François" wrote:



> Bonjour JB,

> Merci beaucoup pour ton aide et la qualité de tout ce que tu nous met s sur
> ton site.

> J'ai remplacé le contenu du Userform par ce que tu m'a renvoyé, mai s j'ai
> un
> bog à l'intérieur du formulaire (Excel 2000) :

> Erreur d'exécution 1004
> Impossible de lire la propriété Find de la classe Range sur la lign e :
> -> [A:A].Find(ChoixNom, LookIn:=xlValues).Select
> dans Private Sub ChoixNom_Click()

> Les seuls propriétés changées dans la ListBox sont :
> ColumnCount -> 4 / ColumnHead -> True / RowSource -> A2:D22

> Y-a-t-il un autre paramètre à corriger dans les propriétés ?

> Merci

> François- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Avatar
François
Bonjour JB,

Merci beaucoup pour ton aide (ou plutôt le travail que tu as fait pour moi)
C'est exactement ce que j'essayais de faire et cela marche parfaitement.

Merci encore et bonne journée

François

"JB" a écrit dans le message de news:


http://cjoint.com/?bfxEjArZXM

JB

On 5 jan, 22:00, "François" wrote:
Pardon 'ai oublié de mettre le fichier en Cjoint ...

http://cjoint.com/?bfwUlIyD0D

François

"JB" a écrit dans le message de news:


http://cjoint.com/?bfvbw4ikff

JB

On 5 jan, 19:00, "François" wrote:



> Bonjour JB,

> Merci beaucoup pour ton aide et la qualité de tout ce que tu nous mets
> sur
> ton site.

> J'ai remplacé le contenu du Userform par ce que tu m'a renvoyé, mais
> j'ai
> un
> bog à l'intérieur du formulaire (Excel 2000) :

> Erreur d'exécution 1004
> Impossible de lire la propriété Find de la classe Range sur la ligne :
> -> [A:A].Find(ChoixNom, LookIn:=xlValues).Select
> dans Private Sub ChoixNom_Click()

> Les seuls propriétés changées dans la ListBox sont :
> ColumnCount -> 4 / ColumnHead -> True / RowSource -> A2:D22

> Y-a-t-il un autre paramètre à corriger dans les propriétés ?

> Merci

> François- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -