Discussion:
Remplir une ListBox par Tableau
(trop ancien pour répondre)
Péhemme
2019-06-02 11:59:14 UTC
Permalink
Bonjour à Tous,

Dans un UserForm, après la validation du choix d'une journée, la macro
remplit une ListBox.
La présentation de cette ListBox fonctionne, à ce stade, parfaitement bien
pour toutes les journées SAUF la 1.
Je ne trouve pas pourquoi.

Merci d'avance à celui qui saura m'expliquer mon erreur.

Aux fins de tests vous trouverez un fichier :
https://cjoint.com/c/IFcl4dBrKKS

Michel
MichD
2019-06-02 13:59:37 UTC
Permalink
Post by Péhemme
Bonjour à Tous,
Dans un UserForm, après la validation du choix d'une journée, la macro
remplit une ListBox.
La présentation de cette ListBox fonctionne, à ce stade, parfaitement
bien pour toutes les journées SAUF la 1.
Je ne trouve pas pourquoi.
Merci d'avance à celui qui saura m'expliquer mon erreur.
https://cjoint.com/c/IFcl4dBrKKS
Michel
Bonjour,

Voir ton fichier, j'ai identifié la ligne de code que j'ai modifiée.

https://cjoint.com/c/IFcn6Kd7Ghj

MichD
Péhemme
2019-06-02 14:34:43 UTC
Permalink
Bonjour Denis,

Merci de ton aide, mais je ne vois aucune différence dans la présentation de
la journée : 1.
La ListBox est toujours sur 2 lignes (nom de l'équipe, ligne du dessous :
classement).
Dans tous les autres cas (journées 2 à 38) la rédaction de la ListBox est
bien sur une seule ligne (classement, nom de l'équipe) : ce que je cherche à
obtenir également pour la journée 1.

Bonne fin de dimanche
Michel
Post by Péhemme
Bonjour à Tous,
Dans un UserForm, après la validation du choix d'une journée, la macro
remplit une ListBox.
La présentation de cette ListBox fonctionne, à ce stade, parfaitement bien
pour toutes les journées SAUF la 1.
Je ne trouve pas pourquoi.
Merci d'avance à celui qui saura m'expliquer mon erreur.
https://cjoint.com/c/IFcl4dBrKKS
Michel
Bonjour,

Voir ton fichier, j'ai identifié la ligne de code que j'ai modifiée.

https://cjoint.com/c/IFcn6Kd7Ghj

MichD
MichD
2019-06-02 16:25:57 UTC
Permalink
Post by Péhemme
Bonjour Denis,
Merci de ton aide, mais je ne vois aucune différence dans la
présentation de la journée : 1.
La ListBox est toujours sur 2 lignes (nom de l'équipe, ligne du dessous
: classement).
Dans tous les autres cas (journées 2 à 38) la rédaction de la ListBox
est bien sur une seule ligne (classement, nom de l'équipe) : ce que je
cherche à obtenir également pour la journée 1.
Bonjour,

Une image du contenu du listbox
https://cjoint.com/c/IFcqvLlLk3j

Les données du listbox sont sur 2 colonnes différentes
et représentent bien le contenu des 2 colonnes retenues.

Si tu veux autre chose, explique-moi.
Que doit contenir le listbox et quel doit être la présentation des
données dans le listbox

MichD
Péhemme
2019-06-02 16:37:32 UTC
Permalink
Post by Péhemme
Bonjour Denis,
Merci de ton aide, mais je ne vois aucune différence dans la présentation
de la journée : 1.
classement).
Dans tous les autres cas (journées 2 à 38) la rédaction de la ListBox est
bien sur une seule ligne (classement, nom de l'équipe) : ce que je cherche
à obtenir également pour la journée 1.
Bonjour,

Une image du contenu du listbox
https://cjoint.com/c/IFcqvLlLk3j

Les données du listbox sont sur 2 colonnes différentes
et représentent bien le contenu des 2 colonnes retenues.

Si tu veux autre chose, explique-moi.
Que doit contenir le listbox et quel doit être la présentation des
données dans le listbox

MichD

Oui Denis, l'image que tu présentes concerne la journée 9 ; c'est
effectivement la présentation que je souhaite.
Cette présentation est correcte sauf pour la journée 1 qui malheureusement
se présente comme suit :
https://www.cjoint.com/c/IFcqKiDw58S

Merci encore de ton aide.

Michel
MichD
2019-06-02 17:13:22 UTC
Permalink
Bonjour,

Désolé, mais ça me prend un certain temps pour comprendre, je ne sais
pas lire! ;-)

Tout semble OK.
https://cjoint.com/c/IFcrik0WzWj

Attention :

L'union de deux colonnes adjacentes ne forme qu'un "AREAS" contrairement
à deux colonnes non adjacentes constituant "AREAS". J'ai par conséquent
modifié légèrement la procédure.

MichD
Péhemme
2019-06-02 17:32:19 UTC
Permalink
Je ne te dis pas que tu es le meilleur car tu finirais par le croire.
;-)))
Mille mercis bien sûr.
Cependant, pourquoi ce contrôle sur > 1 dans la macro et donc le rôle de T
?

Il ne me reste plus qu'à trier ce tableau en fonction du classement pour une
lecture plus facile... Cela va être une autre paire de manches, mais il faut
que j'apprenne à maitriser ces f... tableaux.

Bien amicalement
Michel


"MichD" a écrit dans le message de groupe de discussion :
qd103k$1inh$***@gioia.aioe.org...

Bonjour,

Désolé, mais ça me prend un certain temps pour comprendre, je ne sais
pas lire! ;-)

Tout semble OK.
https://cjoint.com/c/IFcrik0WzWj

Attention :

L'union de deux colonnes adjacentes ne forme qu'un "AREAS" contrairement
à deux colonnes non adjacentes constituant "AREAS". J'ai par conséquent
modifié légèrement la procédure.

MichD
MichD
2019-06-02 17:48:37 UTC
Permalink
Si tu fais référence à ceci :

'---------------------
V = Me.ComboBox1.Value

If V > 1 Then
NbCol = Rng.Areas.Count
Else
NbCol = 2
End If
'---------------------

Quand tu choisis la valeur 1 dans le combobox,
Tu as 2 plages de cellules

Set Champ2 = .Range("B6:B25")
Set champ3 = .Range(.Cells(6, Col), .Cells(25, Col))
Set Rng = Union(champ3, Champ2)

En fait, tu as la plage B6:C25, deux colonnes adjacentes. Les 2 colonnes
ne forment qu'UN AREAS.

Dans la plage Tableau(Rng) tu définissais le nombre de colonnes de la
plage comme ceci : NbCol = Rng.Areas.Count

Lorsque tu choisissais 1 dans le combobox, toutes les valeurs se
retrouvaient dans la même colonne du listbox, puisqu'il n'y avait qu'UN
Areas, par conséquent qu'une colonne.

Dans la procédure "Private Sub btn_Valider_Click()", ceci est suffisant
pour définir la plage de cellule Set Rng = Union(champ3, Champ2), le
test avec If else end if est inutile.

MichD
Péhemme
2019-06-02 17:51:37 UTC
Permalink
Merci pour l'explication, je pense avoir compris.
Michel


"MichD" a écrit dans le message de groupe de discussion :
qd125n$1ro9$***@gioia.aioe.org...


Si tu fais référence à ceci :

'---------------------
V = Me.ComboBox1.Value

If V > 1 Then
NbCol = Rng.Areas.Count
Else
NbCol = 2
End If
'---------------------

Quand tu choisis la valeur 1 dans le combobox,
Tu as 2 plages de cellules

Set Champ2 = .Range("B6:B25")
Set champ3 = .Range(.Cells(6, Col), .Cells(25, Col))
Set Rng = Union(champ3, Champ2)

En fait, tu as la plage B6:C25, deux colonnes adjacentes. Les 2 colonnes
ne forment qu'UN AREAS.

Dans la plage Tableau(Rng) tu définissais le nombre de colonnes de la
plage comme ceci : NbCol = Rng.Areas.Count

Lorsque tu choisissais 1 dans le combobox, toutes les valeurs se
retrouvaient dans la même colonne du listbox, puisqu'il n'y avait qu'UN
Areas, par conséquent qu'une colonne.

Dans la procédure "Private Sub btn_Valider_Click()", ceci est suffisant
pour définir la plage de cellule Set Rng = Union(champ3, Champ2), le
test avec If else end if est inutile.

MichD
Péhemme
2019-06-02 17:41:19 UTC
Permalink
Pardon, je n'avais pas lu ton message jusqu'au bout.
C'est donc l'utilisation de Areas qui me posait problème.
Sachant que par construction il n'y a que 2 colonnes, je peux essayer de me
simplifier la vie...
Au départ je mettais 3 colonnes, mais cela alourdissait la lecture...

Merci encore de ton aide un dimanche qui fut, sur les bords de la
méditerranée, ensoleillé.

Bien amicalement
Michel


"MichD" a écrit dans le message de groupe de discussion :
qd103k$1inh$***@gioia.aioe.org...

Bonjour,

Désolé, mais ça me prend un certain temps pour comprendre, je ne sais
pas lire! ;-)

Tout semble OK.
https://cjoint.com/c/IFcrik0WzWj

Attention :

L'union de deux colonnes adjacentes ne forme qu'un "AREAS" contrairement
à deux colonnes non adjacentes constituant "AREAS". J'ai par conséquent
modifié légèrement la procédure.

MichD
MichD
2019-06-02 17:53:46 UTC
Permalink
Tu aurais pu insérer une colonne entre la colonne B et C, la colonne C
serait devenue D et tu n'avais qu'à masquer la colonne C. cela aurait
évité de modifier le code! ;-)

MichD
Post by Péhemme
Pardon, je n'avais pas lu ton message jusqu'au bout.
C'est donc l'utilisation de Areas qui me posait problème.
Sachant que par construction il n'y a que 2 colonnes, je peux essayer de
me simplifier la vie...
Au départ je mettais 3 colonnes, mais cela alourdissait la lecture...
Merci encore de ton aide un dimanche qui fut, sur les bords de la
méditerranée, ensoleillé.
Bien amicalement
Michel
Bonjour,
Désolé, mais ça me prend un certain temps pour comprendre, je ne sais
pas lire! ;-)
Tout semble OK.
https://cjoint.com/c/IFcrik0WzWj
L'union de deux colonnes adjacentes ne forme qu'un "AREAS" contrairement
à deux colonnes non adjacentes constituant "AREAS". J'ai par conséquent
modifié légèrement la procédure.
MichD
Péhemme
2019-06-02 18:14:40 UTC
Permalink
:-)))
Ce n'est qu'après que l'on y pense..
:-)))
Michel


"MichD" a écrit dans le message de groupe de discussion :
qd12fc$1t3r$***@gioia.aioe.org...


Tu aurais pu insérer une colonne entre la colonne B et C, la colonne C
serait devenue D et tu n'avais qu'à masquer la colonne C. cela aurait
évité de modifier le code! ;-)

MichD
Post by Péhemme
Pardon, je n'avais pas lu ton message jusqu'au bout.
C'est donc l'utilisation de Areas qui me posait problème.
Sachant que par construction il n'y a que 2 colonnes, je peux essayer de
me simplifier la vie...
Au départ je mettais 3 colonnes, mais cela alourdissait la lecture...
Merci encore de ton aide un dimanche qui fut, sur les bords de la
méditerranée, ensoleillé.
Bien amicalement
Michel
Bonjour,
Désolé, mais ça me prend un certain temps pour comprendre, je ne sais
pas lire! ;-)
Tout semble OK.
https://cjoint.com/c/IFcrik0WzWj
L'union de deux colonnes adjacentes ne forme qu'un "AREAS" contrairement
à deux colonnes non adjacentes constituant "AREAS". J'ai par conséquent
modifié légèrement la procédure.
MichD
Loading...