Bonjour François,
| J'ai modifié le code et j'ai une erreur 9
**********A************* -
Ce type d'erreur survient lorsque dans le code, on fait référence à un nom
d'objet qui n'existe pas.
Exemple : With worksheets("Feuil1") ... si ton classeur n'a pas de
"feuil1", cela génèrera une erreur.
Je crois que dans ton code, tu faisais référence à la feuil2. À vérifier
selon le nom de l'onglet de ta feuille où se retrouve ta
plage de données.
**********B*************
dans la procédure Private Sub UserForm_Initialize()
que vient faire cette section de ton code?
With Worksheets("Feuil1")
Set maplage = .Range("a2:k15000")
End With
For X = 2 To 3
Me.Controls("ComboBox" & X).List = tablo
Me.Controls("ComboBox" & X).ColumnCount = 3
Next X
'**************************
La boucle précédant ces lignes de code à déjà renseigné tes 3 combobox
...!
De plus, tu veux bien expliquer pourquoi tu définis 3 colonnes à tes
combobox et que ta plage originelle possède 11 colonnes "(Set
maplage = .Range("a2:k15000")"... tu as une raison particulière ?
**********C*************
Au sujet de ceci :
| ComboBox2.AddItem tablo(i, 2) 'L'INDINCE N'APPARTIENT PAS À LA
SÉLECTION ???
Attention, dans la procédure "Sub UserForm_Initialize()" , j'ai initialé
le tablo à chaque boucle pour une seule colonne de la plage
de cellules. Ton tablo n'a qu'une "colonne" , et toi, dans ta ligne de
code tu fais référence à une soi-disante 2 colonnes qui
n'existe pas dans ton tableaul
à propos du code dont j'ai fait référence en point "B", je te ferai
remarquer que ta variable tablo n'est pas modifié par ton
code... en fait, ta variable tablo conserve les données de la 3 ième et
dernière boucle qu'elle a exécutée juste avant. Et comme ta
variable est déclarée au niveau du module, les 2 procédures de ce type :
"Sub ComboBox1_Click()" n'apporte absolument rien de
nouveau car elles reprennent toujours les mêmes données de ta variable
"Tablo" qui elle a retenue les valeurs de la dernière boucle.
P.S. J'espère que c'est plus clair et que tu arriveras à te retrouver.
Salutations!
"François" a écrit dans le message de news:
XGsQe.9168$
Bonsoir Michdenis,
J'ai modifié le code et j'ai une erreur 9(l'indice n'appartient pas à la
sélection dans la sub (Private Sub ComboBox1_Click()), ce qui donne ceci :
Dim tablo As Variant
Private Sub UserForm_Initialize()
Dim i As Integer
Dim data As Collection
Dim maplage As Range
Dim A As Integer
For A = 1 To 3
Set data = New Collection
With Worksheets("Feuil1")
tablo = .Range(.Cells(2, A), _
.Cells(.Cells(65536, A).End(xlUp).Row, A))
End With
On Error Resume Next
For i = 1 To UBound(tablo)
If tablo(i, 1) <> "" Then
data.Add CStr(tablo(i, 1)), CStr(tablo(i, 1))
End If
Next i
On Error GoTo 0
For i = 1 To data.Count
UsfInventaire.Controls("ComboBox" & A).AddItem data.Item(i)
Next i
Set data = Nothing
Next
With Worksheets("Feuil1")
Set maplage = .Range("a2:k15000")
End With
For X = 2 To 3
Me.Controls("ComboBox" & X).List = tablo
Me.Controls("ComboBox" & X).ColumnCount = 3
Next X
End Sub
Private Sub ComboBox1_Click()
Dim i As Integer
ComboBox2.Clear
For i = 1 To UBound(tablo)
If tablo(i, 1) = ComboBox1 Then
ComboBox2.AddItem tablo(i, 2) 'L'INDINCE N'APPARTIENT PAS À LA
SÉLECTION ???
End If
Next i
ComboBox3.ListIndex = -1
End Sub
Private Sub ComboBox2_Change()
Dim i As Long
For i = 1 To UBound(tablo)
If tablo(i, 2) = ComboBox2 Then
ComboBox3 = CStr(tablo(i, 3))
End If
Next i
End Sub
J'ai oublié de spécifier que les combobox sont liés entre eux.
Merci
Bonjour François,
| J'ai modifié le code et j'ai une erreur 9
**********A************* -
Ce type d'erreur survient lorsque dans le code, on fait référence à un nom
d'objet qui n'existe pas.
Exemple : With worksheets("Feuil1") ... si ton classeur n'a pas de
"feuil1", cela génèrera une erreur.
Je crois que dans ton code, tu faisais référence à la feuil2. À vérifier
selon le nom de l'onglet de ta feuille où se retrouve ta
plage de données.
**********B*************
dans la procédure Private Sub UserForm_Initialize()
que vient faire cette section de ton code?
With Worksheets("Feuil1")
Set maplage = .Range("a2:k15000")
End With
For X = 2 To 3
Me.Controls("ComboBox" & X).List = tablo
Me.Controls("ComboBox" & X).ColumnCount = 3
Next X
'**************************
La boucle précédant ces lignes de code à déjà renseigné tes 3 combobox
...!
De plus, tu veux bien expliquer pourquoi tu définis 3 colonnes à tes
combobox et que ta plage originelle possède 11 colonnes "(Set
maplage = .Range("a2:k15000")"... tu as une raison particulière ?
**********C*************
Au sujet de ceci :
| ComboBox2.AddItem tablo(i, 2) 'L'INDINCE N'APPARTIENT PAS À LA
SÉLECTION ???
Attention, dans la procédure "Sub UserForm_Initialize()" , j'ai initialé
le tablo à chaque boucle pour une seule colonne de la plage
de cellules. Ton tablo n'a qu'une "colonne" , et toi, dans ta ligne de
code tu fais référence à une soi-disante 2 colonnes qui
n'existe pas dans ton tableaul
à propos du code dont j'ai fait référence en point "B", je te ferai
remarquer que ta variable tablo n'est pas modifié par ton
code... en fait, ta variable tablo conserve les données de la 3 ième et
dernière boucle qu'elle a exécutée juste avant. Et comme ta
variable est déclarée au niveau du module, les 2 procédures de ce type :
"Sub ComboBox1_Click()" n'apporte absolument rien de
nouveau car elles reprennent toujours les mêmes données de ta variable
"Tablo" qui elle a retenue les valeurs de la dernière boucle.
P.S. J'espère que c'est plus clair et que tu arriveras à te retrouver.
Salutations!
"François" <132@13.com> a écrit dans le message de news:
XGsQe.9168$j63.338479@wagner.videotron.net...
Bonsoir Michdenis,
J'ai modifié le code et j'ai une erreur 9(l'indice n'appartient pas à la
sélection dans la sub (Private Sub ComboBox1_Click()), ce qui donne ceci :
Dim tablo As Variant
Private Sub UserForm_Initialize()
Dim i As Integer
Dim data As Collection
Dim maplage As Range
Dim A As Integer
For A = 1 To 3
Set data = New Collection
With Worksheets("Feuil1")
tablo = .Range(.Cells(2, A), _
.Cells(.Cells(65536, A).End(xlUp).Row, A))
End With
On Error Resume Next
For i = 1 To UBound(tablo)
If tablo(i, 1) <> "" Then
data.Add CStr(tablo(i, 1)), CStr(tablo(i, 1))
End If
Next i
On Error GoTo 0
For i = 1 To data.Count
UsfInventaire.Controls("ComboBox" & A).AddItem data.Item(i)
Next i
Set data = Nothing
Next
With Worksheets("Feuil1")
Set maplage = .Range("a2:k15000")
End With
For X = 2 To 3
Me.Controls("ComboBox" & X).List = tablo
Me.Controls("ComboBox" & X).ColumnCount = 3
Next X
End Sub
Private Sub ComboBox1_Click()
Dim i As Integer
ComboBox2.Clear
For i = 1 To UBound(tablo)
If tablo(i, 1) = ComboBox1 Then
ComboBox2.AddItem tablo(i, 2) 'L'INDINCE N'APPARTIENT PAS À LA
SÉLECTION ???
End If
Next i
ComboBox3.ListIndex = -1
End Sub
Private Sub ComboBox2_Change()
Dim i As Long
For i = 1 To UBound(tablo)
If tablo(i, 2) = ComboBox2 Then
ComboBox3 = CStr(tablo(i, 3))
End If
Next i
End Sub
J'ai oublié de spécifier que les combobox sont liés entre eux.
Merci
Bonjour François,
| J'ai modifié le code et j'ai une erreur 9
**********A************* -
Ce type d'erreur survient lorsque dans le code, on fait référence à un nom
d'objet qui n'existe pas.
Exemple : With worksheets("Feuil1") ... si ton classeur n'a pas de
"feuil1", cela génèrera une erreur.
Je crois que dans ton code, tu faisais référence à la feuil2. À vérifier
selon le nom de l'onglet de ta feuille où se retrouve ta
plage de données.
**********B*************
dans la procédure Private Sub UserForm_Initialize()
que vient faire cette section de ton code?
With Worksheets("Feuil1")
Set maplage = .Range("a2:k15000")
End With
For X = 2 To 3
Me.Controls("ComboBox" & X).List = tablo
Me.Controls("ComboBox" & X).ColumnCount = 3
Next X
'**************************
La boucle précédant ces lignes de code à déjà renseigné tes 3 combobox
...!
De plus, tu veux bien expliquer pourquoi tu définis 3 colonnes à tes
combobox et que ta plage originelle possède 11 colonnes "(Set
maplage = .Range("a2:k15000")"... tu as une raison particulière ?
**********C*************
Au sujet de ceci :
| ComboBox2.AddItem tablo(i, 2) 'L'INDINCE N'APPARTIENT PAS À LA
SÉLECTION ???
Attention, dans la procédure "Sub UserForm_Initialize()" , j'ai initialé
le tablo à chaque boucle pour une seule colonne de la plage
de cellules. Ton tablo n'a qu'une "colonne" , et toi, dans ta ligne de
code tu fais référence à une soi-disante 2 colonnes qui
n'existe pas dans ton tableaul
à propos du code dont j'ai fait référence en point "B", je te ferai
remarquer que ta variable tablo n'est pas modifié par ton
code... en fait, ta variable tablo conserve les données de la 3 ième et
dernière boucle qu'elle a exécutée juste avant. Et comme ta
variable est déclarée au niveau du module, les 2 procédures de ce type :
"Sub ComboBox1_Click()" n'apporte absolument rien de
nouveau car elles reprennent toujours les mêmes données de ta variable
"Tablo" qui elle a retenue les valeurs de la dernière boucle.
P.S. J'espère que c'est plus clair et que tu arriveras à te retrouver.
Salutations!
"François" a écrit dans le message de news:
XGsQe.9168$
Bonsoir Michdenis,
J'ai modifié le code et j'ai une erreur 9(l'indice n'appartient pas à la
sélection dans la sub (Private Sub ComboBox1_Click()), ce qui donne ceci :
Dim tablo As Variant
Private Sub UserForm_Initialize()
Dim i As Integer
Dim data As Collection
Dim maplage As Range
Dim A As Integer
For A = 1 To 3
Set data = New Collection
With Worksheets("Feuil1")
tablo = .Range(.Cells(2, A), _
.Cells(.Cells(65536, A).End(xlUp).Row, A))
End With
On Error Resume Next
For i = 1 To UBound(tablo)
If tablo(i, 1) <> "" Then
data.Add CStr(tablo(i, 1)), CStr(tablo(i, 1))
End If
Next i
On Error GoTo 0
For i = 1 To data.Count
UsfInventaire.Controls("ComboBox" & A).AddItem data.Item(i)
Next i
Set data = Nothing
Next
With Worksheets("Feuil1")
Set maplage = .Range("a2:k15000")
End With
For X = 2 To 3
Me.Controls("ComboBox" & X).List = tablo
Me.Controls("ComboBox" & X).ColumnCount = 3
Next X
End Sub
Private Sub ComboBox1_Click()
Dim i As Integer
ComboBox2.Clear
For i = 1 To UBound(tablo)
If tablo(i, 1) = ComboBox1 Then
ComboBox2.AddItem tablo(i, 2) 'L'INDINCE N'APPARTIENT PAS À LA
SÉLECTION ???
End If
Next i
ComboBox3.ListIndex = -1
End Sub
Private Sub ComboBox2_Change()
Dim i As Long
For i = 1 To UBound(tablo)
If tablo(i, 2) = ComboBox2 Then
ComboBox3 = CStr(tablo(i, 3))
End If
Next i
End Sub
J'ai oublié de spécifier que les combobox sont liés entre eux.
Merci