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

Remplir ComboBox à partir d'un tableau 2D

25 réponses
Avatar
danielos
Bonjour,

Je souhaiterai donner =E0 une Combobox les valeurs obtenues =E0 partir d=
'un=20
tableau 2 dimensions (n lignes, p colonnes), mais o=F9 toutes les=20
cellules ne seraient pas =E0 prendre.
Les cellules =E0 utiliser seraient vides et les autres ne le seraient pas=
=2E
Les valeurs =E0 recueillir seraient les coordonn=E9es des cellules valide=
s.

Ma premi=E8re id=E9e serait dans un premier temps au moyen d'une macro de=

lister les cellules valides dans une colonne (mais =E7a je ne sais pas
faire) et dans un second temps d'utiliser les valeurs de la colonne pour
remplir la CB.

Mais peut-=EAtre y a t-il une autre possibilit=E9 plus jolie que =E7a ?

N'=E9tant pas s=FBr que mon probl=E8me est bien exprim=E9, j'ai mis un ex=
emple
du tableau que je pourrai avoir et de la liste attendue dans la CB.
http://cjoint.com/?0Egp3FtGi1B

Merci =E0 toutes et =E0 tous pour votre aide ou un d=E9but de piste.

Daniel

10 réponses

1 2 3
Avatar
Jacquouille
Bonjour

Une pensée très matinale m'a apporté ceci ...

Sub liste_Adresses()
n = 1
For Each c In Range("c5:f8") ' ton tableau dans ton exemple
If c.Value = "" Then
x = c.Address
Range("a" & n).Value = x
n = n + 1
End If
Next
End Sub

Au plaisir de lire tes commentaires.

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"danielos" a écrit dans le message de groupe de discussion :
miemj1$koi$

Bonjour,

Je souhaiterai donner à une Combobox les valeurs obtenues à partir d'un
tableau 2 dimensions (n lignes, p colonnes), mais où toutes les
cellules ne seraient pas à prendre.
Les cellules à utiliser seraient vides et les autres ne le seraient pas.
Les valeurs à recueillir seraient les coordonnées des cellules valides.

Ma première idée serait dans un premier temps au moyen d'une macro de
lister les cellules valides dans une colonne (mais ça je ne sais pas
faire) et dans un second temps d'utiliser les valeurs de la colonne pour
remplir la CB.

Mais peut-être y a t-il une autre possibilité plus jolie que ça ?

N'étant pas sûr que mon problème est bien exprimé, j'ai mis un exemple
du tableau que je pourrai avoir et de la liste attendue dans la CB.
http://cjoint.com/?0Egp3FtGi1B

Merci à toutes et à tous pour votre aide ou un début de piste.

Daniel


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
MichD
Bonjour,

Un fichier exemple : http://cjoint.com/?EEhmrxYYPjl
Avatar
danielos
Bonjour,

Merci Jacquouille, tu as de bonnes pensées matinales ;-)
Aurais-tu une astuce qui me permettrait de récupérer les titres des
lignes et colonnes de mon tableau et non pas l'adresse de la cellule
dans la feuille ?

Bien à toi et merci encore (même si l'astuce n'existe pas, j'ai déj à
bien avancé avec ta macro).

Daniel



Jacquouille a écrit :
Bonjour

Une pensée très matinale m'a apporté ceci ...

Sub liste_Adresses()
n = 1
For Each c In Range("c5:f8") ' ton tableau dans ton exemple
If c.Value = "" Then
x = c.Address
Range("a" & n).Value = x
n = n + 1
End If
Next
End Sub

Au plaisir de lire tes commentaires.

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"danielos" a écrit dans le message de groupe de discussion :
miemj1$koi$

Bonjour,

Je souhaiterai donner à une Combobox les valeurs obtenues à partir d'un
tableau 2 dimensions (n lignes, p colonnes), mais où toutes les
cellules ne seraient pas à prendre.
Les cellules à utiliser seraient vides et les autres ne le seraient p as.
Les valeurs à recueillir seraient les coordonnées des cellules vali des.

Ma première idée serait dans un premier temps au moyen d'une macro de
lister les cellules valides dans une colonne (mais ça je ne sais pas
faire) et dans un second temps d'utiliser les valeurs de la colonne pou r
remplir la CB.

Mais peut-être y a t-il une autre possibilité plus jolie que ça ?

N'étant pas sûr que mon problème est bien exprimé, j'ai mis un exemple
du tableau que je pourrai avoir et de la liste attendue dans la CB.
http://cjoint.com/?0Egp3FtGi1B

Merci à toutes et à tous pour votre aide ou un début de piste.

Daniel

---
L'absence de virus dans ce courrier électronique a été vérifié e par le
logiciel antivirus Avast.
http://www.avast.com

Avatar
isabelle
bonjour Daniel,

remplace
x = c.Address
Range("a" & n).Value = x
par
Range("a" & n).Value = Range(c.Address).Value

isabelle

Le 2015-05-07 11:56, danielos a écrit :
Bonjour,

Merci Jacquouille, tu as de bonnes pensées matinales ;-)
Aurais-tu une astuce qui me permettrait de récupérer les titres des lignes et
colonnes de mon tableau et non pas l'adresse de la cellule dans la feuille ?

Bien à toi et merci encore (même si l'astuce n'existe pas, j'ai déjà bien avancé
avec ta macro).

Daniel



Jacquouille a écrit :
Bonjour

Une pensée très matinale m'a apporté ceci ...

Sub liste_Adresses()
n = 1
For Each c In Range("c5:f8") ' ton tableau dans ton exemple
If c.Value = "" Then
x = c.Address
Range("a" & n).Value = x
n = n + 1
End If
Next
End Sub

Au plaisir de lire tes commentaires.

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"danielos" a écrit dans le message de groupe de discussion :
miemj1$koi$

Bonjour,

Je souhaiterai donner à une Combobox les valeurs obtenues à partir d'un
tableau 2 dimensions (n lignes, p colonnes), mais où toutes les
cellules ne seraient pas à prendre.
Les cellules à utiliser seraient vides et les autres ne le seraient pas.
Les valeurs à recueillir seraient les coordonnées des cellules valides.

Ma première idée serait dans un premier temps au moyen d'une macro de
lister les cellules valides dans une colonne (mais ça je ne sais pas
faire) et dans un second temps d'utiliser les valeurs de la colonne pour
remplir la CB.

Mais peut-être y a t-il une autre possibilité plus jolie que ça ?

N'étant pas sûr que mon problème est bien exprimé, j'ai mis un exemple
du tableau que je pourrai avoir et de la liste attendue dans la CB.
http://cjoint.com/?0Egp3FtGi1B

Merci à toutes et à tous pour votre aide ou un début de piste.

Daniel

---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com




Avatar
danielos
Bonjour,

Merci à toi MichD, effectivement c'est une piste intéressante qui
pourrait répondre en l'adaptant et cela nécessite d'avoir 2 CB en
cascade pour arriver au choix final. Pourquoi pas ...

Daniel


MichD a écrit :
Bonjour,

Un fichier exemple : http://cjoint.com/?EEhmrxYYPjl
Avatar
danielos
Bonjour Isabelle,

J'ai bien essayé de remplacer les 2 lignes par ta proposition mais cela
ne donne rien malheureusement. Aucun affichage. La fenêtre de Variables
locales montre bien l'incrémentation de n par contre.

Daniel


isabelle a écrit :
bonjour Daniel,

remplace
x = c.Address
Range("a" & n).Value = x
par
Range("a" & n).Value = Range(c.Address).Value

isabelle

Le 2015-05-07 11:56, danielos a écrit :
Bonjour,

Merci Jacquouille, tu as de bonnes pensées matinales ;-)
Aurais-tu une astuce qui me permettrait de récupérer les titres de s
lignes et
colonnes de mon tableau et non pas l'adresse de la cellule dans la
feuille ?

Bien à toi et merci encore (même si l'astuce n'existe pas, j'ai dé jà
bien avancé
avec ta macro).

Daniel



Jacquouille a écrit :
Bonjour

Une pensée très matinale m'a apporté ceci ...

Sub liste_Adresses()
n = 1
For Each c In Range("c5:f8") ' ton tableau dans ton exemple
If c.Value = "" Then
x = c.Address
Range("a" & n).Value = x
n = n + 1
End If
Next
End Sub

Au plaisir de lire tes commentaires.

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"danielos" a écrit dans le message de groupe de discussion :
miemj1$koi$

Bonjour,

Je souhaiterai donner à une Combobox les valeurs obtenues à part ir d'un
tableau 2 dimensions (n lignes, p colonnes), mais où toutes les
cellules ne seraient pas à prendre.
Les cellules à utiliser seraient vides et les autres ne le seraient pas.
Les valeurs à recueillir seraient les coordonnées des cellules va lides.

Ma première idée serait dans un premier temps au moyen d'une macr o de
lister les cellules valides dans une colonne (mais ça je ne sais pa s
faire) et dans un second temps d'utiliser les valeurs de la colonne p our
remplir la CB.

Mais peut-être y a t-il une autre possibilité plus jolie que ça ?

N'étant pas sûr que mon problème est bien exprimé, j'ai mis u n exemple
du tableau que je pourrai avoir et de la liste attendue dans la CB.
http://cjoint.com/?0Egp3FtGi1B

Merci à toutes et à tous pour votre aide ou un début de piste.

Daniel

---
L'absence de virus dans ce courrier électronique a été vérifi ée par le
logiciel antivirus Avast.
http://www.avast.com




Avatar
MichD
! cela nécessite d'avoir 2 CB en
| cascade pour arriver au choix final. Pourquoi pas ...

Absolument pas. Cet exemple a été créé pour quelqu'un qui
avait besoin de ces 2 combobox. Il n'y a aucun problème à
faire ce que tu désires en utilisant seulement un combobox.
Avatar
isabelle
est ce que le résultat doit être du genre ?
1B
1C
1D
2A
2D
3A
3C
3D
4A
4B


isabelle

Le 2015-05-07 12:40, danielos a écrit :
Bonjour Isabelle,

J'ai bien essayé de remplacer les 2 lignes par ta proposition mais cela ne donne
rien malheureusement. Aucun affichage. La fenêtre de Variables locales montre
bien l'incrémentation de n par contre.

Daniel


isabelle a écrit :
bonjour Daniel,

remplace
x = c.Address
Range("a" & n).Value = x
par
Range("a" & n).Value = Range(c.Address).Value

isabelle

Le 2015-05-07 11:56, danielos a écrit :
Bonjour,

Merci Jacquouille, tu as de bonnes pensées matinales ;-)
Aurais-tu une astuce qui me permettrait de récupérer les titres des lignes et
colonnes de mon tableau et non pas l'adresse de la cellule dans la feuille ?

Bien à toi et merci encore (même si l'astuce n'existe pas, j'ai déjà bien avancé
avec ta macro).

Daniel



Jacquouille a écrit :
Bonjour

Une pensée très matinale m'a apporté ceci ...

Sub liste_Adresses()
n = 1
For Each c In Range("c5:f8") ' ton tableau dans ton exemple
If c.Value = "" Then
x = c.Address
Range("a" & n).Value = x
n = n + 1
End If
Next
End Sub

Au plaisir de lire tes commentaires.

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"danielos" a écrit dans le message de groupe de discussion :
miemj1$koi$

Bonjour,

Je souhaiterai donner à une Combobox les valeurs obtenues à partir d'un
tableau 2 dimensions (n lignes, p colonnes), mais où toutes les
cellules ne seraient pas à prendre.
Les cellules à utiliser seraient vides et les autres ne le seraient pas.
Les valeurs à recueillir seraient les coordonnées des cellules valides.

Ma première idée serait dans un premier temps au moyen d'une macro de
lister les cellules valides dans une colonne (mais ça je ne sais pas
faire) et dans un second temps d'utiliser les valeurs de la colonne pour
remplir la CB.

Mais peut-être y a t-il une autre possibilité plus jolie que ça ?

N'étant pas sûr que mon problème est bien exprimé, j'ai mis un exemple
du tableau que je pourrai avoir et de la liste attendue dans la CB.
http://cjoint.com/?0Egp3FtGi1B

Merci à toutes et à tous pour votre aide ou un début de piste.

Daniel

---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com









Avatar
isabelle
ok je vient juste de voir
A-2
A-3
A-4
B-1
B-4
C-1
C-3
D-1
D-2
D-3


Sub liste_Coordonnées()
Dim n As Integer, c
For Each c In Range("c4:f8") ' ton tableau dans ton exemple
If c.Value = "" Then
n = n + 1
Range("a" & n).Value = Cells(4, c.Column) & "-" & Cells(c.Row, 2)
End If
Next
'trie
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("A1:A21")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A1").Select
End Sub

isabelle
Avatar
Jacquouille
Re
Chez moi, la macro indique bien les cel vides du tableau en A1:A10, mais ne
les trie pas ....
-(


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"isabelle" a écrit dans le message de groupe de discussion :
mig7m5$bd5$

ok je vient juste de voir
A-2
A-3
A-4
B-1
B-4
C-1
C-3
D-1
D-2
D-3


Sub liste_Coordonnées()
Dim n As Integer, c
For Each c In Range("c4:f8") ' ton tableau dans ton exemple
If c.Value = "" Then
n = n + 1
Range("a" & n).Value = Cells(4, c.Column) & "-" & Cells(c.Row, 2)
End If
Next
'trie
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("A1:A21")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A1").Select
End Sub

isabelle


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
1 2 3