combobox

dede

XLDnaute Junior
bonjour a tous je reviens vers vous aujourd hui car j ai creer un vba qui marche sur une feuille et je veux la meme sur un autre feuille et la pas moyen la base est enorme 539531 ligne et les combobox ne m affiche que les 2 premieres si quelqu un peu m aider
Dim i As Byte

Private Sub ComboBox1_Change()

End Sub

Private Sub CommandButton1_Click()
For i = 1 To 7: Controls("Textbox" & i) = "": Next (c est la que ca merde)
With Sheets("BASE")
For i = 2 To .Range("A539531").End(xlUp).Row
If .Range("A" & i) = ComboBox1 And .Range("B" & i) = ComboBox2 Then
TextBox1 = .Range("E" & i)
TextBox2 = .Range("I" & i)
TextBox3 = .Range("F" & i)
TextBox4 = .Range("G" & i)

End If
Next i
End With
If TextBox1 = "" Then MsgBox "pas trouve de reference correspondant a la recherche"
End Sub



Private Sub UserForm_Initialize()
With Sheets("BASE"): ComboBox1.List = Range(.[A2], .[A539531].End(xlUp)).Value: End With
With Sheets("BASE"): ComboBox2.List = Range(.[B2], .[B539531].End(xlUp)).Value: End With
End Sub
 

dede

XLDnaute Junior
Re : combobox

La nuit a ete bonne nene merci pour ton aide j espere que tu vas bien je regarde ton fichier mais je recherche juste un code pour que la recherche soit plus rapide c est tout pas besoin d une usine a gaz juste gagne du temps sur la recherche sur 530000 ligne ma formule rame a mort
 

néné06

XLDnaute Accro
Re : combobox

J'ai remarqué que dans ta boucle tu vas jusqu'a la derniere cellule ">500000" même si tu as trouvé ta valeur ?

Place un exit sub après l'affichage dans tes TB, cela évitera d'aller jusqu'à la dernière cel et n'oublies pas de placer au début
Dim i as Long

Dans un deuxième temps , pour valider ta recherche,dois tu avoir le cb1.listindex = au cb2.listindex???
 

dede

XLDnaute Junior
Re : combobox

Voila mon code
Option Explicit
Private Sub CommandButton1_Click()
Dim i As Long
For i = 1 To 4
Controls("Textbox" & i) = ""
Next i
With Sheets("BASE")
For i = 2 To .Range("A539577").End(xlUp).Row
If .Range("A" & i) = ComboBox1 And CStr(.Range("B" & i)) = ComboBox2 Then
TextBox1 = .Range("C" & i)
TextBox2 = .Range("D" & i)
TextBox3 = .Range("E" & i)
TextBox4 = .Range("F" & i)
End If
Next i
End With
If TextBox1 = "" Then MsgBox "pas trouve de reference correspondant a la recherche"
End Sub
Private Sub UserForm_Initialize()
With Sheets("BASE")
ComboBox1.List = .Range(.[A2], .[A539577].End(xlUp)).Value
ComboBox2.List = .Range(.[B2], .[B539577].End(xlUp)).Value
End With
End Sub
Je ne comprend pas le mot TB peux m aider a integrer des idees merci encore de ta patience avec un casse couille mais un casse couille tetu merci
 

dede

XLDnaute Junior
Re : combobox

nene on y est c est ca que je veus je ne t appelle plus nene mais dieu mais il y un petit hic la colonne b et rempli de ref soit de type 12363 ou une combinaison de lettre et de chiffre type ATA123009010 et a partir de ca il retrouve pas tout il doit y avoir un moyen simple sinon instantane merci nene euh dieu
 

néné06

XLDnaute Accro
Re : combobox

Fais moi parvenir un exemple dans la base où tu découvre un probléme "il retrouve pas tout"??.
Tu étais parti sur une mauvaise piste en voulant boucler sur +500000 ref alors que les CB donnent directement le numero de fiche par l'instruction listindex.
Sur ton fichier, est-ce que la recherche est rapide ?
Je n'ai jamais testé sur plus de 500 à 600 références.

A+
 

dede

XLDnaute Junior
Re : combobox

tout marche impecable mais attend je prepare ca LA BASE EST TROP GROSSE mon probleme de rapidite dans ton travail 3 est resolu mais un autre apparait ca doit etre un probleme de doublon comme plusieurs fabricant avec le meme code article il faut absolument dans CB01 fabricant dans CB02 les ref du Fabricant car en ce moment toute les ref de tous les fabricant s affiche ta vu je parle ou tape comme toi merci encore on y est
 
Dernière édition:

dede

XLDnaute Junior
Probleme de list

Bojour a vour tous un peu d aide comment ameliorer mon code pour que le CB02 affiche toute la colonne B
Dim i As Long
Private Sub ComboBox1_Click()
Sheets("BASE").Select
ComboBox2 = Cells(ComboBox1.ListIndex + 2, 2)
TextBox1 = Cells(ComboBox1.ListIndex + 2, 3)
TextBox2 = Cells(ComboBox1.ListIndex + 2, 4)
TextBox3 = Cells(ComboBox1.ListIndex + 2, 5)
TextBox4 = Cells(ComboBox1.ListIndex + 2, 6)
Sheets("MENU").Select
End Sub
Private Sub ComboBox2_Click()
Sheets("BASE").Select
ComboBox1 = Cells(ComboBox1.ListIndex + 2, 1)
TextBox1 = Cells(ComboBox2.ListIndex + 2, 3)
TextBox2 = Cells(ComboBox2.ListIndex + 2, 4)
TextBox3 = Cells(ComboBox2.ListIndex + 2, 5)
TextBox4 = Cells(ComboBox2.ListIndex + 2, 6)
Sheets("MENU").Select
End Sub

Private Sub UserForm_Activate()
For i = 1 To 4
Controls("Textbox" & i) = ""
Next i
End Sub

Private Sub UserForm_Initialize()
With Sheets("BASE"): ComboBox1.List = Range(.[a2], .[a539533].End(xlUp)).Value: End With
With Sheets("BASE"): ComboBox2.List = Range(.[B2], .[B539533].End(xlUp)).Value: End With
End Sub
 
Dernière édition:

dede

XLDnaute Junior
Re : combobox

super merci impec je vais bientot accoucher de mon premier projet en VBA et tu as ete ma sage femme , rapide simple precis pourtant avec une base a 539600 ligne genial et en plus moi je suis du nord on va avoir plus que vous alors le paradis
 

nicolo9

XLDnaute Nouveau
Re : combobox

Bonjour,

La fonction Find est pratique.

Cependant, lorsque l'on ne tape pas la valeur exacte qui se trouve dans la colonne à rechercher, il met le message d'erreur suivant :
Erreur d'éxécution '91' : Variable objet ou variable de bloc With non définie.

Comment permettre à la recherche d'afficher par exemple un MsgBox si le mot recherché ne se trouve pas dans la colonne (ou alors qu'il y a une syntaxe différente).
Pour le MsgBox, par exemple on pourrait avoir :
Code:
MsgBox = "La valeur recherchée ne se situe pas dans le tableau"

Mon code est le suivant :
Code:
Set MyRange = Range("MaValeurCherchée")     'Nom de ma case de recherche
Set x = Sheets(1).Range("A:A").Find(MyRange.Value, , xlValues, xlWhole, , , False)     'Recherche colonne A:A
If Not x Is Nothing Then Range(x.Address).Select     'Place le curseur sur la valeur retrouvée

Ce code est bon mais si j'ai le malheur de taper par exemple : "Reglement" au lieu de "Règlement", le message d'erreur précédent s'affiche.

Merci de votre aide.
 

nicolo9

XLDnaute Nouveau
Re : combobox

Bonjour,

J'ai trouvé la solution :
1/ Dans Feuil1 (Feuil1), écrire :

Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    
        If Not Application.Intersect(Target, Range("MaValeurCherchée")) Is Nothing Then
            Call RechercheValeur
        End If

End Sub

2/ Dans Module 1, écrire :

Code:
Sub RechercheValeur()

Set MyRange = Range("MaValeurCherchée") 'Nom de ma case de recherche
Set x = Sheets(1).Range("A:A").Find(MyRange.Value, , xlValues, xlWhole, , , False) 'Recherche colonne A:A
If Not x Is Nothing Then Range(x.Address).Select 'Place le curseur sur la valeur retrouvée
If x Is Nothing Then MsgBox "La valeur recherchée ne se situe pas dans le tableau"
MyRange.Select

End Sub

Bonne continuation.
 

nicolo9

XLDnaute Nouveau
Re : combobox

Voici la présentation Excel pour comprendre.

RechercheValeur1.png

RechercheValeur2.jpg
 

Pièces jointes

  • RechercheValeur.jpg
    RechercheValeur.jpg
    28.6 KB · Affichages: 34
Dernière modification par un modérateur:

Discussions similaires

Réponses
6
Affichages
248
Réponses
11
Affichages
297

Statistiques des forums

Discussions
312 294
Messages
2 086 902
Membres
103 404
dernier inscrit
sultan87