Sélection d'une piece
jj
-
corentin -
corentin -
Bonjour,
Est ce quelqu'un pourrait m'aider à simplifier ce code svp :
Est ce quelqu'un pourrait m'aider à simplifier ce code svp :
Private Sub ButRechercher_Click() 'compteur ligne et colonne pour aller chercher la désignation Dim l As Integer, c As Integer 'compteur index Dim i, j As Integer i = 0 j = 0 Dim NomFeuille As String Set TabCategorie = Sheets("TABLEAU CATEGORIE") Set dictionnary = Sheets("DICTIONNARY") Dim obj As Object 'variable de type object (ça peut être un type label ou comboBox) Dim inc As Integer 'variable d'incrémentation '##################################### Déclaration des variables de chaque caractéristique d'une piece ########################### 'Dim CAT_NOM(20) As String Dim CAT_NOM_1 As String, CAT_NOM_2 As String, CAT_NOM_3 As String, CAT_NOM_4 As String, CAT_NOM_5 As String Dim CAT_NOM_6 As String, CAT_NOM_7 As String, CAT_NOM_8 As String, CAT_NOM_9 As String, CAT_NOM_10 As String Dim CAT_NOM_11 As String, CAT_NOM_12 As String, CAT_NOM_13 As String, CAT_NOM_14 As String, CAT_NOM_15 As String Dim CAT_NOM_16 As String, CAT_NOM_17 As String, CAT_NOM_18 As String, CAT_NOM_19 As String, CAT_NOM_20 As String 'Dim CAT(20) As Boolean Dim CAT1 As Boolean, CAT2 As Boolean, CAT3 As Boolean, CAT4 As Boolean, CAT5 As Boolean Dim CAT6 As Boolean, CAT7 As Boolean, CAT8 As Boolean, CAT9 As Boolean, CAT10 As Boolean Dim CAT11 As Boolean, CAT12 As Boolean, CAT13 As Boolean, CAT14 As Boolean, CAT15 As Boolean Dim CAT16 As Boolean, CAT17 As Boolean, CAT18 As Boolean, CAT19 As Boolean, CAT20 As Boolean 'Déclaration d'un tableau pour mettre le resultat de la recherche de piece Dim ResultDesignation(1000) As String Dim ResultReference(1000) As String '################################ Code permettant de connaitre la feuille dans laquelle on va chercher des donnéées############################################################################### famille = Range("O1").Value 'Connaitre le nom de la feuille pour aller récupérer les données en fonction de la langue choisie If dictionnary.Range("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 ############################################################ CAT_NOM_1 = ComboBox_CAT_1.Text CAT_NOM_2 = ComboBox_CAT_2.Text CAT_NOM_3 = ComboBox_CAT_3.Text CAT_NOM_4 = ComboBox_CAT_4.Text CAT_NOM_5 = ComboBox_CAT_5.Text CAT_NOM_6 = ComboBox_CAT_6.Text CAT_NOM_7 = ComboBox_CAT_7.Text CAT_NOM_8 = ComboBox_CAT_8.Text CAT_NOM_9 = ComboBox_CAT_9.Text CAT_NOM_10 = ComboBox_CAT_10.Text CAT_NOM_11 = ComboBox_CAT_11.Text CAT_NOM_12 = ComboBox_CAT_12.Text CAT_NOM_13 = ComboBox_CAT_13.Text CAT_NOM_14 = ComboBox_CAT_14.Text CAT_NOM_15 = ComboBox_CAT_15.Text CAT_NOM_16 = ComboBox_CAT_16.Text CAT_NOM_17 = ComboBox_CAT_17.Text CAT_NOM_18 = ComboBox_CAT_18.Text CAT_NOM_19 = ComboBox_CAT_19.Text CAT_NOM_20 = ComboBox_CAT_20.Text '############ Initialisation des compteurs l = 4 c = 3 '######################## test des conditions de sélection par els listes déroulantes ########################################################### While Sheets(NomFeuille).Cells(l, c).Value <> "" CAT1 = Sheets(NomFeuille).Cells(l, c + 1).Text = CAT_NOM_1 Or CAT_NOM_1 = "" CAT2 = Sheets(NomFeuille).Cells(l, c + 2).Text = CAT_NOM_2 Or CAT_NOM_2 = "" CAT3 = Sheets(NomFeuille).Cells(l, c + 3).Text = CAT_NOM_3 Or CAT_NOM_3 = "" CAT4 = Sheets(NomFeuille).Cells(l, c + 4).Text = CAT_NOM_4 Or CAT_NOM_4 = "" CAT5 = Sheets(NomFeuille).Cells(l, c + 5).Text = CAT_NOM_5 Or CAT_NOM_5 = "" CAT6 = Sheets(NomFeuille).Cells(l, c + 6).Text = CAT_NOM_6 Or CAT_NOM_6 = "" CAT7 = Sheets(NomFeuille).Cells(l, c + 7).Text = CAT_NOM_7 Or CAT_NOM_7 = "" CAT8 = Sheets(NomFeuille).Cells(l, c + 8).Text = CAT_NOM_8 Or CAT_NOM_8 = "" CAT9 = Sheets(NomFeuille).Cells(l, c + 9).Text = CAT_NOM_9 Or CAT_NOM_9 = "" CAT10 = Sheets(NomFeuille).Cells(l, c + 10).Text = CAT_NOM_10 Or CAT_NOM_10 = "" CAT11 = Sheets(NomFeuille).Cells(l, c + 11).Text = CAT_NOM_11 Or CAT_NOM_11 = "" CAT12 = Sheets(NomFeuille).Cells(l, c + 12).Text = CAT_NOM_12 Or CAT_NOM_12 = "" CAT13 = Sheets(NomFeuille).Cells(l, c + 13).Text = CAT_NOM_13 Or CAT_NOM_13 = "" CAT14 = Sheets(NomFeuille).Cells(l, c + 14).Text = CAT_NOM_14 Or CAT_NOM_14 = "" CAT15 = Sheets(NomFeuille).Cells(l, c + 15).Text = CAT_NOM_15 Or CAT_NOM_15 = "" CAT16 = Sheets(NomFeuille).Cells(l, c + 16).Text = CAT_NOM_16 Or CAT_NOM_16 = "" CAT17 = Sheets(NomFeuille).Cells(l, c + 17).Text = CAT_NOM_17 Or CAT_NOM_17 = "" CAT18 = Sheets(NomFeuille).Cells(l, c + 18).Text = CAT_NOM_18 Or CAT_NOM_18 = "" CAT19 = Sheets(NomFeuille).Cells(l, c + 19).Text = CAT_NOM_19 Or CAT_NOM_19 = "" CAT20 = Sheets(NomFeuille).Cells(l, c + 20).Text = CAT_NOM_20 Or CAT_NOM_20 = "" '############################ récupération des désignations et des references dans un tableau ################################################## If CAT1 And CAT2 And CAT3 And CAT4 And CAT5 And CAT6 And CAT7 And CAT8 And CAT9 And CAT10 And CAT11 And CAT12 And CAT13 And CAT14 And CAT15 And CAT16 And CAT17 And CAT18 And CAT19 And CAT20 Then ResultDesignation(i) = Sheets(NomFeuille).Cells(l, c).Value ResultReference(j) = Sheets(NomFeuille).Cells(l, c).Offset(0, -2).Value i = i + 1 j = j + 1 End If l = l + 1 Wend '######################### Affichage du résultat de la sélection sur la première page excel ###################################################### Sheets("designation part").Activate Range("A5:B5", Selection.End(xlDown)).Select Selection.ClearContents i = 0 j = 0 If ResultDesignation(i) <> "" Then While ResultDesignation(i) <> "" And ResultReference(j) <> "" Sheets("Designation part").Cells(i + 5, 2).Value = ResultDesignation(i) Sheets("Designation part").Cells(i + 5, 1).Value = ResultReference(j) i = i + 1 j = j + 1 Wend Else MsgBox ("Il n'y a pas de pièce correspondant à votre recherche !") End If 'Mettre les label et combobox a zéro Set obj = Nothing Unload Me Range("A5").Select End Sub
A voir également:
- Sélection d'une piece
- Pièce d'identité - Accueil - Services publics
- Pps pièce jointe ✓ - Forum Thunderbird
- Mesurer une pièce avec son téléphone - Guide
- One piece torrent - Forum Jeux vidéo
- One piece kai streaming ✓ - Forum Cinéma / Télé
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