IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Détecter si la donnée d'une TextBox existe déjà dans la première colonne d'une ListBox [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 227
    Par défaut Détecter si la donnée d'une TextBox existe déjà dans la première colonne d'une ListBox
    Bonjour à tous,

    j'ai cherché mais sans succès un code qui détecterait qu'une donnée entrée dans une textBox existe déjà dans la listebox de mon formulaire VBA

    avec une MsgBox "Le numéro de lot existe déjà dans la liste"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub txtNoLot_AfterUpdate()
    Dim nbControles As Integer
    Dim NbItem As Integer
    Dim DateEnter As Date
     
    nbControles = 4
    DateEnter = Now()
     
    Me.ListLots.AddItem txtNoLot
    NbItem = Me.LstLots.ListCount - 1
    'on charge les contrôles dans la liste
    Me.ListLots.List(NbItem, 1) = Me.txtNoEtiquette
    Me.ListLots.List(NbItem, 2) = Me.txtNoPalette
    Me.ListLots.List(NbItem, 3) = DateEnter
     
    Exit Sub
    Auriez-vous des idées ?

    Merci.

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Essayez ceci, (pas testé de mon côté)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        For i = 0 To ListLots.ListCount - 1
            If ListLots.Selected(i) = TextBox.Value Then
                MsgBox "Le numéro de lot existe déjà dans la liste"
            End If
        Next
    Cdlt

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 227
    Par défaut
    Merci pour votre aide.

    Malheureusement, la MsgBox s'affiche à chaque fois :que l'entrée est bien différente et même quand la liste est vide.

  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Oui mais, j'ai fait court, puisque vous aviez demandé "si nous avions des idées", pensant que vous l'adapteriez à votre code. On pourrait le compléter comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if NbItem <>"" then 
        For i = 0 To ListLots.ListCount - 1
            If ListLots.Selected(i) = TextBox.Value Then
                MsgBox "Le numéro de lot existe déjà dans la liste"
               exit for
            End If
        Next
    end if

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 227
    Par défaut
    je le positionne peut-être mal.

    Le message s'affiche toujours même si la valeur est différente.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Private Sub txtNoLot_AfterUpdate()
    On Error Resume Next
    Dim nbControles As Integer
    Dim NbItem As Integer
    Dim DateEnter As Date
     
    nbControles = 4
    DateEnter = Now()
     
    If NbItem <> "" Then
        For i = 0 To ListLots.ListCount - 1
            If ListLots.Selected(i) = txtNoLot.Value Then
                MsgBox "Le numéro de lot existe déjà dans la liste"
               Exit For
            End If
        Next
    End If
     
    Me.LstLots.AddItem txtNoLot
    NbItem = Me.LstLots.ListCount - 1
    'on charge les contrôle dans la liste
    Me.LstLots.List(NbItem, 1) = Me.txtNoEtiquette
    Me.LstLots.List(NbItem, 2) = Me.txtNoPalette
    Me.LstLots.List(NbItem, 3) = DateEnter
     
     
    End Sub

  6. #6
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Comme je n'ai pas de fichier à disposition, je ne peux pas tester.
    Mettez un point d'arrêt (avec F9) devant la ligne 10 "If NbItem <> "" Then" et avancez en faisant du pas à pas avec la touche F8 et passez la souris au-dessus des éléments du code "NbItem", "ListLots", etc ..., essayez d'analyser ce que cela signifie et ce que vous voyez vous paraît-il cohérent? donnez-moi les valeurs que vous voyez au premier passage.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Comment transférer les données d'une ListBox vers une TextBox
    Par TSAFACK-M dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/11/2016, 10h00
  2. renvoi de données d'une listbox
    Par jpenja dans le forum VB.NET
    Réponses: 3
    Dernier message: 14/08/2007, 15h31
  3. Réponses: 12
    Dernier message: 08/05/2006, 14h57
  4. Réponses: 16
    Dernier message: 21/03/2006, 00h21
  5. source de données d'une listbox?
    Par gdkenny dans le forum ASP.NET
    Réponses: 5
    Dernier message: 09/03/2006, 18h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo