Microsoft 365 Problème de frappe intuitive dans combobox

frasylest

XLDnaute Nouveau
Bonjour à tous, j'ai un fichier pour ma collection de dés à coudre, et le souci est dans MODIFIER, quand je fais la recherche de l'objet si je fais une erreur dans le nom j' obtiens un message d'erreur alors que dans les autres onglets je n'ai pas de souci.. Le fichier joint sera plus parlant. Merci d'avance, Sylvain
 

Pièces jointes

  • Collection-essai.xlsm
    380.3 KB · Affichages: 20
Solution
Bonjour Frasylest et bienvenu, bonjour le forum,

Tu définis la ligne Lig en fonction de la propriété ListIndex de la combobox CboTitre au changement de celle-ci. Cela veut dire que si tu tapes une lettre qui fait que le mot m'existe pas dans la liste, cela provoque une erreur.
Essaie en remplaçant le code par celui-ci qui prend en compte cette possibilité :

VB:
Private Sub CboTitre_Change()

Dim i As Integer, col As Long, Lig As Long
' Numéro de ligne = Entête tableau 1 + Choix dans la liste + 1 car commence à 0
Lig = 1 + Me.CboTitre.ListIndex + 1
With Sheets("collection")
    Me.TextBoxboite = IIf(Me.CboTitre.ListIndex = -1, "", .Range("C" & Lig))
    Me.TextBoxetage = IIf(Me.CboTitre.ListIndex = -1, ""...

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Frasylest et bienvenu, bonjour le forum,

Tu définis la ligne Lig en fonction de la propriété ListIndex de la combobox CboTitre au changement de celle-ci. Cela veut dire que si tu tapes une lettre qui fait que le mot m'existe pas dans la liste, cela provoque une erreur.
Essaie en remplaçant le code par celui-ci qui prend en compte cette possibilité :

VB:
Private Sub CboTitre_Change()

Dim i As Integer, col As Long, Lig As Long
' Numéro de ligne = Entête tableau 1 + Choix dans la liste + 1 car commence à 0
Lig = 1 + Me.CboTitre.ListIndex + 1
With Sheets("collection")
    Me.TextBoxboite = IIf(Me.CboTitre.ListIndex = -1, "", .Range("C" & Lig))
    Me.TextBoxetage = IIf(Me.CboTitre.ListIndex = -1, "", .Range("D" & Lig))
    Me.TextBoxposition = IIf(Me.CboTitre.ListIndex = -1, "", .Range("E" & Lig))
    Me.TxbDept.Value = IIf(Me.CboTitre.ListIndex = -1, "", .Range("F" & Lig))
    Me.LblCP = IIf(Me.CboTitre.ListIndex = -1, "", .Range("G" & Lig))
    Me.LblRegion = IIf(Me.CboTitre.ListIndex = -1, "", .Range("H" & Lig))
    Me.TxbMat = IIf(Me.CboTitre.ListIndex = -1, "", .Range("I" & Lig))
    Me.TxbPart = IIf(Me.CboTitre.ListIndex = -1, "", .Range("J" & Lig))
    Me.TxbDescriptif.Value = IIf(Me.CboTitre.ListIndex = -1, "", .Range("K" & Lig))
    Me.TxbProvenance.Value = IIf(Me.CboTitre.ListIndex = -1, "", .Range("P" & Lig))
    Photo1 = IIf(Me.CboTitre.ListIndex = -1, "", .Range("L" & Lig))
    If Me.CboTitre.ListIndex <> -1 Then Me.ImgPhoto1.Picture = LoadPicture(Photo1)
    Photo2 = IIf(Me.CboTitre.ListIndex = -1, "", .Range("M" & Lig))
    If Me.CboTitre.ListIndex <> -1 Then Me.ImgPhoto2.Picture = LoadPicture(Photo2)
    Photo3 = IIf(Me.CboTitre.ListIndex = -1, "", .Range("N" & Lig))
    If Me.CboTitre.ListIndex <> -1 Then Me.ImgPhoto3.Picture = LoadPicture(Photo3)
    Me.TxbDouble = IIf(Me.CboTitre.ListIndex <> -1, "", .Range("O" & Lig))
End With
End Sub
 

frasylest

XLDnaute Nouveau
Bonsoir Robert, merci merci énormément et infiniment, mon niveau en vba n'est pas assez poussé et je n'aurai jamais trouvé tout seul. J'ai testé et tout fonctionne impeccable. Comme cela fait longtemps que je n'étais pas venu poser une question, je ne sais plus comment on insère le signe pour dire que la discussion est résolue. Bonne soirée, au plaisir
 

Discussions similaires

Réponses
12
Affichages
361
Réponses
14
Affichages
358

Statistiques des forums

Discussions
315 127
Messages
2 116 497
Membres
112 765
dernier inscrit
SIDIANW