[VB excel] fonction recherche et combobox
Résolu/Fermé
DunKaNMLNJ
Messages postés
12
Date d'inscription
mardi 21 août 2007
Statut
Membre
Dernière intervention
3 mars 2009
-
9 juin 2008 à 08:28
DunKaNMLNJ Messages postés 12 Date d'inscription mardi 21 août 2007 Statut Membre Dernière intervention 3 mars 2009 - 9 juin 2008 à 15:37
DunKaNMLNJ Messages postés 12 Date d'inscription mardi 21 août 2007 Statut Membre Dernière intervention 3 mars 2009 - 9 juin 2008 à 15:37
A voir également:
- [VB excel] fonction recherche et combobox
- Fonction si et - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Fonction moyenne excel - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
4 réponses
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 709
9 juin 2008 à 10:23
9 juin 2008 à 10:23
bonjour
Je te propose de corriger ainsi
Je te propose de corriger ainsi
ro = 1 col = 1 compt = 0 ok1.Visible = False dim resultat as object Do set resultat = Sheets(feuil).Cells.Find(what:=TextBox1, After:=Sheets(feuil).Cells(ro,col), _ LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= False) if resultat is nothing then exit do 'On vérifie la fin de la boucle If resultat.Row < ro Then exit do If resultat.Row = ro And resultat.Column <= col Then exit do ComboBox1.AddItem resultat.Value ro = resultat.Row col = resultat.Column Loop
DunKaNMLNJ
Messages postés
12
Date d'inscription
mardi 21 août 2007
Statut
Membre
Dernière intervention
3 mars 2009
9 juin 2008 à 11:03
9 juin 2008 à 11:03
Wahou!!! je suis très impressionné.
Ca a l'air de fonctionner super bien.
Franchement merci! tu me sors une grosse épine du pied.
Je retiens tout particulièrement plusieurs astuces très intéressantes notament :
After:=Sheets(feuil).Cells(ro, col) dans la fonction find ... Le genre de trucs qui te fait dire: "Mais pourquoi je n'y ai pas pensé ??"
Dim as object ... je cherchai justement à définir une variable pour contenir des coordonnées. (oui je débute ^^)
Exit do ... ça évite les sacs de noeuds sans fin
Bien .. maintenant je vais pouvoir passer aux joies de la combobox
(petite question au passage: comment savoir quel item sélectionne l'utilisateur?)
Ca a l'air de fonctionner super bien.
Franchement merci! tu me sors une grosse épine du pied.
Je retiens tout particulièrement plusieurs astuces très intéressantes notament :
After:=Sheets(feuil).Cells(ro, col) dans la fonction find ... Le genre de trucs qui te fait dire: "Mais pourquoi je n'y ai pas pensé ??"
Dim as object ... je cherchai justement à définir une variable pour contenir des coordonnées. (oui je débute ^^)
Exit do ... ça évite les sacs de noeuds sans fin
Bien .. maintenant je vais pouvoir passer aux joies de la combobox
(petite question au passage: comment savoir quel item sélectionne l'utilisateur?)
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 709
9 juin 2008 à 12:21
9 juin 2008 à 12:21
bonjour
Avec selection = combobox1 tu as la valeur.
Avec selection = combobox1.listindex tu as la position qui commence à zéro.
Avec selection = combobox1 tu as la valeur.
Avec selection = combobox1.listindex tu as la position qui commence à zéro.
DunKaNMLNJ
Messages postés
12
Date d'inscription
mardi 21 août 2007
Statut
Membre
Dernière intervention
3 mars 2009
9 juin 2008 à 15:37
9 juin 2008 à 15:37
Et hop! c'est finissssh
pour ceux que ça pourrait aider (si vous avez envie de faire un truc similaire) voila mon code ... et une image pour y voir plus clair. http://img338.imageshack.us/img338/5325/prtscxt4.png
--------------------------------------------------------
Private Sub ok2_Click()
Dim fourn1 As Object
Dim fourn2 As Object
Dim compte As String
Dim fournisseur As String
Dim commandes As Integer
Dim ardmd As Integer
Dim ecart As Integer
Dim respect As String
Dim livar As Integer
Dim retard As Integer
Dim livr As String
Dim Tex As String
Dim Texx As String
Dim indice As Integer
Dim facture As Integer
UserForm1.Hide
Set fourn1 = Sheets("Délais demandés & AR").Cells.Find(what:=ComboBox1, After:=Sheets("Délais demandés & AR").Cells(1, 1), _
LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
Set fourn2 = Sheets("Délais AR & livraison").Cells.Find(what:=ComboBox1, After:=Sheets("Délais AR & livraison").Cells(1, 1), _
LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
If fourn1.Column = 2 Then
c = 0
Else
c = 1
End If
compte = fourn1.Offset(0, c - 1)
commandes = fourn1.Offset(0, c + 1)
fournisseur = fourn1.Offset(0, c)
ardmd = fourn1.Offset(0, c + 2).Value * 100
ecart = fourn1.Offset(0, c + 3)
respect = fourn1.Offset(0, c + 4)
livar = fourn2.Offset(0, c + 2).Value * 100
retard = fourn2.Offset(0, c + 3)
livr = fourn2.Offset(0, c + 4)
indice = fourn2.Offset(0, c + 5)
facture = fourn2.Offset(0, c + 6).Value * 100
Tex = fournisseur & " a traité " & commandes & " lignes de commandes." & Chr(10) & Chr(10) & " Pour ces commandes, " & ardmd & "% des délais accusés en réception par le fournisseur sont égaux aux délais demandés par Solem. " & Chr(10) & " ( En moyenne, le fournisseur accuse " & ecart & " jour(s) d'écart) " & Chr(10) & " " & livar & "% des livraisons respectent les délais accusés par le fournisseur. " & Chr(10) & " ( Une moyenne de " & retard & " jour(s) de retard a été observé.) " & Chr(10) & " " & fournisseur & " respecte " & respect & " les délais demandés par Solem, à un jour près. " & Chr(10) & " Ce fournisseur livre " & livr & " dans les temps, à trois jours près." & Chr(10) & "" & Chr(10) & ""
Texx = " L'indice de ponctualité de " & fournisseur & " est de " & indice & "." & Chr(10) & " Plus cet indice est faible, plus le retard du fournisseur est préjudiciable pour la chaîne de production." & Chr(10) & " [min 0 ; max 100] " & Chr(10) & Chr(10) & " Ce fournisseur livre, et par conséquent facture, " & facture & "% de ses livraisons le mois précédent." & Chr(10) & "" & Chr(10) & "" & Chr(10) & "" & Chr(10) & " Voulez-vous effectuer une nouvelle recherche?"
response = MsgBox(Tex & Texx, vbYesNo, compte & " " & fournisseur)
If response = vbYes Then
UserForm1.Show
End If
End Sub
Private Sub TextBox1_enter()
TextBox1.SelStart = 0
TextBox1.SelLength = TextBox1.TextLength
End Sub
Private Sub ok1_Click()
Dim ro As Long
Dim col As Long
Dim flag As Boolean
Dim feuil As String
Dim compt As Integer
Dim n As Integer
Dim resultat As Object
ComboBox1.Clear
feuil = "Délais demandés & AR"
ro = 1
col = 1
compt = 0
Do While compt < 2
Do
Set resultat = Sheets(feuil).Cells.Find(what:=TextBox1, After:=Sheets(feuil).Cells(ro, col), _
LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
If resultat Is Nothing Then Exit Do
'On vérifie la fin de la boucle
If resultat.Row < ro Then Exit Do
If resultat.Row = ro And resultat.Column <= col Then Exit Do
ComboBox1.AddItem resultat.Value
ro = resultat.Row
col = resultat.Column
Loop
compt = compt + 1
feuil = "Délais AR & livraison"
Loop
End Sub
---------------------------------------------------
pour ceux que ça pourrait aider (si vous avez envie de faire un truc similaire) voila mon code ... et une image pour y voir plus clair. http://img338.imageshack.us/img338/5325/prtscxt4.png
--------------------------------------------------------
Private Sub ok2_Click()
Dim fourn1 As Object
Dim fourn2 As Object
Dim compte As String
Dim fournisseur As String
Dim commandes As Integer
Dim ardmd As Integer
Dim ecart As Integer
Dim respect As String
Dim livar As Integer
Dim retard As Integer
Dim livr As String
Dim Tex As String
Dim Texx As String
Dim indice As Integer
Dim facture As Integer
UserForm1.Hide
Set fourn1 = Sheets("Délais demandés & AR").Cells.Find(what:=ComboBox1, After:=Sheets("Délais demandés & AR").Cells(1, 1), _
LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
Set fourn2 = Sheets("Délais AR & livraison").Cells.Find(what:=ComboBox1, After:=Sheets("Délais AR & livraison").Cells(1, 1), _
LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
If fourn1.Column = 2 Then
c = 0
Else
c = 1
End If
compte = fourn1.Offset(0, c - 1)
commandes = fourn1.Offset(0, c + 1)
fournisseur = fourn1.Offset(0, c)
ardmd = fourn1.Offset(0, c + 2).Value * 100
ecart = fourn1.Offset(0, c + 3)
respect = fourn1.Offset(0, c + 4)
livar = fourn2.Offset(0, c + 2).Value * 100
retard = fourn2.Offset(0, c + 3)
livr = fourn2.Offset(0, c + 4)
indice = fourn2.Offset(0, c + 5)
facture = fourn2.Offset(0, c + 6).Value * 100
Tex = fournisseur & " a traité " & commandes & " lignes de commandes." & Chr(10) & Chr(10) & " Pour ces commandes, " & ardmd & "% des délais accusés en réception par le fournisseur sont égaux aux délais demandés par Solem. " & Chr(10) & " ( En moyenne, le fournisseur accuse " & ecart & " jour(s) d'écart) " & Chr(10) & " " & livar & "% des livraisons respectent les délais accusés par le fournisseur. " & Chr(10) & " ( Une moyenne de " & retard & " jour(s) de retard a été observé.) " & Chr(10) & " " & fournisseur & " respecte " & respect & " les délais demandés par Solem, à un jour près. " & Chr(10) & " Ce fournisseur livre " & livr & " dans les temps, à trois jours près." & Chr(10) & "" & Chr(10) & ""
Texx = " L'indice de ponctualité de " & fournisseur & " est de " & indice & "." & Chr(10) & " Plus cet indice est faible, plus le retard du fournisseur est préjudiciable pour la chaîne de production." & Chr(10) & " [min 0 ; max 100] " & Chr(10) & Chr(10) & " Ce fournisseur livre, et par conséquent facture, " & facture & "% de ses livraisons le mois précédent." & Chr(10) & "" & Chr(10) & "" & Chr(10) & "" & Chr(10) & " Voulez-vous effectuer une nouvelle recherche?"
response = MsgBox(Tex & Texx, vbYesNo, compte & " " & fournisseur)
If response = vbYes Then
UserForm1.Show
End If
End Sub
Private Sub TextBox1_enter()
TextBox1.SelStart = 0
TextBox1.SelLength = TextBox1.TextLength
End Sub
Private Sub ok1_Click()
Dim ro As Long
Dim col As Long
Dim flag As Boolean
Dim feuil As String
Dim compt As Integer
Dim n As Integer
Dim resultat As Object
ComboBox1.Clear
feuil = "Délais demandés & AR"
ro = 1
col = 1
compt = 0
Do While compt < 2
Do
Set resultat = Sheets(feuil).Cells.Find(what:=TextBox1, After:=Sheets(feuil).Cells(ro, col), _
LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
If resultat Is Nothing Then Exit Do
'On vérifie la fin de la boucle
If resultat.Row < ro Then Exit Do
If resultat.Row = ro And resultat.Column <= col Then Exit Do
ComboBox1.AddItem resultat.Value
ro = resultat.Row
col = resultat.Column
Loop
compt = compt + 1
feuil = "Délais AR & livraison"
Loop
End Sub
---------------------------------------------------