• Initiateur de la discussion Initiateur de la discussion dede
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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???
 
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
 
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
 
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+
 
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:
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:
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
 
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.
 
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.
 
Re : combobox

Voici la présentation Excel pour comprendre.

RechercheValeur1.png

RechercheValeur2.jpg
 

Pièces jointes

  • RechercheValeur.jpg
    RechercheValeur.jpg
    28.6 KB · Affichages: 37
Dernière modification par un modérateur:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
201
Réponses
10
Affichages
282
Réponses
5
Affichages
241
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
481
Réponses
3
Affichages
194
Réponses
5
Affichages
183
Réponses
8
Affichages
233
Retour