Bonjour
Ravi que cela te convienne j’avais un doute
Pour le code voici son fonctionnement
Pour cibler la cellule dont on doit récupérer la donnée 2 variables :
Lig qui cible le numéro de la ligne
Col qui cible le numéro de la colonne
Dans une première partie en amont qui cible le numéro de la ligne avec la variable Lig
Si celle-ci a été trouvée :
If Lig > 0 Then
je lance la procédure pour déterminer le numéro de la colonne
Pour cela je mets la variable concernée à 0
Col = 0
Puis avec la ligne de code qui suit sur la ligne 1 je cherche la valeur choisie dans la Combobox1 et de récupérer le numéro de la colonne
Sheets(« Feuil1 »).Rows(« 1:1 »).Find
onglet Feuil1 ligne 1 cherche
What:=ComboBox1
Quoi : la valeur de la Combobox1
After:=Sheets(« Feuil1 »).Range(« A1 »)
Aprés la cellule A1 de l’onglet Feuil1
LookIn:=xlValues
A scruter les valeurs des cellules
LookAt:=xlWhole
Chercher la donnée intégrale ni plus ni moins
à l’inverse il aurait fallu mettre :
LookAt:=xlPart
on aurait chercher une partie dans les données scrutées
.Column
de relever le numéro de la colonne
Si celui-ci est trouvé elle est affectée à la variable Col :
Col = Sheets(« Feuil1 »).Rows(« 1:1 »).Find(What:=ComboBox1, _
After:=Sheets(« Feuil1 »).Range(« A1 »), LookIn:=xlValues, LookAt:=xlWhole).Column
Petite précision qui a son importance si la donnée n’est pas trouvée car inexistante cela provoque un Bug
C’est pour cela qu’il faut rajouter une instruction juste avant pour l’éviter si les recherches avec cette commande sont aléatoires du fait des données à rechercher
Juste avant il faut mettre cette ligne de code :
On Error Resume next
Qui a pour but de faire progresser le traitement même si la donnée n’est pas trouvée et ce sans bug ni interruption
Je ne l’ai pas mise et j’ai été confronté à cette situation avec la donnée « Huile » car sur la ligne 1 de l’onglet Feuil1 c’est « Huiles » avec un « s »
Si toutes les données dans la Combobox1 sont en ligne 1 onglet Feuil1 écrites à l’identiques cette parade est inutile voir handicapante car elle occulte toute autre anomalie de code qui suit hypothéquant le résultat final sans aucune alerte ce qui est dommageable pour sa compréhension
Si la variable Col a une valeur autre que 0 donc la donnée de la Combobox1 a été trouvé avec le numéro de sa colonne
If Col > 0 Then
si la donnée de la Combobox1 est « Huiles » ou « Acrylique »
If ComboBox1 = « Huiles » Or ComboBox1 = « Acrylique » Then
j’analyse la donnée de la Combobox2 et de la Combobox3 :
If ComboBox2 < 50 Or ComboBox3 < 60 Then
Si Combobox2 et inférieur à 50 ou Combobox3 inférieur à 60 alors j’affecte à la variable Col la valeur 2 sinon la valeur 3 (Colonne B sinon Colonne C)
Col = 2
Else
Col = 3
A la fin de cet ensemble de lignes de code j’ai déterminé la variable Lig et la variable Col donc j’ai ciblé avec ces 2 variables la ligne et la colonne de la cellule dont on doit récupérer la donnée à mettre dans le TextBox1 du formulaire :
UserForm1.TextBox1.Value = Sheets(« Feuil1 »).Cells(Lig, Col).Value
J’espère avoir été claire dans ces explications
Si tu souhaites d’autres précisions à ta disposition