Bonjour à tous,
Dans un formulaire j'ai un contrôle ComboBox :
Comment faire référence à la plage A1:C12 (par exemple) du classeur
Truc.xls
situé dans le dossier Machin. pour alimenter la liste ?
A chaque fois que j'essaie de rentrer un truc du genre
C:MachinTruc.xls!Feuil1!A1:C12, je me "fais jeter".
L'aide Microsoft précise :
la propriété RowSource accepte des plages de feuilles de travail de
Microsoft Excel.
Mais ne donne aucun exemple de syntaxe.
Merci d'avance aux spécialistes du VBA sous Word
jero
Bonjour à tous,
Dans un formulaire j'ai un contrôle ComboBox :
Comment faire référence à la plage A1:C12 (par exemple) du classeur
Truc.xls
situé dans le dossier Machin. pour alimenter la liste ?
A chaque fois que j'essaie de rentrer un truc du genre
C:MachinTruc.xls!Feuil1!A1:C12, je me "fais jeter".
L'aide Microsoft précise :
la propriété RowSource accepte des plages de feuilles de travail de
Microsoft Excel.
Mais ne donne aucun exemple de syntaxe.
Merci d'avance aux spécialistes du VBA sous Word
jero
Bonjour à tous,
Dans un formulaire j'ai un contrôle ComboBox :
Comment faire référence à la plage A1:C12 (par exemple) du classeur
Truc.xls
situé dans le dossier Machin. pour alimenter la liste ?
A chaque fois que j'essaie de rentrer un truc du genre
C:MachinTruc.xls!Feuil1!A1:C12, je me "fais jeter".
L'aide Microsoft précise :
la propriété RowSource accepte des plages de feuilles de travail de
Microsoft Excel.
Mais ne donne aucun exemple de syntaxe.
Merci d'avance aux spécialistes du VBA sous Word
jero
Bonsoir Jero,
Voici un exemple avec un "ListBox"
L'exemple utilise une plage nommée en Excel donc dans cet exemple
définit dans excel pnMaPlage pour la feuil1 "A1:C12" ou "A2:C12" si tu as
un
titre.
Si tu n'as pas de titre mets .ColumnHeads = False (ou supprime la ligne
simplement)
Attention NbCol doit valoir le nombre exact de colonne (pas eu le temps
de tester la correction automatique par rapport à la plage nommée.
Philippe
++++++++++++++++++++++++++++++++++++++++++++++++++++
Private Sub UserForm_Initialize()
Chemin = "C:MachinTruc.xls"
LaPlage = "pnMaPlage"
Set xls = Nothing
Set xls = New Excel.Application
Set Classeur = xls.Workbooks.Open(Chemin)
Dim Col As Integer, count As Integer, NbCol, x As Integer
NbColPlage = UBound(Names(LaPlage).RefersToRange.Value, 2)
NbCol = 3 ' Définit le nombre de colonnes dans la plage
ReDim MyArray(Range(LaPlage).count / NbCol, NbCol)
With ListBox1
.ColumnHeads = True ' Si pas de titre = False
.ColumnCount = NbCol
End With
For Each L In Range(LaPlage)
x = x + 1
If (x Mod NbCol) = 0 Then Col = NbCol - 1 Else Col = (x Mod NbCol) - 1
MyArray(count, Col) = L
If (x Mod NbCol) = 0 Then count = count + 1
Next
ListBox1.List() = MyArray
End Sub
Private Sub UserForm_Terminate()
Termine
End Sub
Sub Termine()
xls.DisplayAlerts = False
xls.Quit
Set xls = Nothing
Me.Hide
End Sub
"Jero" <~ a écrit dans le message de
news:Bonjour à tous,
Dans un formulaire j'ai un contrôle ComboBox :
Comment faire référence à la plage A1:C12 (par exemple) du classeur
Truc.xlssitué dans le dossier Machin. pour alimenter la liste ?
A chaque fois que j'essaie de rentrer un truc du genre
C:MachinTruc.xls!Feuil1!A1:C12, je me "fais jeter".
L'aide Microsoft précise :
la propriété RowSource accepte des plages de feuilles de travail de
Microsoft Excel.
Mais ne donne aucun exemple de syntaxe.
Merci d'avance aux spécialistes du VBA sous Word
jero
Bonsoir Jero,
Voici un exemple avec un "ListBox"
L'exemple utilise une plage nommée en Excel donc dans cet exemple
définit dans excel pnMaPlage pour la feuil1 "A1:C12" ou "A2:C12" si tu as
un
titre.
Si tu n'as pas de titre mets .ColumnHeads = False (ou supprime la ligne
simplement)
Attention NbCol doit valoir le nombre exact de colonne (pas eu le temps
de tester la correction automatique par rapport à la plage nommée.
Philippe
++++++++++++++++++++++++++++++++++++++++++++++++++++
Private Sub UserForm_Initialize()
Chemin = "C:MachinTruc.xls"
LaPlage = "pnMaPlage"
Set xls = Nothing
Set xls = New Excel.Application
Set Classeur = xls.Workbooks.Open(Chemin)
Dim Col As Integer, count As Integer, NbCol, x As Integer
NbColPlage = UBound(Names(LaPlage).RefersToRange.Value, 2)
NbCol = 3 ' Définit le nombre de colonnes dans la plage
ReDim MyArray(Range(LaPlage).count / NbCol, NbCol)
With ListBox1
.ColumnHeads = True ' Si pas de titre = False
.ColumnCount = NbCol
End With
For Each L In Range(LaPlage)
x = x + 1
If (x Mod NbCol) = 0 Then Col = NbCol - 1 Else Col = (x Mod NbCol) - 1
MyArray(count, Col) = L
If (x Mod NbCol) = 0 Then count = count + 1
Next
ListBox1.List() = MyArray
End Sub
Private Sub UserForm_Terminate()
Termine
End Sub
Sub Termine()
xls.DisplayAlerts = False
xls.Quit
Set xls = Nothing
Me.Hide
End Sub
"Jero" <~jean-pierre.geraudel@ac-nantes.fr> a écrit dans le message de
news:Oet6MOYzEHA.3656@TK2MSFTNGP09.phx.gbl...
Bonjour à tous,
Dans un formulaire j'ai un contrôle ComboBox :
Comment faire référence à la plage A1:C12 (par exemple) du classeur
Truc.xls
situé dans le dossier Machin. pour alimenter la liste ?
A chaque fois que j'essaie de rentrer un truc du genre
C:MachinTruc.xls!Feuil1!A1:C12, je me "fais jeter".
L'aide Microsoft précise :
la propriété RowSource accepte des plages de feuilles de travail de
Microsoft Excel.
Mais ne donne aucun exemple de syntaxe.
Merci d'avance aux spécialistes du VBA sous Word
jero
Bonsoir Jero,
Voici un exemple avec un "ListBox"
L'exemple utilise une plage nommée en Excel donc dans cet exemple
définit dans excel pnMaPlage pour la feuil1 "A1:C12" ou "A2:C12" si tu as
un
titre.
Si tu n'as pas de titre mets .ColumnHeads = False (ou supprime la ligne
simplement)
Attention NbCol doit valoir le nombre exact de colonne (pas eu le temps
de tester la correction automatique par rapport à la plage nommée.
Philippe
++++++++++++++++++++++++++++++++++++++++++++++++++++
Private Sub UserForm_Initialize()
Chemin = "C:MachinTruc.xls"
LaPlage = "pnMaPlage"
Set xls = Nothing
Set xls = New Excel.Application
Set Classeur = xls.Workbooks.Open(Chemin)
Dim Col As Integer, count As Integer, NbCol, x As Integer
NbColPlage = UBound(Names(LaPlage).RefersToRange.Value, 2)
NbCol = 3 ' Définit le nombre de colonnes dans la plage
ReDim MyArray(Range(LaPlage).count / NbCol, NbCol)
With ListBox1
.ColumnHeads = True ' Si pas de titre = False
.ColumnCount = NbCol
End With
For Each L In Range(LaPlage)
x = x + 1
If (x Mod NbCol) = 0 Then Col = NbCol - 1 Else Col = (x Mod NbCol) - 1
MyArray(count, Col) = L
If (x Mod NbCol) = 0 Then count = count + 1
Next
ListBox1.List() = MyArray
End Sub
Private Sub UserForm_Terminate()
Termine
End Sub
Sub Termine()
xls.DisplayAlerts = False
xls.Quit
Set xls = Nothing
Me.Hide
End Sub
"Jero" <~ a écrit dans le message de
news:Bonjour à tous,
Dans un formulaire j'ai un contrôle ComboBox :
Comment faire référence à la plage A1:C12 (par exemple) du classeur
Truc.xlssitué dans le dossier Machin. pour alimenter la liste ?
A chaque fois que j'essaie de rentrer un truc du genre
C:MachinTruc.xls!Feuil1!A1:C12, je me "fais jeter".
L'aide Microsoft précise :
la propriété RowSource accepte des plages de feuilles de travail de
Microsoft Excel.
Mais ne donne aucun exemple de syntaxe.
Merci d'avance aux spécialistes du VBA sous Word
jero
Merci Philippe,
... ma question était un peu différente...
Je crée une ComboBox et dans la propriété RowSource comment je fais
( on
fait) pour faire référence à une plage de cellules d'Excel... sans
passer
par le code que tu m'as gentiment fourni.
a+
Jero
"Corona" <Philippe Tulliez> a écrit dans le message de news:
%Bonsoir Jero,
Voici un exemple avec un "ListBox"
L'exemple utilise une plage nommée en Excel donc dans cet
exemple
définit dans excel pnMaPlage pour la feuil1 "A1:C12" ou "A2:C12"
si tu as
un
titre.
Si tu n'as pas de titre mets .ColumnHeads = False (ou supprime
la ligne
simplement)
Attention NbCol doit valoir le nombre exact de colonne (pas eu
le temps
de tester la correction automatique par rapport à la plage nommée.
Philippe
++++++++++++++++++++++++++++++++++++++++++++++++++++
Private Sub UserForm_Initialize()
Chemin = "C:MachinTruc.xls"
LaPlage = "pnMaPlage"
Set xls = Nothing
Set xls = New Excel.Application
Set Classeur = xls.Workbooks.Open(Chemin)
Dim Col As Integer, count As Integer, NbCol, x As Integer
NbColPlage = UBound(Names(LaPlage).RefersToRange.Value, 2)
NbCol = 3 ' Définit le nombre de colonnes dans la plage
ReDim MyArray(Range(LaPlage).count / NbCol, NbCol)
With ListBox1
.ColumnHeads = True ' Si pas de titre = False
.ColumnCount = NbCol
End With
For Each L In Range(LaPlage)
x = x + 1
If (x Mod NbCol) = 0 Then Col = NbCol - 1 Else Col = (x Mod
NbCol) - 1
MyArray(count, Col) = L
If (x Mod NbCol) = 0 Then count = count + 1
Next
ListBox1.List() = MyArray
End Sub
Private Sub UserForm_Terminate()
Termine
End Sub
Sub Termine()
xls.DisplayAlerts = False
xls.Quit
Set xls = Nothing
Me.Hide
End Sub
"Jero" <~ a écrit dans le
message de
news:Bonjour à tous,
Dans un formulaire j'ai un contrôle ComboBox :
Comment faire référence à la plage A1:C12 (par exemple) du
classeur
Truc.xlssitué dans le dossier Machin. pour alimenter la liste ?
A chaque fois que j'essaie de rentrer un truc du genre
C:MachinTruc.xls!Feuil1!A1:C12, je me "fais jeter".
L'aide Microsoft précise :
la propriété RowSource accepte des plages de feuilles de travail
de
Microsoft Excel.
Mais ne donne aucun exemple de syntaxe.
Merci d'avance aux spécialistes du VBA sous Word
jero
Merci Philippe,
... ma question était un peu différente...
Je crée une ComboBox et dans la propriété RowSource comment je fais
( on
fait) pour faire référence à une plage de cellules d'Excel... sans
passer
par le code que tu m'as gentiment fourni.
a+
Jero
"Corona" <Philippe Tulliez> a écrit dans le message de news:
%23rJcefYzEHA.3656@TK2MSFTNGP09.phx.gbl...
Bonsoir Jero,
Voici un exemple avec un "ListBox"
L'exemple utilise une plage nommée en Excel donc dans cet
exemple
définit dans excel pnMaPlage pour la feuil1 "A1:C12" ou "A2:C12"
si tu as
un
titre.
Si tu n'as pas de titre mets .ColumnHeads = False (ou supprime
la ligne
simplement)
Attention NbCol doit valoir le nombre exact de colonne (pas eu
le temps
de tester la correction automatique par rapport à la plage nommée.
Philippe
++++++++++++++++++++++++++++++++++++++++++++++++++++
Private Sub UserForm_Initialize()
Chemin = "C:MachinTruc.xls"
LaPlage = "pnMaPlage"
Set xls = Nothing
Set xls = New Excel.Application
Set Classeur = xls.Workbooks.Open(Chemin)
Dim Col As Integer, count As Integer, NbCol, x As Integer
NbColPlage = UBound(Names(LaPlage).RefersToRange.Value, 2)
NbCol = 3 ' Définit le nombre de colonnes dans la plage
ReDim MyArray(Range(LaPlage).count / NbCol, NbCol)
With ListBox1
.ColumnHeads = True ' Si pas de titre = False
.ColumnCount = NbCol
End With
For Each L In Range(LaPlage)
x = x + 1
If (x Mod NbCol) = 0 Then Col = NbCol - 1 Else Col = (x Mod
NbCol) - 1
MyArray(count, Col) = L
If (x Mod NbCol) = 0 Then count = count + 1
Next
ListBox1.List() = MyArray
End Sub
Private Sub UserForm_Terminate()
Termine
End Sub
Sub Termine()
xls.DisplayAlerts = False
xls.Quit
Set xls = Nothing
Me.Hide
End Sub
"Jero" <~jean-pierre.geraudel@ac-nantes.fr> a écrit dans le
message de
news:Oet6MOYzEHA.3656@TK2MSFTNGP09.phx.gbl...
Bonjour à tous,
Dans un formulaire j'ai un contrôle ComboBox :
Comment faire référence à la plage A1:C12 (par exemple) du
classeur
Truc.xls
situé dans le dossier Machin. pour alimenter la liste ?
A chaque fois que j'essaie de rentrer un truc du genre
C:MachinTruc.xls!Feuil1!A1:C12, je me "fais jeter".
L'aide Microsoft précise :
la propriété RowSource accepte des plages de feuilles de travail
de
Microsoft Excel.
Mais ne donne aucun exemple de syntaxe.
Merci d'avance aux spécialistes du VBA sous Word
jero
Merci Philippe,
... ma question était un peu différente...
Je crée une ComboBox et dans la propriété RowSource comment je fais
( on
fait) pour faire référence à une plage de cellules d'Excel... sans
passer
par le code que tu m'as gentiment fourni.
a+
Jero
"Corona" <Philippe Tulliez> a écrit dans le message de news:
%Bonsoir Jero,
Voici un exemple avec un "ListBox"
L'exemple utilise une plage nommée en Excel donc dans cet
exemple
définit dans excel pnMaPlage pour la feuil1 "A1:C12" ou "A2:C12"
si tu as
un
titre.
Si tu n'as pas de titre mets .ColumnHeads = False (ou supprime
la ligne
simplement)
Attention NbCol doit valoir le nombre exact de colonne (pas eu
le temps
de tester la correction automatique par rapport à la plage nommée.
Philippe
++++++++++++++++++++++++++++++++++++++++++++++++++++
Private Sub UserForm_Initialize()
Chemin = "C:MachinTruc.xls"
LaPlage = "pnMaPlage"
Set xls = Nothing
Set xls = New Excel.Application
Set Classeur = xls.Workbooks.Open(Chemin)
Dim Col As Integer, count As Integer, NbCol, x As Integer
NbColPlage = UBound(Names(LaPlage).RefersToRange.Value, 2)
NbCol = 3 ' Définit le nombre de colonnes dans la plage
ReDim MyArray(Range(LaPlage).count / NbCol, NbCol)
With ListBox1
.ColumnHeads = True ' Si pas de titre = False
.ColumnCount = NbCol
End With
For Each L In Range(LaPlage)
x = x + 1
If (x Mod NbCol) = 0 Then Col = NbCol - 1 Else Col = (x Mod
NbCol) - 1
MyArray(count, Col) = L
If (x Mod NbCol) = 0 Then count = count + 1
Next
ListBox1.List() = MyArray
End Sub
Private Sub UserForm_Terminate()
Termine
End Sub
Sub Termine()
xls.DisplayAlerts = False
xls.Quit
Set xls = Nothing
Me.Hide
End Sub
"Jero" <~ a écrit dans le
message de
news:Bonjour à tous,
Dans un formulaire j'ai un contrôle ComboBox :
Comment faire référence à la plage A1:C12 (par exemple) du
classeur
Truc.xlssitué dans le dossier Machin. pour alimenter la liste ?
A chaque fois que j'essaie de rentrer un truc du genre
C:MachinTruc.xls!Feuil1!A1:C12, je me "fais jeter".
L'aide Microsoft précise :
la propriété RowSource accepte des plages de feuilles de travail
de
Microsoft Excel.
Mais ne donne aucun exemple de syntaxe.
Merci d'avance aux spécialistes du VBA sous Word
jero
Merci Philippe,
... ma question était un peu différente...
Je crée une ComboBox et dans la propriété RowSource comment je fais (
on fait) pour faire référence à une plage de cellules d'Excel... sans
passer par le code que tu m'as gentiment fourni.
Merci Philippe,
... ma question était un peu différente...
Je crée une ComboBox et dans la propriété RowSource comment je fais (
on fait) pour faire référence à une plage de cellules d'Excel... sans
passer par le code que tu m'as gentiment fourni.
Merci Philippe,
... ma question était un peu différente...
Je crée une ComboBox et dans la propriété RowSource comment je fais (
on fait) pour faire référence à une plage de cellules d'Excel... sans
passer par le code que tu m'as gentiment fourni.
Et puis là, j'espère que les AMIS vont demander grâce. :-)
Et puis là, j'espère que les AMIS vont demander grâce. :-)
Et puis là, j'espère que les AMIS vont demander grâce. :-)
Bonjour,
De mémoire, la propriété RowSource d'un ComboBox ne fonctionne
"directement" que dans Excel. La procédure de Philippe permet de le
faire "indirectement" en récupérant les valeurs de la plage dans un
tableau VBA pour "alimenter" ensuite le contrôle. (En fait, ce sont
les mêmes contrôles pour toutes les applications Office, et, des fois,
l'aide vire les coins rond)
Sinon, un ensemble de routines pour "gérer" les comboboxes ou les
listboxes en passant par un fichier texte:
http://groups.google.com/groups?q=readline+combobox+OR+listbox+author:clement.marcotte%40sympatico.ca&hl=fr&lr=&selm=%23xwikTtBDHA.3144%40TK2MSFTNGP11.phx.gbl&rnum=1
ou là :
(Je pense que c'est la même chose (ou presque))
http://groups.google.com/groups?q=readline+combobox+OR+listbox+author:clement.marcotte%40sympatico.ca&hl=fr&lr=&selm=Oylp3YyvCHA.2124%40TK2MSFTNGP11&rnum=3
"Jero" <~ a écrit dans le message de
news:Merci Philippe,
... ma question était un peu différente...
Je crée une ComboBox et dans la propriété RowSource comment je fais
( onfait) pour faire référence à une plage de cellules d'Excel... sans
passerpar le code que tu m'as gentiment fourni.
a+
Jero
"Corona" <Philippe Tulliez> a écrit dans le message de news:
%Bonsoir Jero,
Voici un exemple avec un "ListBox"
L'exemple utilise une plage nommée en Excel donc dans cet
exempledéfinit dans excel pnMaPlage pour la feuil1 "A1:C12" ou "A2:C12"
si tu asun
titre.
Si tu n'as pas de titre mets .ColumnHeads = False (ou supprime
la lignesimplement)
Attention NbCol doit valoir le nombre exact de colonne (pas eu
le tempsde tester la correction automatique par rapport à la plage nommée.
Philippe
++++++++++++++++++++++++++++++++++++++++++++++++++++
Private Sub UserForm_Initialize()
Chemin = "C:MachinTruc.xls"
LaPlage = "pnMaPlage"
Set xls = Nothing
Set xls = New Excel.Application
Set Classeur = xls.Workbooks.Open(Chemin)
Dim Col As Integer, count As Integer, NbCol, x As Integer
NbColPlage = UBound(Names(LaPlage).RefersToRange.Value, 2)
NbCol = 3 ' Définit le nombre de colonnes dans la plage
ReDim MyArray(Range(LaPlage).count / NbCol, NbCol)
With ListBox1
.ColumnHeads = True ' Si pas de titre = False
.ColumnCount = NbCol
End With
For Each L In Range(LaPlage)
x = x + 1
If (x Mod NbCol) = 0 Then Col = NbCol - 1 Else Col = (x Mod
NbCol) - 1MyArray(count, Col) = L
If (x Mod NbCol) = 0 Then count = count + 1
Next
ListBox1.List() = MyArray
End Sub
Private Sub UserForm_Terminate()
Termine
End Sub
Sub Termine()
xls.DisplayAlerts = False
xls.Quit
Set xls = Nothing
Me.Hide
End Sub
"Jero" <~ a écrit dans le
message denews:Bonjour à tous,
Dans un formulaire j'ai un contrôle ComboBox :
Comment faire référence à la plage A1:C12 (par exemple) du
classeurTruc.xlssitué dans le dossier Machin. pour alimenter la liste ?
A chaque fois que j'essaie de rentrer un truc du genre
C:MachinTruc.xls!Feuil1!A1:C12, je me "fais jeter".
L'aide Microsoft précise :
la propriété RowSource accepte des plages de feuilles de travail
deMicrosoft Excel.
Mais ne donne aucun exemple de syntaxe.
Merci d'avance aux spécialistes du VBA sous Word
jero
Bonjour,
De mémoire, la propriété RowSource d'un ComboBox ne fonctionne
"directement" que dans Excel. La procédure de Philippe permet de le
faire "indirectement" en récupérant les valeurs de la plage dans un
tableau VBA pour "alimenter" ensuite le contrôle. (En fait, ce sont
les mêmes contrôles pour toutes les applications Office, et, des fois,
l'aide vire les coins rond)
Sinon, un ensemble de routines pour "gérer" les comboboxes ou les
listboxes en passant par un fichier texte:
http://groups.google.com/groups?q=readline+combobox+OR+listbox+author:clement.marcotte%40sympatico.ca&hl=fr&lr=&selm=%23xwikTtBDHA.3144%40TK2MSFTNGP11.phx.gbl&rnum=1
ou là :
(Je pense que c'est la même chose (ou presque))
http://groups.google.com/groups?q=readline+combobox+OR+listbox+author:clement.marcotte%40sympatico.ca&hl=fr&lr=&selm=Oylp3YyvCHA.2124%40TK2MSFTNGP11&rnum=3
"Jero" <~jean-pierre.geraudel@ac-nantes.fr> a écrit dans le message de
news:euAlMjYzEHA.748@TK2MSFTNGP14.phx.gbl...
Merci Philippe,
... ma question était un peu différente...
Je crée une ComboBox et dans la propriété RowSource comment je fais
( on
fait) pour faire référence à une plage de cellules d'Excel... sans
passer
par le code que tu m'as gentiment fourni.
a+
Jero
"Corona" <Philippe Tulliez> a écrit dans le message de news:
%23rJcefYzEHA.3656@TK2MSFTNGP09.phx.gbl...
Bonsoir Jero,
Voici un exemple avec un "ListBox"
L'exemple utilise une plage nommée en Excel donc dans cet
exemple
définit dans excel pnMaPlage pour la feuil1 "A1:C12" ou "A2:C12"
si tu as
un
titre.
Si tu n'as pas de titre mets .ColumnHeads = False (ou supprime
la ligne
simplement)
Attention NbCol doit valoir le nombre exact de colonne (pas eu
le temps
de tester la correction automatique par rapport à la plage nommée.
Philippe
++++++++++++++++++++++++++++++++++++++++++++++++++++
Private Sub UserForm_Initialize()
Chemin = "C:MachinTruc.xls"
LaPlage = "pnMaPlage"
Set xls = Nothing
Set xls = New Excel.Application
Set Classeur = xls.Workbooks.Open(Chemin)
Dim Col As Integer, count As Integer, NbCol, x As Integer
NbColPlage = UBound(Names(LaPlage).RefersToRange.Value, 2)
NbCol = 3 ' Définit le nombre de colonnes dans la plage
ReDim MyArray(Range(LaPlage).count / NbCol, NbCol)
With ListBox1
.ColumnHeads = True ' Si pas de titre = False
.ColumnCount = NbCol
End With
For Each L In Range(LaPlage)
x = x + 1
If (x Mod NbCol) = 0 Then Col = NbCol - 1 Else Col = (x Mod
NbCol) - 1
MyArray(count, Col) = L
If (x Mod NbCol) = 0 Then count = count + 1
Next
ListBox1.List() = MyArray
End Sub
Private Sub UserForm_Terminate()
Termine
End Sub
Sub Termine()
xls.DisplayAlerts = False
xls.Quit
Set xls = Nothing
Me.Hide
End Sub
"Jero" <~jean-pierre.geraudel@ac-nantes.fr> a écrit dans le
message de
news:Oet6MOYzEHA.3656@TK2MSFTNGP09.phx.gbl...
Bonjour à tous,
Dans un formulaire j'ai un contrôle ComboBox :
Comment faire référence à la plage A1:C12 (par exemple) du
classeur
Truc.xls
situé dans le dossier Machin. pour alimenter la liste ?
A chaque fois que j'essaie de rentrer un truc du genre
C:MachinTruc.xls!Feuil1!A1:C12, je me "fais jeter".
L'aide Microsoft précise :
la propriété RowSource accepte des plages de feuilles de travail
de
Microsoft Excel.
Mais ne donne aucun exemple de syntaxe.
Merci d'avance aux spécialistes du VBA sous Word
jero
Bonjour,
De mémoire, la propriété RowSource d'un ComboBox ne fonctionne
"directement" que dans Excel. La procédure de Philippe permet de le
faire "indirectement" en récupérant les valeurs de la plage dans un
tableau VBA pour "alimenter" ensuite le contrôle. (En fait, ce sont
les mêmes contrôles pour toutes les applications Office, et, des fois,
l'aide vire les coins rond)
Sinon, un ensemble de routines pour "gérer" les comboboxes ou les
listboxes en passant par un fichier texte:
http://groups.google.com/groups?q=readline+combobox+OR+listbox+author:clement.marcotte%40sympatico.ca&hl=fr&lr=&selm=%23xwikTtBDHA.3144%40TK2MSFTNGP11.phx.gbl&rnum=1
ou là :
(Je pense que c'est la même chose (ou presque))
http://groups.google.com/groups?q=readline+combobox+OR+listbox+author:clement.marcotte%40sympatico.ca&hl=fr&lr=&selm=Oylp3YyvCHA.2124%40TK2MSFTNGP11&rnum=3
"Jero" <~ a écrit dans le message de
news:Merci Philippe,
... ma question était un peu différente...
Je crée une ComboBox et dans la propriété RowSource comment je fais
( onfait) pour faire référence à une plage de cellules d'Excel... sans
passerpar le code que tu m'as gentiment fourni.
a+
Jero
"Corona" <Philippe Tulliez> a écrit dans le message de news:
%Bonsoir Jero,
Voici un exemple avec un "ListBox"
L'exemple utilise une plage nommée en Excel donc dans cet
exempledéfinit dans excel pnMaPlage pour la feuil1 "A1:C12" ou "A2:C12"
si tu asun
titre.
Si tu n'as pas de titre mets .ColumnHeads = False (ou supprime
la lignesimplement)
Attention NbCol doit valoir le nombre exact de colonne (pas eu
le tempsde tester la correction automatique par rapport à la plage nommée.
Philippe
++++++++++++++++++++++++++++++++++++++++++++++++++++
Private Sub UserForm_Initialize()
Chemin = "C:MachinTruc.xls"
LaPlage = "pnMaPlage"
Set xls = Nothing
Set xls = New Excel.Application
Set Classeur = xls.Workbooks.Open(Chemin)
Dim Col As Integer, count As Integer, NbCol, x As Integer
NbColPlage = UBound(Names(LaPlage).RefersToRange.Value, 2)
NbCol = 3 ' Définit le nombre de colonnes dans la plage
ReDim MyArray(Range(LaPlage).count / NbCol, NbCol)
With ListBox1
.ColumnHeads = True ' Si pas de titre = False
.ColumnCount = NbCol
End With
For Each L In Range(LaPlage)
x = x + 1
If (x Mod NbCol) = 0 Then Col = NbCol - 1 Else Col = (x Mod
NbCol) - 1MyArray(count, Col) = L
If (x Mod NbCol) = 0 Then count = count + 1
Next
ListBox1.List() = MyArray
End Sub
Private Sub UserForm_Terminate()
Termine
End Sub
Sub Termine()
xls.DisplayAlerts = False
xls.Quit
Set xls = Nothing
Me.Hide
End Sub
"Jero" <~ a écrit dans le
message denews:Bonjour à tous,
Dans un formulaire j'ai un contrôle ComboBox :
Comment faire référence à la plage A1:C12 (par exemple) du
classeurTruc.xlssitué dans le dossier Machin. pour alimenter la liste ?
A chaque fois que j'essaie de rentrer un truc du genre
C:MachinTruc.xls!Feuil1!A1:C12, je me "fais jeter".
L'aide Microsoft précise :
la propriété RowSource accepte des plages de feuilles de travail
deMicrosoft Excel.
Mais ne donne aucun exemple de syntaxe.
Merci d'avance aux spécialistes du VBA sous Word
jero
Merci Clément,
C'était ma question...
Alimenter la liste avec un fichier .txt ou Word ou Excel ne me pose
pas de problème particulier...
Note : c'est un peu léger la dessus chez MicroSoft ; pourquoi trainer
cette propriété qui ne sert à rien... même si on devine - on sait, on
se doute - que Word et Excel ne sont développés avec les mêmes
développeurs.
Merci Clément,
C'était ma question...
Alimenter la liste avec un fichier .txt ou Word ou Excel ne me pose
pas de problème particulier...
Note : c'est un peu léger la dessus chez MicroSoft ; pourquoi trainer
cette propriété qui ne sert à rien... même si on devine - on sait, on
se doute - que Word et Excel ne sont développés avec les mêmes
développeurs.
Merci Clément,
C'était ma question...
Alimenter la liste avec un fichier .txt ou Word ou Excel ne me pose
pas de problème particulier...
Note : c'est un peu léger la dessus chez MicroSoft ; pourquoi trainer
cette propriété qui ne sert à rien... même si on devine - on sait, on
se doute - que Word et Excel ne sont développés avec les mêmes
développeurs.