2 réponses
Bonjour jj,
Je propose ce code VBA :
Merci de me dire si ça te convient.
Cordialement
Je propose ce code VBA :
Option Explicit Private Sub ButRechercher_Click() Dim TabCategorie As Worksheet, dictionnary As Worksheet, NomFeuille As String Dim obj As Object ' variable de type object (ça peut être un type label ou comboBox) Dim l As Long, c As Integer ' ligne et colonne, pour la désignation Dim i As Long, j As Integer ' compteurs index (déjà à 0) '#################################### Déclaration des variables de chaque caractéristique d'une piece ########################### Dim CAT_NOM(1 To 20) As String, CAT(1 To 20) As Boolean Dim flag As Boolean ' servira uniquement pour tester si tous les CAT(i) sont à VRAI Dim ResultDesignation(1000) As String ' pour le résultat de la recherche de pièce Dim ResultReference(1000) As String Dim famille As Long Set TabCategorie = Worksheets("TABLEAU CATEGORIE") Set dictionnary = Worksheets("DICTIONNARY") '############################ Code permettant de connaitre la feuille dans laquelle on va chercher des donnéées################## famille = [O1] 'Connaitre le nom de la feuille pour aller récupérer les données en fonction de la langue choisie If dictionnary.[L1] = 2 Then NomFeuille = TabCategorie.Cells(3 + famille, 2).Text Else NomFeuille = dictionnary.Cells(3 + famille, 4).Text End If '################### variable relié au resultat de la combobox ############################################################ For i = 1 To 20 CAT_NOM(i) = Controls("ComboBox_CAT_" & i).Text ' peut-être faudra-t-il mettre : Me.Controls().Text Next i '############ Initialisation des compteurs l = 4: c = 3 '######################## test des conditions de sélection par les listes déroulantes ########################################################### With Worksheets(NomFeuille) While .Cells(l, c) <> "" flag = True ' d'abord, on suppose que tous les CAT(i) sont à VRAI For i = 1 To 20 CAT(i) = (.Cells(l, c + i).Text = CAT_NOM(i)) Or CAT_NOM(i) = "" If Not CAT(i) Then flag = False ' si un CAT(i) est FAUX : flag devient False Next i '############################ récupération des désignations et des references dans un tableau ################################# If flag Then ' si flag est vrai (True), tous les CAT(i) sont à VRAI ResultDesignation(i) = .Cells(l, c): ResultReference(j) = .Cells(l, c).Offset(0, -2) i = i + 1: j = j + 1 End If l = l + 1 Wend End With '######################### Affichage du résultat de la sélection sur la première page excel ###################################################### With Worksheets("Designation part") .Activate ' l : dernière ligne, selon la colonne A l = Range("A" & Rows.Count).End(xlUp).Row Range("A5:B" & l).ClearContents i = 0: j = 0 If ResultDesignation(i) <> "" Then While ResultDesignation(i) <> "" And ResultReference(j) <> "" .Cells(i + 5, 2) = ResultDesignation(i) .Cells(i + 5, 1) = ResultReference(j) i = i + 1: j = j + 1 Wend Else MsgBox "Il n'y a pas de pièce correspondant à votre recherche !" End If End With 'Mettre les label et combobox a zéro Set obj = Nothing: Unload Me: [A5].Select End Sub
Merci de me dire si ça te convient.
Cordialement
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
Modifié le 26 juil. 2017 à 17:12
Modifié le 26 juil. 2017 à 17:12
Bonjour JJ, bonjour le forum,
Que signifie cette ligne ?
Ça va renvoyer [Vrai] ou [Faux] non ?!...
À plus,
ThauTheme
Que signifie cette ligne ?
CAT1 = Sheets(NF).Cells(l, c + 1).Text = CAT_NOM_1 Or CAT_NOM_1 = ""
Ça va renvoyer [Vrai] ou [Faux] non ?!...
À plus,
ThauTheme