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 :

InputBox vs Tabulation - Saisie avec douchette d'un datamatrix


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Qualité
    Inscrit en
    Juillet 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien Qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2018
    Messages : 5
    Points : 1
    Points
    1
    Par défaut InputBox vs Tabulation - Saisie avec douchette d'un datamatrix
    Bonjour,

    Tout d’abord, je suis « extra novice » dans la programmation des macros dans VBA … (ça ne commence pas très bien pour vous )

    Je travaille dans le secteur des batteries, et les cellules que nous intégrons arrivent par carton de 22pcs. Sur chacun de ces cartons est apposée une étiquette avec QR code/datamatrix.
    Ce dernier est composé des informations suivantes : numéro de série + « é » + tension (ex : C021802010042é3,7115).

    Aujourd’hui, j’ai écrit une macro de manière à demander à l’opérateur de scanner le datamatrix dans une inputbox, afin de mettre les 22 données dans les cellules « B2-W2 » de ma feuille « Scans ».

    Le problème : dans le datamatrix, chacune des 22 données est séparée par des tabulations horizontales !!! (ex : C021802010042é3,7115 C021802010043é3,7127 C021802010127é3,7168 C021802010045é3,7139 C021802010044é3,7154 …etc.).
    Alors au moment du scan, seule la dernière valeur est prise en compte par mon inputbox et est insérée dans « B2 ».
    J’ai alors essayé de remplacer les tab par des « ; » … sans succès

    Ci-dessous, une ébauche de ma macro …

    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
    Sub QR()
     
    Dim datefab As Date
    datefab = InputBox("Veuillez, s'il vous plaît, indiquer la date de fabrication des cellules sous la forme jj.mm.aaaa", "Introduction de la date de production")
    Sheets("Général").Select
    Sheets("Général").Unprotect
    Range("C" & 2).Value = datefab
     
    Dim code As String
    code = Replace(Application.InputBox("Veuillez, s'il vous plaît, scanner le DataMatrix du carton de cellules ...", "Scan du DataMatrix", Type:=2), vbTab, ";")
    Sheets("Scans").Visible = True
    Sheets("Scans").Select
    Range("B2").Value = code
     
    Sheets("Général").Select
    Sheets("Général").Protect AllowFiltering:=False
     
    End Sub

    Pourriez-vous s’il vous plaît m’éclairer ?
    Vous remerciant par avance.

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 592
    Points : 34 247
    Points
    34 247
    Par défaut
    Salut,

    peux tu nous dire ce qui s'affiche dans la fenêtre d'exécution sur cette ligne stp ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    strinput=Application.InputBox("Veuillez, s'il vous plaît, scanner le DataMatrix du carton de cellules ...", "Scan du DataMatrix", Type:=2)
    Debug.Print strinput
    'code = Replace(strinput, vbTab, ";")
    Je pense que tu n'as pas forcément un vbTab
    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 :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

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

    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
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Qualité
    Inscrit en
    Juillet 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien Qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2018
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Merci pour votre réponse.

    Je pense vraiment que c'était des vbTab car lorsque je fait le même scan sous Word, j'obtiens la capture d'écran ci-dessous (il y a même un saut de ligne à la fin ; cela pourrait-il être l'origine du problème ?) ... je me suis aussi demandé si le nombre de caractères de mon datamatrix n'était pas trop important pour l'inputbox, ici 462 (espaces compris) ... mais je n'ai pas trouvé l'info du nombre max de caractères pour la fonction inputbox.

    Nom : 001.png
Affichages : 536
Taille : 58,7 Ko


    Ci-dessous une capture d'écran en suivant vos instructions (en espérant avoir bien compris):

    Nom : 002.png
Affichages : 519
Taille : 102,1 Ko


    Merci encore.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    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
    sub teste()
    Const DATAOBJECT_BINDING As String = "new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"PressePapier =Application.InputBox("Veuillez, s'il vous plaît, scanner le DataMatrix du carton de cellules ...", "Scan du DataMatrix", Type:=2)
    Range("A2").PasteSpecial xlPasteAll
    
    End Sub
    Public Property Let PressePapier(Value)
        With CreateObject(DATAOBJECT_BINDING)
            .SetText Value
            .PutInClipboard
        End With
    End Property
    *
    Public Property Get PressePapier()
        With CreateObject(DATAOBJECT_BINDING)
            .GetFromClipboard
            PressePapier = .GetText
        End With
    End Property
    Dernière modification par Invité ; 12/07/2018 à 11h04.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Qualité
    Inscrit en
    Juillet 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien Qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2018
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Merci pour votre réponse dysorthographie ...
    J'ai fait un copié-collé de votre proposition dans un module d'un nouveau classeur pour voir comment se présente votre macro ...
    Le débogueur me met "Erreur de compilation / Erreur se syntaxe" ...

    Ai-je fait une erreur en plaçant le code dans un module ?
    Merci.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Oui une légère absence !

    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
     
    Const DATAOBJECT_BINDING As String = "new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"
    sub teste()
    PressePapier =Application.InputBox("Veuillez, s'il vous plaît, scanner le DataMatrix du carton de cellules ...", "Scan du DataMatrix", Type:=2)
    Range("A2").PasteSpecial xlPasteAll
     
    End Sub
    Public Property Let PressePapier(Value)
        With CreateObject(DATAOBJECT_BINDING)
            .SetText Value
            .PutInClipboard
        End With
    End Property
     
    Public Property Get PressePapier()
        With CreateObject(DATAOBJECT_BINDING)
            .GetFromClipboard
            PressePapier = .GetText
        End With
    End Property

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Qualité
    Inscrit en
    Juillet 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien Qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2018
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Merci pour vos efforts pour répondre à mon problème.
    J'ai inscris votre code dans le module d'un nouveau classeur pour voir les effets de votre macro avant de l'intégrer à la mienne ...
    Malheureusement cela ne fonctionne pas ... seule une valeur s'affiche dans B2 ...

    Nom : 2018-07-17 07_31_39-Microsoft Visual Basic pour Applications - Classeur1 - [Module1 (Code)].png
Affichages : 452
Taille : 21,4 KoNom : 2018-07-17 07_34_30-Classeur1 - Excel.png
Affichages : 473
Taille : 4,9 Ko

    Merci encore.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Qualité
    Inscrit en
    Juillet 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien Qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2018
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Quelqu'un aurait-il une autre idée pour la résolution de mon problème ?
    Par avance merci beaucoup.

    Cordialement.

Discussions similaires

  1. [MySQL] Affichage lors de saisie avec la douchette code barre
    Par chrishess dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/04/2012, 01h57
  2. interagir en saisie avec un programme externe ?
    Par ctobini dans le forum Langage
    Réponses: 12
    Dernier message: 27/09/2005, 18h02
  3. Problème de saisie avec le "."
    Par Pouf dans le forum ASP
    Réponses: 10
    Dernier message: 18/03/2005, 15h27
  4. Aide à la saisie avec liste déroulante
    Par Oluha dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 01/02/2005, 09h04
  5. [FLASH MX2004] Zone de saisie avec scrollbar
    Par carlito dans le forum Flash
    Réponses: 3
    Dernier message: 29/11/2004, 14h30

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