Re : retrouver une valeur en fonction d'une autre VBA
A force de lire, je fais mieux je pense.
J'ai suivi ce que vous m'avez dit, pour la variable globale (et je comprend son sens maintenant) le btnValider aussi. Je pense que j'ai bien placé le EndIf,car ça fonctionne.
1- Seul dans le cbxréf change , le btnValider.caption = "modifier" fonctionne, mais pas celui de "ajouter"
J'ai fait un If aussi : il faut peut-être faire autrement?
2- pour L= Lcou +1 , Sans changement, je vois bien qu'il y a des décalages oui, mais je ne sais pas ce que vous entendez par "référencer dans le classeur les noms de colonnes à partir de la ligne 2", (pouvez vous me donner un exemple?)
3- Les données quand on les modifie ou quand on ajoute une ligne, ne s'actualise pas dans la liste. seulement si je ferme l'userform et réouvre. Vous m'en avez parlé dans un précédent message. Mais je ne sais pas comment faire?
4- Dans la liste déroulante de la combobox, est-il possible d'empêcher la saisie automatique. Je m'explique, quand on veut faire une recherche par exemple, soit j'utilise la liste en déplaçant le curseur sur le code voulu (ça c'est bon). Mais quand je veut le taper moi même, il affiche déjà une donnée après avoir saisi juste une lettre et ça fausse ma saisie.
ANC3, ANC4, ANC5, ANC6, ANC7, ANC8, ANC9,ANC10, ANC11 ….ANC67, si je veux taper ANC67, je tape le A et directement il met ANC3… du coup, je ne peut pas saisir manuellement ANC67, et l'userform indique tout de suite les données pour ANC3 et ne s'actualise pas avec les bonnes données de ANC67, y'a t-il une solution? merci
Option Explicit
Dim RgTI As Range ' Variable globale de type Range'
Dim LCou As Long
Private Sub UserForm_Initialize()
Set RgTI = [TABLE_INDEX]
Cbxréf.List = RgTI.Columns(1).Value
End Sub
Private Sub CbxRéf_Change()
Dim Genre As String, Cultivar As String, Espèce As String, Variété As String, RéfFic As String
If Cbxréf.ListIndex < 0 Then Exit Sub
If LCou = 0 Then
BtnValider.Caption = "Ajouter"
End If
BtnValider.Caption = "Modifier"
LCou = Cbxréf.ListIndex + 1
Genre = RgTI(LCou, "D").Value
Espèce = RgTI(LCou, "E").Value
Variété = RgTI(LCou, "G").Value
Cultivar = RgTI(LCou, "H").Value
RéfFic = RgTI(LCou, "I").Value
TbxGENRE.Text = Genre
TbxESP.Text = Espèce
TbxVAR.Text = Variété
TbxCULTI.Text = Cultivar
On Error Resume Next
'Image1.Picture = LoadPicture(RéfFic)
End Sub
Private Sub BtnValider_Click()
Dim PlgT As Range
Set PlgT = Feuil1.[TABLE_INDEX]
If LCou = 0 Then
LCou = PlgT.Rows.Count
PlgT.Rows(LCou).Copy
PlgT.Rows(LCou).Insert xlShiftDown
PlgT.Rows(LCou + 1).ClearContents
Application.CutCopyMode = False
LCou = PlgT.Rows(LCou).Row
End If
Feuil1.Range("CODE").Rows(LCou + 1).Value = Cbxréf.Text
Feuil1.Range("GENRE").Rows(LCou + 1).Value = TbxGENRE.Text
Feuil1.Range("ESPECE").Rows(LCou + 1).Value = TbxESP.Text
Feuil1.Range("VARIETE").Rows(LCou + 1).Value = TbxVAR.Text
Feuil1.Range("CULTIVAR").Rows(LCou + 1).Value = TbxCULTI.Text
Cbxréf.Text = ""
TbxGENRE.Text = ""
TbxESP.Text = ""
TbxVAR.Text = ""
TbxCULTI.Text = ""
End Sub
Private Sub BtnQ_Click()
Unload Me
End Sub