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 :

Douchette et Textbox [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Par défaut Douchette et Textbox
    Bonjour,

    J'ai une question concernant une douchette et une textbox:

    je voulais savoir si il était possible de récupérer un événement qui différencierait une entrée manuelle d'une entrée par la douchette?

    En effet j'ai un autotab sur mon textbox une fois qu'il contient 10 caractères: Le code scanné par la douchette contient bien plus de caractères et c'est les 10 derniers qui m'intéressent.
    or comme je ne veux pas perdre l'autotab du textbox, je me demandais si je pouvais récupérer l'évènement de la douchette ou alors une info qui ferait la différence entre une entrée manuelle d'une entrée automatique afin que je puisse traiter l'entrée automatique en amont?
    Car actuellement si je scanne mon code, l'userform se ferme directement et je ne sais pas pourquoi...
    il y a un évènement sortie de textbox qui est le suivant:

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Private Sub TextBox_Lot_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If TextBox_Lot.Value = "" Then
        X = MsgBox("Le format du numéro de lot saisi n'est pas valide", vbExclamation)
        Cancel = True
    End If
    Me.MultiPage1.Enabled = True
    With ThisWorkbook.Worksheets("Test")
        .Range("B3:B200").NumberFormat = "0"
        If .AutoFilterMode = True Then .AutoFilterMode = False
        Set C = .Range("B3:B200").Find(TextBox_Lot.Value, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
        '____________________________________
        ' Si le lot est déjà dans la liste
        If Not C Is Nothing Then
            n = C.Row
            TextBox_Lot.ForeColor = &HC000&
            '____________________________________
            ' Affichage des données stérilité
            If .Cells(n, 14).Value <> "" And .Cells(n, 15).Value <> "" Then
                TextBox_JF_Ste.Value = Left(.Cells(n, 14).Value, 5)
                TextBox_HF_Ste.Value = FormatDateTime(TimeValue(.Cells(n, 14)), vbShortTime)
                ComboBox_Visa_Ste.Value = .Cells(n, 15).Value
            End If
            TextBox_Comment_Ste.Value = .Cells(n, 16).Value
            '____________________________________
            ' Affichage des données activité
            If .Cells(n, 21).Value <> "" And .Cells(n, 22).Value <> "" Then
                TextBox_JF_Act.Value = Left(.Cells(n, 21).Value, 5)
                TextBox_HF_Act.Value = FormatDateTime(TimeValue(.Cells(n, 21)), vbShortTime)
                ComboBox_Visa_Act.Value = .Cells(n, 22).Value
            End If
            TextBox_Comment_Act.Value = .Cells(n, 23).Value
            '____________________________________
            ' Affichage des données acceptation
            If .Cells(n, 24).Value <> "" And .Cells(n, 25).Value <> "" And .Cells(n, 26).Value <> "" Then
                If .Cells(n, 24).Value = "O" Then CheckBox_Doss_C.Value = True
                If .Cells(n, 24).Value = "N" Then CheckBox_Doss_NC.Value = True
                TextBox_JF_Acc.Value = Left(.Cells(n, 25).Value, 5)
                TextBox_HF_Acc.Value = FormatDateTime(TimeValue(.Cells(n, 25)), vbShortTime)
                ComboBox_Visa_Acc.Value = .Cells(n, 26).Value
            End If
            TextBox_Comment_Acc.Value = .Cells(n, 27).Value
            '____________________________________
            ' blocage des champs si pas activité/stérilité
            If .Cells(n, 10).Value = "N" Then Me.MultiPage1.page2.Enabled = False
            If .Cells(n, 17).Value = "N" Then Me.MultiPage1.page1.Enabled = False
        End If 'end if si lot déjà dans la liste
    fin:
    End With
    End Sub
    Merci d'avance et bonne journée

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    si je ne dis pas de betise, la lecture de code barre ne declenche pas certains evenements, au contraire de l'insertion par clavier. Tu pourrais utiliser une variable de type boolean pour gerer l'activation ou non par douchette.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre chevronné
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Par défaut
    Bonjour et merci pour ta réponse,

    justement c'est ce que je pense faire une variable de type boolean mais du coup sur quoi s'appuyer pour la mettre à true ou false? c'est là tout mon problème...

    est ce que l'ajout par douchette ajoute comme un clavier chiffre après chiffre ou Est-ce qu'elle ajoute tout d'un seul bloque comme un copier-coller?

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    A toi de mettre des bouts de code sur les evenements Change et AfterUpdate par exemple + KeyDown.

    Des msgbox ou des debug.print, qui devraient te donner matiere a en deduire tout cela.

    Attention au cas ou apres le keydown tu as une longueur de texte = 0 => reinitialisation de ta variable =]
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    je me demandais si je pouvais récupérer l'évènement de la douchette ou alors une info qui ferait la différence entre une entrée manuelle d'une entrée automatique afin que je puisse traiter l'entrée automatique en amont?
    Ce qu'une douchette envoie est programmable non pas par VBA mais au niveau de la douchette (par exemple envoyer un Carriage Return LineFeed).
    Ensuite comme l'a très bien expliqué Jen-Philippe que je salue au passage, tu interceptes l'événement à l'aide du VBA
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    La douchette ce comporte comme ton clavier.

    Sur contrôle l'vêtement keypressed tu testes le chr(13) fin de ligne!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Sub textbox_KeyPress(KeyAscii As Integer) 
    If KeyAscii =13 then

  7. #7
    Membre chevronné
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Par défaut
    Bonjour à tous et merci infiniement

    J'en apprends tous les jours grâce à vous

    Je sais grâce à Phillipe ce que signifie vbcrlf par exemple

    Merci également à Robert pour les keyascii dont je n'avais jamais travaillé dessus

    bonne journée à tous

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

Discussions similaires

  1. [XL-2007] Utilisation d'une douchette avec un textbox
    Par jedwiller dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/08/2015, 15h42
  2. [VB.NET] Sauvegarde dans TextBox des logons utilisés
    Par stephane93fr dans le forum ASP.NET
    Réponses: 3
    Dernier message: 27/10/2005, 11h00
  3. Réponses: 2
    Dernier message: 08/04/2004, 11h11
  4. Réponses: 3
    Dernier message: 25/03/2004, 11h35
  5. [VB6] [Interface] ScrolBar & TextBox
    Par DarkVader dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 25/10/2002, 18h40

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