Private Sub ComboBox1_Click()
ActiveSheet.[G20] = ComboBox1.Value
End Sub
Private Sub ComboBox2_Click()
ActiveSheet.[A34] = ComboBox2.Value
End Sub
Private Sub ComboBox3_Click()
ActiveSheet.[E34] = ComboBox3.Value
End Sub
pour remplir des valeurs dans les cellules indiquées. G20 rmène bien la
valeur sélectionnée dans le combox1 idem pour E34, mais A34 reste, quant à
elle, reste vide ???
Je précise que mes trois combobox sont sur le même userform et je les
alimente de la manière suivante (code fourni par MichDenis) :
Private Sub UserForm_Initialize()
Load UserForm1
Dim Tblo As Variant, Tblo2 As Variant, Tblo3 As Variant, Rg As Range, Rg2 As
Range, Rg3 As Range
'A1 étant la ligne d'étiquette
With Workbooks("Adresses Clients.xls").Sheets("Adresses Clients")
Set Rg = .Range("A2:A" & .Range("A65536").End(xlUp).Row)
End With
Tblo = Application.Transpose(Rg)
Quick_Sort Tblo, LBound(Tblo), UBound(Tblo)
With UserForm1.ComboBox1
.MatchEntry = fmMatchEntryComplete
.MatchRequired = True
.Style = fmStyleDropDownCombo
.List = Application.Transpose(Tblo)
End With
Set Rg = Nothing
'A1 étant la ligne d'étiquette
With Workbooks("Articles.xls").Sheets("Articles")
Set Rg2 = .Range("A2:A" & .Range("A65536").End(xlUp).Row)
End With
Tblo2 = Application.Transpose(Rg2)
Quick_Sort Tblo2, LBound(Tblo2), UBound(Tblo2)
With UserForm1.ComboBox2
.MatchEntry = fmMatchEntryComplete
.MatchRequired = True
.Style = fmStyleDropDownCombo
.List = Application.Transpose(Tblo2)
End With
Set Rg2 = Nothing
'A1 étant la ligne d'étiquette
With Workbooks("Articles.xls").Sheets("Articles")
Set Rg3 = .Range("B2:B" & .Range("B65536").End(xlUp).Row)
End With
Tblo3 = Application.Transpose(Rg3)
Quick_Sort Tblo3, LBound(Tblo3), UBound(Tblo3)
With UserForm1.ComboBox3
.MatchEntry = fmMatchEntryComplete
.MatchRequired = True
.Style = fmStyleDropDownCombo
.List = Application.Transpose(Tblo3)
End With
Set Rg3 = Nothing
End Sub
puis, toujours offert par mich Denis :
Sub Quick_Sort(ByRef SortArray As Variant, ByVal First As Long, ByVal Last
As Long)
Dim Low As Long, High As Long
Dim Temp As Variant, List_Separator As Variant
Low = First
High = Last
List_Separator = SortArray((First + Last) / 2)
Do
Do While (SortArray(Low) < List_Separator)
Low = Low + 1
Loop
Do While (SortArray(High) > List_Separator)
High = High - 1
Loop
If (Low <= High) Then
Temp = SortArray(Low)
SortArray(Low) = SortArray(High)
SortArray(High) = Temp
Low = Low + 1
High = High - 1
End If
Loop While (Low <= High)
If (First < High) Then Quick_Sort SortArray, First, High
If (Low < Last) Then Quick_Sort SortArray, Low, Last
End Sub
dans un module standard.
Entre parenthèse si quelqu'un comprend les lignes suivantes et peut me les
expliquer, çà serait sympa :
List_Separator = SortArray((First + Last) / 2)
Do While (SortArray(Low) < List_Separator)
Do While (SortArray(High) > List_Separator)
MichDenis, Merci pour ta réponse, je regarde çà demain, je dois partir en urgence.
M Mto
Michel MTO
Bonjour Denis,
Alors si j'ai bien compris :
Sub Quick_Sort(ByRef SortArray As Variant, ByVal First As Long, ByVal Last As Long) Dim Low As Long, High As Long Dim Temp As Variant, List_Separator As Variant Low = First High = Last
affectation des 1er et dernier éléments
List_Separator = SortArray((First + Last) / 2)
Choix de l'élément médian
Do Do While (SortArray(Low) < List_Separator)
Si le 1er élément < au médian
Low = Low + 1
on passe ) l'élément 2 etc ... pour arriver jusqu'à l' élt médian Mais SortArray() => çà veut dire quoi, je ne le trouve pas dans l'aide VBA ??
Loop
Do While (SortArray(High) > List_Separator) High = High - 1 Loop
on fait la même chose avec l'élément supérieur
If (Low <= High) Then Temp = SortArray(Low) SortArray(Low) = SortArray(High) SortArray(High) = Temp Low = Low + 1 High = High - 1 End If
????? je ne comprend pas
Loop While (Low <= High)
If (First < High) Then Quick_Sort SortArray, First, High If (Low < Last) Then Quick_Sort SortArray, Low, Last
Et là on recommence la procèdure de manière à arriver avec des listes de 1 éléments.
End Sub
Voilà comment j'interprète !!
Est-ce que ton combobox2 contient bien les données désirées ?
Oui
Est-ce qu'il affiche une valeur lors de l'opération ?
Non
Dans la feuille active, as-tu des procédures événementielles?
Oui, j'ai Private Sub Workbook_Open() Private Sub Workbook_BeforeClose(Cancel As Boolean) Private Sub CommandButton1_Click()
Si oui, ajoute en début de procédure :
Application.Enableevents = false et à la fin Application.Enableevents = true
Dois je les mettre dans la procèdure Quick sort ??? ou une autre ??
Merci beaucoup pour toutes tes explications
Michel MTO
Bonjour Denis,
Alors si j'ai bien compris :
Sub Quick_Sort(ByRef SortArray As Variant, ByVal First As Long, ByVal Last
As Long)
Dim Low As Long, High As Long
Dim Temp As Variant, List_Separator As Variant
Low = First
High = Last
affectation des 1er et dernier éléments
List_Separator = SortArray((First + Last) / 2)
Choix de l'élément médian
Do
Do While (SortArray(Low) < List_Separator)
Si le 1er élément < au médian
Low = Low + 1
on passe ) l'élément 2 etc ... pour arriver jusqu'à l' élt médian
Mais SortArray() => çà veut dire quoi, je ne le trouve pas dans l'aide VBA
??
Loop
Do While (SortArray(High) > List_Separator)
High = High - 1
Loop
on fait la même chose avec l'élément supérieur
If (Low <= High) Then
Temp = SortArray(Low)
SortArray(Low) = SortArray(High)
SortArray(High) = Temp
Low = Low + 1
High = High - 1
End If
????? je ne comprend pas
Loop While (Low <= High)
If (First < High) Then Quick_Sort SortArray, First, High
If (Low < Last) Then Quick_Sort SortArray, Low, Last
Et là on recommence la procèdure de manière à arriver avec des listes de 1
éléments.
End Sub
Voilà comment j'interprète !!
Est-ce que ton combobox2 contient bien les données désirées ?
Oui
Est-ce qu'il affiche une valeur lors de l'opération ?
Non
Dans la feuille active, as-tu des procédures événementielles?
Oui, j'ai
Private Sub Workbook_Open()
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Private Sub CommandButton1_Click()
Si oui, ajoute en début de procédure :
Application.Enableevents = false
et à la fin
Application.Enableevents = true
Dois je les mettre dans la procèdure Quick sort ??? ou une autre ??
Sub Quick_Sort(ByRef SortArray As Variant, ByVal First As Long, ByVal Last As Long) Dim Low As Long, High As Long Dim Temp As Variant, List_Separator As Variant Low = First High = Last
affectation des 1er et dernier éléments
List_Separator = SortArray((First + Last) / 2)
Choix de l'élément médian
Do Do While (SortArray(Low) < List_Separator)
Si le 1er élément < au médian
Low = Low + 1
on passe ) l'élément 2 etc ... pour arriver jusqu'à l' élt médian Mais SortArray() => çà veut dire quoi, je ne le trouve pas dans l'aide VBA ??
Loop
Do While (SortArray(High) > List_Separator) High = High - 1 Loop
on fait la même chose avec l'élément supérieur
If (Low <= High) Then Temp = SortArray(Low) SortArray(Low) = SortArray(High) SortArray(High) = Temp Low = Low + 1 High = High - 1 End If
????? je ne comprend pas
Loop While (Low <= High)
If (First < High) Then Quick_Sort SortArray, First, High If (Low < Last) Then Quick_Sort SortArray, Low, Last
Et là on recommence la procèdure de manière à arriver avec des listes de 1 éléments.
End Sub
Voilà comment j'interprète !!
Est-ce que ton combobox2 contient bien les données désirées ?
Oui
Est-ce qu'il affiche une valeur lors de l'opération ?
Non
Dans la feuille active, as-tu des procédures événementielles?
Oui, j'ai Private Sub Workbook_Open() Private Sub Workbook_BeforeClose(Cancel As Boolean) Private Sub CommandButton1_Click()
Si oui, ajoute en début de procédure :
Application.Enableevents = false et à la fin Application.Enableevents = true
Dois je les mettre dans la procèdure Quick sort ??? ou une autre ??
Merci beaucoup pour toutes tes explications
Michel MTO
michdenis
| SortArray() => çà veut dire quoi, je ne le trouve pas dans l'aide VBA
C'est un paramètre de la fonction personnalisée Quick_Sort() qui représente un tableau (array) Si j'étais toi, je ne perdrais pas trop de temps à comprendre cela, j'attendrais d'être un peu plus féru en VBA et en programmation.
Pour ce qui est de ton combobox, est-ce possible que tu publies un bout de ton fichier sur Cijoint.fr ou cjoint.com et que tu nous retournes l'adresse ici.
"Michel MTO" a écrit dans le message de groupe de discussion : hto0ap$kit$ Bonjour Denis,
Alors si j'ai bien compris :
Sub Quick_Sort(ByRef SortArray As Variant, ByVal First As Long, ByVal Last As Long) Dim Low As Long, High As Long Dim Temp As Variant, List_Separator As Variant Low = First High = Last
affectation des 1er et dernier éléments
List_Separator = SortArray((First + Last) / 2)
Choix de l'élément médian
Do Do While (SortArray(Low) < List_Separator)
Si le 1er élément < au médian
Low = Low + 1
on passe ) l'élément 2 etc ... pour arriver jusqu'à l' élt médian Mais SortArray() => çà veut dire quoi, je ne le trouve pas dans l'aide VBA ??
Loop
Do While (SortArray(High) > List_Separator) High = High - 1 Loop
on fait la même chose avec l'élément supérieur
If (Low <= High) Then Temp = SortArray(Low) SortArray(Low) = SortArray(High) SortArray(High) = Temp Low = Low + 1 High = High - 1 End If
????? je ne comprend pas
Loop While (Low <= High)
If (First < High) Then Quick_Sort SortArray, First, High If (Low < Last) Then Quick_Sort SortArray, Low, Last
Et là on recommence la procèdure de manière à arriver avec des listes de 1 éléments.
End Sub
Voilà comment j'interprète !!
Est-ce que ton combobox2 contient bien les données désirées ?
Oui
Est-ce qu'il affiche une valeur lors de l'opération ?
Non
Dans la feuille active, as-tu des procédures événementielles?
Oui, j'ai Private Sub Workbook_Open() Private Sub Workbook_BeforeClose(Cancel As Boolean) Private Sub CommandButton1_Click()
Si oui, ajoute en début de procédure :
Application.Enableevents = false et à la fin Application.Enableevents = true
Dois je les mettre dans la procèdure Quick sort ??? ou une autre ??
Merci beaucoup pour toutes tes explications
Michel MTO
| SortArray() => çà veut dire quoi, je ne le trouve pas dans l'aide VBA
C'est un paramètre de la fonction personnalisée Quick_Sort() qui
représente un tableau (array)
Si j'étais toi, je ne perdrais pas trop de temps à comprendre cela,
j'attendrais d'être un peu plus féru en VBA et en programmation.
Pour ce qui est de ton combobox, est-ce possible que tu publies
un bout de ton fichier sur Cijoint.fr ou cjoint.com
et que tu nous retournes l'adresse ici.
"Michel MTO" <comptabilite@olcoven.fr> a écrit dans le message de groupe de
discussion : hto0ap$kit$1@speranza.aioe.org...
Bonjour Denis,
Alors si j'ai bien compris :
Sub Quick_Sort(ByRef SortArray As Variant, ByVal First As Long, ByVal Last
As Long)
Dim Low As Long, High As Long
Dim Temp As Variant, List_Separator As Variant
Low = First
High = Last
affectation des 1er et dernier éléments
List_Separator = SortArray((First + Last) / 2)
Choix de l'élément médian
Do
Do While (SortArray(Low) < List_Separator)
Si le 1er élément < au médian
Low = Low + 1
on passe ) l'élément 2 etc ... pour arriver jusqu'à l' élt médian
Mais SortArray() => çà veut dire quoi, je ne le trouve pas dans l'aide VBA
??
Loop
Do While (SortArray(High) > List_Separator)
High = High - 1
Loop
on fait la même chose avec l'élément supérieur
If (Low <= High) Then
Temp = SortArray(Low)
SortArray(Low) = SortArray(High)
SortArray(High) = Temp
Low = Low + 1
High = High - 1
End If
????? je ne comprend pas
Loop While (Low <= High)
If (First < High) Then Quick_Sort SortArray, First, High
If (Low < Last) Then Quick_Sort SortArray, Low, Last
Et là on recommence la procèdure de manière à arriver avec des listes de 1
éléments.
End Sub
Voilà comment j'interprète !!
Est-ce que ton combobox2 contient bien les données désirées ?
Oui
Est-ce qu'il affiche une valeur lors de l'opération ?
Non
Dans la feuille active, as-tu des procédures événementielles?
Oui, j'ai
Private Sub Workbook_Open()
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Private Sub CommandButton1_Click()
Si oui, ajoute en début de procédure :
Application.Enableevents = false
et à la fin
Application.Enableevents = true
Dois je les mettre dans la procèdure Quick sort ??? ou une autre ??
| SortArray() => çà veut dire quoi, je ne le trouve pas dans l'aide VBA
C'est un paramètre de la fonction personnalisée Quick_Sort() qui représente un tableau (array) Si j'étais toi, je ne perdrais pas trop de temps à comprendre cela, j'attendrais d'être un peu plus féru en VBA et en programmation.
Pour ce qui est de ton combobox, est-ce possible que tu publies un bout de ton fichier sur Cijoint.fr ou cjoint.com et que tu nous retournes l'adresse ici.
"Michel MTO" a écrit dans le message de groupe de discussion : hto0ap$kit$ Bonjour Denis,
Alors si j'ai bien compris :
Sub Quick_Sort(ByRef SortArray As Variant, ByVal First As Long, ByVal Last As Long) Dim Low As Long, High As Long Dim Temp As Variant, List_Separator As Variant Low = First High = Last
affectation des 1er et dernier éléments
List_Separator = SortArray((First + Last) / 2)
Choix de l'élément médian
Do Do While (SortArray(Low) < List_Separator)
Si le 1er élément < au médian
Low = Low + 1
on passe ) l'élément 2 etc ... pour arriver jusqu'à l' élt médian Mais SortArray() => çà veut dire quoi, je ne le trouve pas dans l'aide VBA ??
Loop
Do While (SortArray(High) > List_Separator) High = High - 1 Loop
on fait la même chose avec l'élément supérieur
If (Low <= High) Then Temp = SortArray(Low) SortArray(Low) = SortArray(High) SortArray(High) = Temp Low = Low + 1 High = High - 1 End If
????? je ne comprend pas
Loop While (Low <= High)
If (First < High) Then Quick_Sort SortArray, First, High If (Low < Last) Then Quick_Sort SortArray, Low, Last
Et là on recommence la procèdure de manière à arriver avec des listes de 1 éléments.
End Sub
Voilà comment j'interprète !!
Est-ce que ton combobox2 contient bien les données désirées ?
Oui
Est-ce qu'il affiche une valeur lors de l'opération ?
Non
Dans la feuille active, as-tu des procédures événementielles?
Oui, j'ai Private Sub Workbook_Open() Private Sub Workbook_BeforeClose(Cancel As Boolean) Private Sub CommandButton1_Click()
Si oui, ajoute en début de procédure :
Application.Enableevents = false et à la fin Application.Enableevents = true
Dois je les mettre dans la procèdure Quick sort ??? ou une autre ??
Merci beaucoup pour toutes tes explications
Michel MTO
Michel MTO
Denis,
j'ai trouvé, mon problème venait du fait suivant :
Lorsque je saisie un libéllé dans mon combobox, il apparait les 1ère lettres que je tape et ensuite le libéllé est en bleue pour les lettres que je ne saisie pas, et là au lieu de cliquer sur ma flèche pour sélectionner le libéllé qu'il me fallait je laissais tel quel, donc sélection à vide et aucune donnée dans mes cellules de destination. En fait, en cliquant bien sur mon libéllé les valeurs sont bien rapportées dans les cellules.
Pour : | SortArray() => çà veut dire quoi, je ne le trouve pas dans l'aide VBA
Effectivement y-a des progrès à faire et j'ai bien compris qu'il s'agissait d'un paramètre de la fonction personnalisée Quick_Sort().
Juste une dernière précision : avec ceci => Quick_Sort Tblo3, LBound(Tblo3), UBound(Tblo3) on passe les 3 arguments dont tu me parlait
et avec ceci => Sub Quick_Sort(ByRef SortArray As Variant, ByVal First As Long, ByVal Last As Long) on récupère ces valeurs mêmes valeur dans les variables SortArray(), First , Last
Juste ou faux ??
Michel MTO
Denis,
j'ai trouvé, mon problème venait du fait suivant :
Lorsque je saisie un libéllé dans mon combobox, il apparait les 1ère lettres
que je tape et ensuite le libéllé est en bleue pour les lettres que je ne
saisie pas, et là au lieu de cliquer sur ma flèche pour sélectionner le
libéllé qu'il me fallait je laissais tel quel, donc sélection à vide et
aucune donnée dans mes cellules de destination. En fait, en cliquant bien
sur mon libéllé les valeurs sont bien rapportées dans les cellules.
Pour :
| SortArray() => çà veut dire quoi, je ne le trouve pas dans l'aide VBA
Effectivement y-a des progrès à faire et j'ai bien compris qu'il s'agissait
d'un paramètre de la fonction personnalisée Quick_Sort().
Juste une dernière précision :
avec ceci => Quick_Sort Tblo3, LBound(Tblo3), UBound(Tblo3)
on passe les 3 arguments dont tu me parlait
et avec ceci => Sub Quick_Sort(ByRef SortArray As Variant, ByVal First As
Long, ByVal Last As Long)
on récupère ces valeurs mêmes valeur dans les variables SortArray(), First ,
Last
j'ai trouvé, mon problème venait du fait suivant :
Lorsque je saisie un libéllé dans mon combobox, il apparait les 1ère lettres que je tape et ensuite le libéllé est en bleue pour les lettres que je ne saisie pas, et là au lieu de cliquer sur ma flèche pour sélectionner le libéllé qu'il me fallait je laissais tel quel, donc sélection à vide et aucune donnée dans mes cellules de destination. En fait, en cliquant bien sur mon libéllé les valeurs sont bien rapportées dans les cellules.
Pour : | SortArray() => çà veut dire quoi, je ne le trouve pas dans l'aide VBA
Effectivement y-a des progrès à faire et j'ai bien compris qu'il s'agissait d'un paramètre de la fonction personnalisée Quick_Sort().
Juste une dernière précision : avec ceci => Quick_Sort Tblo3, LBound(Tblo3), UBound(Tblo3) on passe les 3 arguments dont tu me parlait
et avec ceci => Sub Quick_Sort(ByRef SortArray As Variant, ByVal First As Long, ByVal Last As Long) on récupère ces valeurs mêmes valeur dans les variables SortArray(), First , Last
Juste ou faux ??
Michel MTO
michdenis
Juste une dernière précision : avec ceci => Quick_Sort Tblo3, LBound(Tblo3), UBound(Tblo3) on passe les 3 arguments dont tu me parlait
et avec ceci => Sub Quick_Sort(ByRef SortArray As Variant, ByVal First As Long, ByVal Last As Long) on récupère ces valeurs mêmes valeur dans les variables SortArray(), First , Last
Juste ou faux ??
***** C'est exact.
Juste une dernière précision :
avec ceci => Quick_Sort Tblo3, LBound(Tblo3), UBound(Tblo3)
on passe les 3 arguments dont tu me parlait
et avec ceci => Sub Quick_Sort(ByRef SortArray As Variant, ByVal First As
Long, ByVal Last As Long)
on récupère ces valeurs mêmes valeur dans les variables SortArray(), First ,
Last
Juste une dernière précision : avec ceci => Quick_Sort Tblo3, LBound(Tblo3), UBound(Tblo3) on passe les 3 arguments dont tu me parlait
et avec ceci => Sub Quick_Sort(ByRef SortArray As Variant, ByVal First As Long, ByVal Last As Long) on récupère ces valeurs mêmes valeur dans les variables SortArray(), First , Last