Remplir un combobox après un tri sur colonne séparée
4 réponses
Clicnik
Bonjour,
J'ai une table avec (par exemple) 5 colonnes, et je veux mettre dans un
combo les 3 premières colonnes. Là j'y arrive sans problème :)
Le tout se corse quand je retrouver dans mon combo les valeur de mes 3
colonnes sur base d'un filtre sur la 5ème.
Exemple :
col1 col2 col3 col4 col5
1 2 3 4 ok
2 2 3 4 x
3 2 3 4 ok
4 2 3 4 x
5 2 3 4 ok
6 2 3 4 ok
Dans mon combo, je veux retrouver uniquement les lignes ayant un x en col5.
Soit dans ce cas, les lignes 2 et 4.
J'ai essayé avec un autofiltre, mais il prend les colonnes cachés entre la
première cellule et la dernière visible.
Voici le bout de code que j'ai testé :
Private Sub UserForm_Activate()
Workbooks("book2.xls").Sheets("P1").Activate
Range("E1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=5, Criteria1:="x"
Range("A2:C3").Select
ActiveCell.Offset(rowoffset:=1, columnoffset:=0).Activate
x = ActiveCell.Address
' Descend jusqu'à la dernière ligne REMPLIE
Range(Selection, Selection.End(xlDown)).Select
'donne l'adresse du bloc trouvé
vRange = ActiveWindow.RangeSelection.Address
UserForm1.cmb1.RowSource = vRange
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
isabelle
bonjour Clicnik,
il faut que Field: si la colonne des "x" est la colonne "O"
isabelle
Bonjour,
J'ai une table avec (par exemple) 5 colonnes, et je veux mettre dans un combo les 3 premières colonnes. Là j'y arrive sans problème :) Le tout se corse quand je retrouver dans mon combo les valeur de mes 3 colonnes sur base d'un filtre sur la 5ème. Exemple : col1 col2 col3 col4 col5 1 2 3 4 ok 2 2 3 4 x 3 2 3 4 ok 4 2 3 4 x 5 2 3 4 ok 6 2 3 4 ok
Dans mon combo, je veux retrouver uniquement les lignes ayant un x en col5. Soit dans ce cas, les lignes 2 et 4.
J'ai essayé avec un autofiltre, mais il prend les colonnes cachés entre la première cellule et la dernière visible. Voici le bout de code que j'ai testé :
Private Sub UserForm_Activate() Workbooks("book2.xls").Sheets("P1").Activate Range("E1").Select Selection.AutoFilter Selection.AutoFilter Field:=5, Criteria1:="x" Range("A2:C3").Select ActiveCell.Offset(rowoffset:=1, columnoffset:=0).Activate x = ActiveCell.Address ' Descend jusqu'à la dernière ligne REMPLIE Range(Selection, Selection.End(xlDown)).Select 'donne l'adresse du bloc trouvé vRange = ActiveWindow.RangeSelection.Address UserForm1.cmb1.RowSource = vRange End Sub
bonjour Clicnik,
il faut que Field: si la colonne des "x" est la colonne "O"
isabelle
Bonjour,
J'ai une table avec (par exemple) 5 colonnes, et je veux mettre dans un
combo les 3 premières colonnes. Là j'y arrive sans problème :)
Le tout se corse quand je retrouver dans mon combo les valeur de mes 3
colonnes sur base d'un filtre sur la 5ème.
Exemple :
col1 col2 col3 col4 col5
1 2 3 4 ok
2 2 3 4 x
3 2 3 4 ok
4 2 3 4 x
5 2 3 4 ok
6 2 3 4 ok
Dans mon combo, je veux retrouver uniquement les lignes ayant un x en col5.
Soit dans ce cas, les lignes 2 et 4.
J'ai essayé avec un autofiltre, mais il prend les colonnes cachés entre la
première cellule et la dernière visible.
Voici le bout de code que j'ai testé :
Private Sub UserForm_Activate()
Workbooks("book2.xls").Sheets("P1").Activate
Range("E1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=5, Criteria1:="x"
Range("A2:C3").Select
ActiveCell.Offset(rowoffset:=1, columnoffset:=0).Activate
x = ActiveCell.Address
' Descend jusqu'à la dernière ligne REMPLIE
Range(Selection, Selection.End(xlDown)).Select
'donne l'adresse du bloc trouvé
vRange = ActiveWindow.RangeSelection.Address
UserForm1.cmb1.RowSource = vRange
End Sub
il faut que Field: si la colonne des "x" est la colonne "O"
isabelle
Bonjour,
J'ai une table avec (par exemple) 5 colonnes, et je veux mettre dans un combo les 3 premières colonnes. Là j'y arrive sans problème :) Le tout se corse quand je retrouver dans mon combo les valeur de mes 3 colonnes sur base d'un filtre sur la 5ème. Exemple : col1 col2 col3 col4 col5 1 2 3 4 ok 2 2 3 4 x 3 2 3 4 ok 4 2 3 4 x 5 2 3 4 ok 6 2 3 4 ok
Dans mon combo, je veux retrouver uniquement les lignes ayant un x en col5. Soit dans ce cas, les lignes 2 et 4.
J'ai essayé avec un autofiltre, mais il prend les colonnes cachés entre la première cellule et la dernière visible. Voici le bout de code que j'ai testé :
Private Sub UserForm_Activate() Workbooks("book2.xls").Sheets("P1").Activate Range("E1").Select Selection.AutoFilter Selection.AutoFilter Field:=5, Criteria1:="x" Range("A2:C3").Select ActiveCell.Offset(rowoffset:=1, columnoffset:=0).Activate x = ActiveCell.Address ' Descend jusqu'à la dernière ligne REMPLIE Range(Selection, Selection.End(xlDown)).Select 'donne l'adresse du bloc trouvé vRange = ActiveWindow.RangeSelection.Address UserForm1.cmb1.RowSource = vRange End Sub
JB
Bonjour,
http://cjoint.com/?jCtMPyxOfQ
Private Sub UserForm_Initialize() Dim temp() ReDim temp(1 To 3, 1 To 1) j = 0 For i = 1 To [liste].Rows.Count If Range("liste")(i, 5) = "x" Then j = j + 1 ReDim Preserve temp(1 To 3, 1 To j) temp(1, j) = Range("liste")(i, 1) temp(2, j) = Range("liste")(i, 2) temp(3, j) = Range("liste")(i, 3) End If Next i ComboBox1.List = Application.Transpose(temp) End Sub
Cordialement JB
Bonjour,
J'ai une table avec (par exemple) 5 colonnes, et je veux mettre dans un combo les 3 premières colonnes. Là j'y arrive sans problème :) Le tout se corse quand je retrouver dans mon combo les valeur de mes 3 colonnes sur base d'un filtre sur la 5ème. Exemple : col1 col2 col3 col4 col5 1 2 3 4 ok 2 2 3 4 x 3 2 3 4 ok 4 2 3 4 x 5 2 3 4 ok 6 2 3 4 ok
Dans mon combo, je veux retrouver uniquement les lignes ayant un x en col 5. Soit dans ce cas, les lignes 2 et 4.
J'ai essayé avec un autofiltre, mais il prend les colonnes cachés ent re la première cellule et la dernière visible. Voici le bout de code que j'ai testé :
Private Sub UserForm_Activate() Workbooks("book2.xls").Sheets("P1").Activate Range("E1").Select Selection.AutoFilter Selection.AutoFilter Field:=5, Criteria1:="x" Range("A2:C3").Select ActiveCell.Offset(rowoffset:=1, columnoffset:=0).Activate x = ActiveCell.Address ' Descend jusqu'à la dernière ligne REMPLIE Range(Selection, Selection.End(xlDown)).Select 'donne l'adresse du bloc trouvé vRange = ActiveWindow.RangeSelection.Address UserForm1.cmb1.RowSource = vRange End Sub
Bonjour,
http://cjoint.com/?jCtMPyxOfQ
Private Sub UserForm_Initialize()
Dim temp()
ReDim temp(1 To 3, 1 To 1)
j = 0
For i = 1 To [liste].Rows.Count
If Range("liste")(i, 5) = "x" Then
j = j + 1
ReDim Preserve temp(1 To 3, 1 To j)
temp(1, j) = Range("liste")(i, 1)
temp(2, j) = Range("liste")(i, 2)
temp(3, j) = Range("liste")(i, 3)
End If
Next i
ComboBox1.List = Application.Transpose(temp)
End Sub
Cordialement JB
Bonjour,
J'ai une table avec (par exemple) 5 colonnes, et je veux mettre dans un
combo les 3 premières colonnes. Là j'y arrive sans problème :)
Le tout se corse quand je retrouver dans mon combo les valeur de mes 3
colonnes sur base d'un filtre sur la 5ème.
Exemple :
col1 col2 col3 col4 col5
1 2 3 4 ok
2 2 3 4 x
3 2 3 4 ok
4 2 3 4 x
5 2 3 4 ok
6 2 3 4 ok
Dans mon combo, je veux retrouver uniquement les lignes ayant un x en col 5.
Soit dans ce cas, les lignes 2 et 4.
J'ai essayé avec un autofiltre, mais il prend les colonnes cachés ent re la
première cellule et la dernière visible.
Voici le bout de code que j'ai testé :
Private Sub UserForm_Activate()
Workbooks("book2.xls").Sheets("P1").Activate
Range("E1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=5, Criteria1:="x"
Range("A2:C3").Select
ActiveCell.Offset(rowoffset:=1, columnoffset:=0).Activate
x = ActiveCell.Address
' Descend jusqu'à la dernière ligne REMPLIE
Range(Selection, Selection.End(xlDown)).Select
'donne l'adresse du bloc trouvé
vRange = ActiveWindow.RangeSelection.Address
UserForm1.cmb1.RowSource = vRange
End Sub
Private Sub UserForm_Initialize() Dim temp() ReDim temp(1 To 3, 1 To 1) j = 0 For i = 1 To [liste].Rows.Count If Range("liste")(i, 5) = "x" Then j = j + 1 ReDim Preserve temp(1 To 3, 1 To j) temp(1, j) = Range("liste")(i, 1) temp(2, j) = Range("liste")(i, 2) temp(3, j) = Range("liste")(i, 3) End If Next i ComboBox1.List = Application.Transpose(temp) End Sub
Cordialement JB
Bonjour,
J'ai une table avec (par exemple) 5 colonnes, et je veux mettre dans un combo les 3 premières colonnes. Là j'y arrive sans problème :) Le tout se corse quand je retrouver dans mon combo les valeur de mes 3 colonnes sur base d'un filtre sur la 5ème. Exemple : col1 col2 col3 col4 col5 1 2 3 4 ok 2 2 3 4 x 3 2 3 4 ok 4 2 3 4 x 5 2 3 4 ok 6 2 3 4 ok
Dans mon combo, je veux retrouver uniquement les lignes ayant un x en col 5. Soit dans ce cas, les lignes 2 et 4.
J'ai essayé avec un autofiltre, mais il prend les colonnes cachés ent re la première cellule et la dernière visible. Voici le bout de code que j'ai testé :
Private Sub UserForm_Activate() Workbooks("book2.xls").Sheets("P1").Activate Range("E1").Select Selection.AutoFilter Selection.AutoFilter Field:=5, Criteria1:="x" Range("A2:C3").Select ActiveCell.Offset(rowoffset:=1, columnoffset:=0).Activate x = ActiveCell.Address ' Descend jusqu'à la dernière ligne REMPLIE Range(Selection, Selection.End(xlDown)).Select 'donne l'adresse du bloc trouvé vRange = ActiveWindow.RangeSelection.Address UserForm1.cmb1.RowSource = vRange End Sub
Clicnik
Merci beaucoup pour ce code qui est pratiquement la solution demandée ;)
Je dis pratiquement car je n'arrive pas à l'intégrer dans mon form d'origine. Il me dit à chaque "Run-time error '424' : object required".
Le problème vient peut-être du fait que j'ai 6 sheets dans mon fichier et que je dois aller chercher les infos sur la deuxième, qui s'appelle "Connu". J'ai donc glisser la ligne suivante " Workbooks("test_5.xls").Sheets("Connu").Activate " en haut du code.
Ma colonne contenant les X est la colonne CD, soit la 82 ème position (ce qui devient : If Range("liste")(i, 82) = "x" Then)
En faisant tourner le prgogramme pas à pas, j'obtiens l'erreur sur la ligne de code suivante " For i = 1 To [liste].Rows.Count "
Pensez-vous pouvoir m'aider avec les renseignements que je vous ai fourni ?
Merci de votre aide.
Bonjour,
http://cjoint.com/?jCtMPyxOfQ
Private Sub UserForm_Initialize() Dim temp() ReDim temp(1 To 3, 1 To 1) j = 0 For i = 1 To [liste].Rows.Count If Range("liste")(i, 5) = "x" Then j = j + 1 ReDim Preserve temp(1 To 3, 1 To j) temp(1, j) = Range("liste")(i, 1) temp(2, j) = Range("liste")(i, 2) temp(3, j) = Range("liste")(i, 3) End If Next i ComboBox1.List = Application.Transpose(temp) End Sub
Cordialement JB
Bonjour,
J'ai une table avec (par exemple) 5 colonnes, et je veux mettre dans un combo les 3 premières colonnes. Là j'y arrive sans problème :) Le tout se corse quand je retrouver dans mon combo les valeur de mes 3 colonnes sur base d'un filtre sur la 5ème. Exemple : col1 col2 col3 col4 col5 1 2 3 4 ok 2 2 3 4 x 3 2 3 4 ok 4 2 3 4 x 5 2 3 4 ok 6 2 3 4 ok
Dans mon combo, je veux retrouver uniquement les lignes ayant un x en col5. Soit dans ce cas, les lignes 2 et 4.
J'ai essayé avec un autofiltre, mais il prend les colonnes cachés entre la première cellule et la dernière visible. Voici le bout de code que j'ai testé :
Private Sub UserForm_Activate() Workbooks("book2.xls").Sheets("P1").Activate Range("E1").Select Selection.AutoFilter Selection.AutoFilter Field:=5, Criteria1:="x" Range("A2:C3").Select ActiveCell.Offset(rowoffset:=1, columnoffset:=0).Activate x = ActiveCell.Address ' Descend jusqu'à la dernière ligne REMPLIE Range(Selection, Selection.End(xlDown)).Select 'donne l'adresse du bloc trouvé vRange = ActiveWindow.RangeSelection.Address UserForm1.cmb1.RowSource = vRange End Sub
Merci beaucoup pour ce code qui est pratiquement la solution demandée ;)
Je dis pratiquement car je n'arrive pas à l'intégrer dans mon form
d'origine. Il me dit à chaque "Run-time error '424' : object required".
Le problème vient peut-être du fait que j'ai 6 sheets dans mon fichier et
que je dois aller chercher les infos sur la deuxième, qui s'appelle "Connu".
J'ai donc glisser la ligne suivante "
Workbooks("test_5.xls").Sheets("Connu").Activate " en haut du code.
Ma colonne contenant les X est la colonne CD, soit la 82 ème position (ce
qui devient : If Range("liste")(i, 82) = "x" Then)
En faisant tourner le prgogramme pas à pas, j'obtiens l'erreur sur la ligne
de code suivante " For i = 1 To [liste].Rows.Count "
Pensez-vous pouvoir m'aider avec les renseignements que je vous ai fourni ?
Merci de votre aide.
Bonjour,
http://cjoint.com/?jCtMPyxOfQ
Private Sub UserForm_Initialize()
Dim temp()
ReDim temp(1 To 3, 1 To 1)
j = 0
For i = 1 To [liste].Rows.Count
If Range("liste")(i, 5) = "x" Then
j = j + 1
ReDim Preserve temp(1 To 3, 1 To j)
temp(1, j) = Range("liste")(i, 1)
temp(2, j) = Range("liste")(i, 2)
temp(3, j) = Range("liste")(i, 3)
End If
Next i
ComboBox1.List = Application.Transpose(temp)
End Sub
Cordialement JB
Bonjour,
J'ai une table avec (par exemple) 5 colonnes, et je veux mettre dans un
combo les 3 premières colonnes. Là j'y arrive sans problème :)
Le tout se corse quand je retrouver dans mon combo les valeur de mes 3
colonnes sur base d'un filtre sur la 5ème.
Exemple :
col1 col2 col3 col4 col5
1 2 3 4 ok
2 2 3 4 x
3 2 3 4 ok
4 2 3 4 x
5 2 3 4 ok
6 2 3 4 ok
Dans mon combo, je veux retrouver uniquement les lignes ayant un x en col5.
Soit dans ce cas, les lignes 2 et 4.
J'ai essayé avec un autofiltre, mais il prend les colonnes cachés entre la
première cellule et la dernière visible.
Voici le bout de code que j'ai testé :
Private Sub UserForm_Activate()
Workbooks("book2.xls").Sheets("P1").Activate
Range("E1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=5, Criteria1:="x"
Range("A2:C3").Select
ActiveCell.Offset(rowoffset:=1, columnoffset:=0).Activate
x = ActiveCell.Address
' Descend jusqu'à la dernière ligne REMPLIE
Range(Selection, Selection.End(xlDown)).Select
'donne l'adresse du bloc trouvé
vRange = ActiveWindow.RangeSelection.Address
UserForm1.cmb1.RowSource = vRange
End Sub
Merci beaucoup pour ce code qui est pratiquement la solution demandée ;)
Je dis pratiquement car je n'arrive pas à l'intégrer dans mon form d'origine. Il me dit à chaque "Run-time error '424' : object required".
Le problème vient peut-être du fait que j'ai 6 sheets dans mon fichier et que je dois aller chercher les infos sur la deuxième, qui s'appelle "Connu". J'ai donc glisser la ligne suivante " Workbooks("test_5.xls").Sheets("Connu").Activate " en haut du code.
Ma colonne contenant les X est la colonne CD, soit la 82 ème position (ce qui devient : If Range("liste")(i, 82) = "x" Then)
En faisant tourner le prgogramme pas à pas, j'obtiens l'erreur sur la ligne de code suivante " For i = 1 To [liste].Rows.Count "
Pensez-vous pouvoir m'aider avec les renseignements que je vous ai fourni ?
Merci de votre aide.
Bonjour,
http://cjoint.com/?jCtMPyxOfQ
Private Sub UserForm_Initialize() Dim temp() ReDim temp(1 To 3, 1 To 1) j = 0 For i = 1 To [liste].Rows.Count If Range("liste")(i, 5) = "x" Then j = j + 1 ReDim Preserve temp(1 To 3, 1 To j) temp(1, j) = Range("liste")(i, 1) temp(2, j) = Range("liste")(i, 2) temp(3, j) = Range("liste")(i, 3) End If Next i ComboBox1.List = Application.Transpose(temp) End Sub
Cordialement JB
Bonjour,
J'ai une table avec (par exemple) 5 colonnes, et je veux mettre dans un combo les 3 premières colonnes. Là j'y arrive sans problème :) Le tout se corse quand je retrouver dans mon combo les valeur de mes 3 colonnes sur base d'un filtre sur la 5ème. Exemple : col1 col2 col3 col4 col5 1 2 3 4 ok 2 2 3 4 x 3 2 3 4 ok 4 2 3 4 x 5 2 3 4 ok 6 2 3 4 ok
Dans mon combo, je veux retrouver uniquement les lignes ayant un x en col5. Soit dans ce cas, les lignes 2 et 4.
J'ai essayé avec un autofiltre, mais il prend les colonnes cachés entre la première cellule et la dernière visible. Voici le bout de code que j'ai testé :
Private Sub UserForm_Activate() Workbooks("book2.xls").Sheets("P1").Activate Range("E1").Select Selection.AutoFilter Selection.AutoFilter Field:=5, Criteria1:="x" Range("A2:C3").Select ActiveCell.Offset(rowoffset:=1, columnoffset:=0).Activate x = ActiveCell.Address ' Descend jusqu'à la dernière ligne REMPLIE Range(Selection, Selection.End(xlDown)).Select 'donne l'adresse du bloc trouvé vRange = ActiveWindow.RangeSelection.Address UserForm1.cmb1.RowSource = vRange End Sub
JB
Le nom de champ étant connu dans tout le classeur, il n'est pas nécessaire de modifier la feuille active. Envoyez votre fichier
JB
Merci beaucoup pour ce code qui est pratiquement la solution demandée ;)
Je dis pratiquement car je n'arrive pas à l'intégrer dans mon form d'origine. Il me dit à chaque "Run-time error '424' : object required".
Le problème vient peut-être du fait que j'ai 6 sheets dans mon fichie r et que je dois aller chercher les infos sur la deuxième, qui s'appelle "Co nnu". J'ai donc glisser la ligne suivante " Workbooks("test_5.xls").Sheets("Connu").Activate " en haut du code.
Ma colonne contenant les X est la colonne CD, soit la 82 ème position ( ce qui devient : If Range("liste")(i, 82) = "x" Then)
En faisant tourner le prgogramme pas à pas, j'obtiens l'erreur sur la l igne de code suivante " For i = 1 To [liste].Rows.Count "
Pensez-vous pouvoir m'aider avec les renseignements que je vous ai fourni ?
Merci de votre aide.
Bonjour,
http://cjoint.com/?jCtMPyxOfQ
Private Sub UserForm_Initialize() Dim temp() ReDim temp(1 To 3, 1 To 1) j = 0 For i = 1 To [liste].Rows.Count If Range("liste")(i, 5) = "x" Then j = j + 1 ReDim Preserve temp(1 To 3, 1 To j) temp(1, j) = Range("liste")(i, 1) temp(2, j) = Range("liste")(i, 2) temp(3, j) = Range("liste")(i, 3) End If Next i ComboBox1.List = Application.Transpose(temp) End Sub
Cordialement JB
Bonjour,
J'ai une table avec (par exemple) 5 colonnes, et je veux mettre dans un combo les 3 premières colonnes. Là j'y arrive sans problème :) Le tout se corse quand je retrouver dans mon combo les valeur de mes 3 colonnes sur base d'un filtre sur la 5ème. Exemple : col1 col2 col3 col4 col5 1 2 3 4 ok 2 2 3 4 x 3 2 3 4 ok 4 2 3 4 x 5 2 3 4 ok 6 2 3 4 ok
Dans mon combo, je veux retrouver uniquement les lignes ayant un x en col5. Soit dans ce cas, les lignes 2 et 4.
J'ai essayé avec un autofiltre, mais il prend les colonnes cachés entre la première cellule et la dernière visible. Voici le bout de code que j'ai testé :
Private Sub UserForm_Activate() Workbooks("book2.xls").Sheets("P1").Activate Range("E1").Select Selection.AutoFilter Selection.AutoFilter Field:=5, Criteria1:="x" Range("A2:C3").Select ActiveCell.Offset(rowoffset:=1, columnoffset:=0).Activate x = ActiveCell.Address ' Descend jusqu'à la dernière ligne REMPLIE Range(Selection, Selection.End(xlDown)).Select 'donne l'adresse du bloc trouvé vRange = ActiveWindow.RangeSelection.Address UserForm1.cmb1.RowSource = vRange End Sub
Le nom de champ étant connu dans tout le classeur, il n'est pas
nécessaire de modifier la feuille active.
Envoyez votre fichier
JB
Merci beaucoup pour ce code qui est pratiquement la solution demandée ;)
Je dis pratiquement car je n'arrive pas à l'intégrer dans mon form
d'origine. Il me dit à chaque "Run-time error '424' : object required".
Le problème vient peut-être du fait que j'ai 6 sheets dans mon fichie r et
que je dois aller chercher les infos sur la deuxième, qui s'appelle "Co nnu".
J'ai donc glisser la ligne suivante "
Workbooks("test_5.xls").Sheets("Connu").Activate " en haut du code.
Ma colonne contenant les X est la colonne CD, soit la 82 ème position ( ce
qui devient : If Range("liste")(i, 82) = "x" Then)
En faisant tourner le prgogramme pas à pas, j'obtiens l'erreur sur la l igne
de code suivante " For i = 1 To [liste].Rows.Count "
Pensez-vous pouvoir m'aider avec les renseignements que je vous ai fourni ?
Merci de votre aide.
Bonjour,
http://cjoint.com/?jCtMPyxOfQ
Private Sub UserForm_Initialize()
Dim temp()
ReDim temp(1 To 3, 1 To 1)
j = 0
For i = 1 To [liste].Rows.Count
If Range("liste")(i, 5) = "x" Then
j = j + 1
ReDim Preserve temp(1 To 3, 1 To j)
temp(1, j) = Range("liste")(i, 1)
temp(2, j) = Range("liste")(i, 2)
temp(3, j) = Range("liste")(i, 3)
End If
Next i
ComboBox1.List = Application.Transpose(temp)
End Sub
Cordialement JB
Bonjour,
J'ai une table avec (par exemple) 5 colonnes, et je veux mettre dans un
combo les 3 premières colonnes. Là j'y arrive sans problème :)
Le tout se corse quand je retrouver dans mon combo les valeur de mes 3
colonnes sur base d'un filtre sur la 5ème.
Exemple :
col1 col2 col3 col4 col5
1 2 3 4 ok
2 2 3 4 x
3 2 3 4 ok
4 2 3 4 x
5 2 3 4 ok
6 2 3 4 ok
Dans mon combo, je veux retrouver uniquement les lignes ayant un x en col5.
Soit dans ce cas, les lignes 2 et 4.
J'ai essayé avec un autofiltre, mais il prend les colonnes cachés entre la
première cellule et la dernière visible.
Voici le bout de code que j'ai testé :
Private Sub UserForm_Activate()
Workbooks("book2.xls").Sheets("P1").Activate
Range("E1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=5, Criteria1:="x"
Range("A2:C3").Select
ActiveCell.Offset(rowoffset:=1, columnoffset:=0).Activate
x = ActiveCell.Address
' Descend jusqu'à la dernière ligne REMPLIE
Range(Selection, Selection.End(xlDown)).Select
'donne l'adresse du bloc trouvé
vRange = ActiveWindow.RangeSelection.Address
UserForm1.cmb1.RowSource = vRange
End Sub
Le nom de champ étant connu dans tout le classeur, il n'est pas nécessaire de modifier la feuille active. Envoyez votre fichier
JB
Merci beaucoup pour ce code qui est pratiquement la solution demandée ;)
Je dis pratiquement car je n'arrive pas à l'intégrer dans mon form d'origine. Il me dit à chaque "Run-time error '424' : object required".
Le problème vient peut-être du fait que j'ai 6 sheets dans mon fichie r et que je dois aller chercher les infos sur la deuxième, qui s'appelle "Co nnu". J'ai donc glisser la ligne suivante " Workbooks("test_5.xls").Sheets("Connu").Activate " en haut du code.
Ma colonne contenant les X est la colonne CD, soit la 82 ème position ( ce qui devient : If Range("liste")(i, 82) = "x" Then)
En faisant tourner le prgogramme pas à pas, j'obtiens l'erreur sur la l igne de code suivante " For i = 1 To [liste].Rows.Count "
Pensez-vous pouvoir m'aider avec les renseignements que je vous ai fourni ?
Merci de votre aide.
Bonjour,
http://cjoint.com/?jCtMPyxOfQ
Private Sub UserForm_Initialize() Dim temp() ReDim temp(1 To 3, 1 To 1) j = 0 For i = 1 To [liste].Rows.Count If Range("liste")(i, 5) = "x" Then j = j + 1 ReDim Preserve temp(1 To 3, 1 To j) temp(1, j) = Range("liste")(i, 1) temp(2, j) = Range("liste")(i, 2) temp(3, j) = Range("liste")(i, 3) End If Next i ComboBox1.List = Application.Transpose(temp) End Sub
Cordialement JB
Bonjour,
J'ai une table avec (par exemple) 5 colonnes, et je veux mettre dans un combo les 3 premières colonnes. Là j'y arrive sans problème :) Le tout se corse quand je retrouver dans mon combo les valeur de mes 3 colonnes sur base d'un filtre sur la 5ème. Exemple : col1 col2 col3 col4 col5 1 2 3 4 ok 2 2 3 4 x 3 2 3 4 ok 4 2 3 4 x 5 2 3 4 ok 6 2 3 4 ok
Dans mon combo, je veux retrouver uniquement les lignes ayant un x en col5. Soit dans ce cas, les lignes 2 et 4.
J'ai essayé avec un autofiltre, mais il prend les colonnes cachés entre la première cellule et la dernière visible. Voici le bout de code que j'ai testé :
Private Sub UserForm_Activate() Workbooks("book2.xls").Sheets("P1").Activate Range("E1").Select Selection.AutoFilter Selection.AutoFilter Field:=5, Criteria1:="x" Range("A2:C3").Select ActiveCell.Offset(rowoffset:=1, columnoffset:=0).Activate x = ActiveCell.Address ' Descend jusqu'à la dernière ligne REMPLIE Range(Selection, Selection.End(xlDown)).Select 'donne l'adresse du bloc trouvé vRange = ActiveWindow.RangeSelection.Address UserForm1.cmb1.RowSource = vRange End Sub