Correction code Recherche VBA
bonjour a tous,
je viens vers vous car je ne comprends pas mon erreur.
j'ai regardé plusieurs fois le codes mais je n'arrive pas a voir l'erreur.
J'ai plusieurs feuilles dans mon classeur ( gestion de stock ), je souhaite faire une recherche en fonction de la feuille.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
| Option Explicit
Dim WS As Worksheet 'Variable pour un Objet Worksheet en PUBLIC pour tous les Controls de ce UserForm
Dim ChoixOuiNon As String
Private Sub OptionButton1_Click()
If OptionButton1 = True Then ChoixOuiNon = "Consommable Divers"
Ini
End Sub
Private Sub OptionButton2_Click()
If OptionButton2 = True Then ChoixOuiNon = "Produit Chimique"
Ini
End Sub
Private Sub OptionButton3_Click()
If OptionButton3 = True Then ChoixOuiNon = "Outillage elec_pneum"
Ini
End Sub
Private Sub OptionButton4_Click()
If OptionButton4 = True Then ChoixOuiNon = "Outillage a main"
Ini
End Sub
Private Sub OptionButton5_Click()
If OptionButton5 = True Then ChoixOuiNon = "E.P.I."
Ini
End Sub
Private Sub OptionButton6_Click()
If OptionButton6 = True Then ChoixOuiNon = "consommable Composite"
Ini
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub Ini()
Dim PageRefRecherche As String
Dim ctrl As Control 'Variable pour la collection des controls
Dim L As Integer 'Variable pour connaitre le numéro de derniere ligne
Dim i As Integer 'Variable pour connaitre incrémenter les Data
'On Vide tous les Controls
For Each ctrl In Me.Controls
If TypeOf ctrl Is MSForms.Label Then ctrl = ""
PageRefRecherche = ChoixOuiNon
Next ctrl
Me.ComboBox1.Clear 'On vide les précédentes données
Set WS = ThisWorkbook.Sheets(PageRefRecherche) 'On identifie l'objet pour la feuille de travail
L = WS.Range("A65536").End(xlUp).Row 'On identifie la dernière ligne en partant du bas
'Pour éviter les fash d'écran pour le select ci dessous
Application.ScreenUpdating = False
WS.Select 'On sélectionne la feuille sinon bug si elle ne l'est pas
For i = 2 To L 'Boucle départ 2 (Ligne 2 de la feuille, jusqu'à dernière
With Me.ComboBox1 'Avec la ComboBox1
.AddItem WS.Range("A" & i) 'On ajoute dans la ComboBox toutes les valeurs, cellules après cellules
End With
Next i 'Next pour poursuivre la boucle pour le i suivant
Application.ScreenUpdating = True
End Sub
Private Sub CommandButton1_Click()
Dim PageRefRecherche As String
Dim X, occurence As Integer
Dim R As Range
Dim ligne As Long
Dim trouve As Boolean 'déclare la variable trouvé
PageRefRecherche = ChoixOuiNon
If ComboBox1.Value <> "" Then
ThisWorkbook.Sheets("Recherche").Range("A2:H" & ThisWorkbook.Sheets("Recherche").Range("A:A").End(xlDown).Row).ClearContents
trouve = False
occurence = 0
ligne = 1
'=======================================================
'Recherche parmi les numéro de lots client dans adhesif
'=======================================================
Set R = ThisWorkbook.Sheets(PageRefRecherche).Range("A:A").Find(what:=ComboBox1.Value, LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlNext)
If Not R Is Nothing Then 'condition si au moins une occurrence trouvée
trouve = True
For Each R In ThisWorkbook.Sheets(PageRefRecherche).Range("A65536:A" & ThisWorkbook.Sheets(PageRefRecherche).Range("A:A").End(xlDown).Row)
If R.Text = ComboBox1.Value Then
With ThisWorkbook
occurence = occurence + 1
ligne = ligne + 1
.Sheets("Recherche").Range("A" & ligne).Value = .Sheets(PageRefRecherche).Range("A" & R.Row).Value
.Sheets("Recherche").Range("B" & ligne).Value = .Sheets(PageRefRecherche).Range("B" & R.Row).Value
.Sheets("Recherche").Range("C" & ligne).Value = .Sheets(PageRefRecherche).Range("C" & R.Row).Value
.Sheets("Recherche").Range("D" & ligne).Value = .Sheets(PageRefRecherche).Range("D" & R.Row).Value
.Sheets("Recherche").Range("E" & ligne).Value = .Sheets(PageRefRecherche).Range("E" & R.Row).Value
.Sheets("Recherche").Range("F" & ligne).Value = .Sheets(PageRefRecherche).Range("F" & R.Row).Value
.Sheets("Recherche").Range("G" & ligne).Value = .Sheets(PageRefRecherche).Range("G" & R.Row).Value
.Sheets("Recherche").Range("H" & ligne).Value = .Sheets(PageRefRecherche).Range("H" & R.Row).Value
End With
End If
Next R
occurence = 0
End If
end if
End Sub |
si besoin demandez moi de plus amples informations.
cordialement
Pexou