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

VBA Word Discussion :

Macro pour code barre


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 16
    Points : 4
    Points
    4
    Par défaut Macro pour code barre
    Bonjour à tous,
    ce site m'est souvent très utile pour avancer mais là je bloque :

    je souhaite afficher un code barre 128 dans un doc word, code barre qui sera mis à jour automatiquement après avoir saisi des champs variables.

    L'utilisation de la police Barcode 128 ne permet d'obtenir un code lisible avec un scanner, il semble nécessaire de passer par du code ASCII.
    J'ai donc ma ligne de texte+chiffres dans une zone de texte, je souhaite qu'elle se convertisse automatiquement en ASCII (en utilisant par exemple ce code de GrandZebu http://grandzebu.net/index.php?page=/informatique/codbar-en/code128.htm ) et lui appliquer ensuite la police Barcode 128 pour obtenir enfin un code barre lisible...

    je bidouille mais là je n'arrive à aucun résultat ! HELP PLEASE

    Exemple de ce que je veux transformer en code barre lisible :
    (01)03700757200001(17)121206(10)AATEST
    (où 121206 est un champ "date" qui varie en fonction du jour et AATEST est un champ saisi au préalable)...

    merci d'avance aux pros !

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Pourquoi passer par une macro ?

    As-tu essayé de simplement appliquer la police au texte souhaité ?
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    bonjour l'heureux, merci pour ta réponse,

    appliquer la police directement était ma première solution mais j'ai vite déchanté, les scanners ne peuvent pas lire les codes barres ainsi créés, c'était trop simple pour être vrai ...

    C'est pour ça que le passage par du code ASCII semble inévitable ... et donc c'est là que je bloque ...

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Certains lecteurs n'ont pas besoin de passer par une transformation, ou du moinsle logiciel qui utilise la lecture.

    Je ne comprend pas ce qui te bloque, la fonction donnée surle site que tu mentionnes fonctionne.

    Pour la chaîne que tu donne en exemple, j'obtiens ceci :

    Ñ(01)Ì#f'Y4 !Í(17)Ì,,&Í(10)AATESTfÓ
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    j'ai testé 3 lecteurs (3 endroits différents), code illisible à chaque fois...

    Effectivement la macro fonctionne, avec Excel aucun souci.

    J'aimerais donc qu'elle s'applique automatiquement au contenu d'une zone de texte dans word et c'est là où je suis bloqué ... (je découvre les macros sous word)... je suis perdu dans le code à écrire ...

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Je l'ai utilisée dans Word et pas dans Excel.

    On a l'endroit où tu souhaites écrire le texte.

    Comment inséres-tu le texte ?
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    hello l'heureux,

    je souhaite que le code barre apparaisse dans une zone de texte (le texte d'origine est fixe à 90%, les autres 10% sont modifiés par un champ ASK/REF.

    En fait je ne vois pas comment appliquer le code de grandzebu à cette zone de texte et ensuite lui appliquer le police barcode 128 ... le tout de façon automatique.

    merci pour le temps que tu me consacres

  8. #8
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Citation Envoyé par clakass Voir le message
    je souhaite que le code barre apparaisse dans une zone de texte (le texte d'origine est fixe à 90%, les autres 10% sont modifiés par un champ ASK/REF.
    Les premiers 90% sont où, sont-ils déjà dans la zone de texte ?
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    oui, tout ce que je veux transformer en code barre est dans la zone de texte (le fixe et le variable).
    J'ai bien évidemment du texte et d'autres objets ailleurs dans le document.

    J'espère être assez clair pour te donner des pistes.merci

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    Hello l'heureux,

    je viens de voir que tu avais déjà apporté pas mal de réponses sur cette page : http://www.developpez.net/forums/d10...ction-vb-word/

    J'arrive donc désormais à appliquer la fonction mais un nouveau problème apparaît :
    En appliquant la fonction code128, le texte XLP5289741 devient ÑXLPÌTyjÍ1bÓ

    J'applique la police word code 128 (code128.ttf) et là elle ne me prend pas en compte les majuscules accentuées.... alors que ça fonctionne nickel dans excel... j'ai donc les Ñ, Ì, Í, Ó séparés par des codes barres...

    Une idée de la source de ce problème ?

    merki

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    je me réponds à moi-même, j'ai réussi à avancer un peu, j'arrive à générer le code barre avec ceci dans Project/Module:
    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
    Sub transform()
     
    ' sélection de la zone de texte (à adapter)
        ActiveDocument.Shapes("Text Box 7").Select
     
    ' recherche du signet (=ligne à coder sans le retour chariot / à définir avant)
        Selection.GoTo What:=wdGoToBookmark, Name:="signetCB"
        With ActiveDocument.Bookmarks
            .DefaultSorting = wdSortByName
            .ShowHidden = False
        End With
     
    ' application de la macro de grandzebu
        Selection.Range.Text = Code128$(Selection.Range.Text)
     
    ' re-sélection de la zone de texte et double application de la police code128
        ActiveDocument.Shapes("Text Box 7").Select
        Selection.Font.Name = "Code 128"
        Selection.Font.Name = "Code 128"
     
    End Sub
    Maintenant je lutte avec ces 2 problèmes :
    • Supprimer le retour de chariot qui apparaît dans le code barre (je ne trouve pas de solution pour que ce retour ne soit pas pris en compte)

    • Lancer la macro au moment de l'aperçu avant impression (j'ai essayé d'intégrer Private Sub Workbook_BeforePrint(Cancel As Boolean) mais rien ne se passe lorsque je fais l'aperçu ...)


    des idées ?
    merci

  12. #12
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Pour le retour du chariot, il faut agir avant en ne le prenant pas dans le texte à traiter avec une fonction texte Left() et Len() pour la longueur de chaîne.

    Pour le beforeprint, il faut mettre en place la gestion des évènements dans Word. Et utiliser cet évènement.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    Salut l'heureux,

    ok je commence par le souci du retour de chariot,
    j'ai testé ce code mais j'ai toujours ce fameux retour de pris en compte ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    TestString = Selection.Range.Text
        TestLen = Len(TestString) - 3
        Mystr = Left(TestString, TestLen)
        Selection = Mystr
        Selection.Font.Name = "Code 128"
        Selection.Font.Name = "Code 128"
        Selection.Font.Size = 40
    Qu'en penses-tu ?

  14. #14
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Je pense que tu dois changer la police avant d'insérer le texte et ensuite changer de police pour la fin de phrase.

    Si tu ne le fais pas tu as un saut de paragraphe qui vient perturber le texte.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    Salut,

    merci pour cette proposition, ça m'a donné une autre idée et maintenant j'arrive à obtenir un code barre lisible

    En fait j'ai juste masqué le retour de chariot dans le texte d'origine et ça simplifie fortement le code (il y avait surement moyen de faire ça en code de type recherche+masquer mais mes compétences m'ont fait choisir la solution de facilité )

    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
    Sub transform()
     
    ' sélection de la zone de texte (à définir avant)
        ActiveDocument.Shapes("Text Box 2").Select
     
    ' recherche du signet (=ligne à coder sans le retour chariot / à définir avant)
        Selection.GoTo What:=wdGoToBookmark, Name:="signetCB"
        With ActiveDocument.Bookmarks
            .DefaultSorting = wdSortByName
            .ShowHidden = False
        End With
     
    ' application de la macro de grandzebu
        Selection.Range.Text = Code128$(Selection.Range.Text)
     
    ' Double application de la police code 128 et modification de la taille des caractères (sélectionner la bonne zone de texte!)
        ActiveDocument.Shapes("Text Box 2").Select
        Selection.Font.Name = "Code 128"
        Selection.Font.Name = "Code 128"
        Selection.Font.Size = 40
     
    End Sub
    Il ne me reste plus qu'à trouver la solution pour que la macro s'exécute automatiquement lorsque je clic sur "aperçu avant impression"... j'ai fouillé google, trouvé ce que tu me proposais avec les évènements et le beforeprint mais je n'arrive à rien ...
    Le top serait qu'on me dise quel code utiliser exactement et où le placer dans VBA (module ? module de classe ? This Document ?) (je veux que cette macro ne s'applique qu'à mon projet)

    un grand merci d'avance !!

  16. #16
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    DocumentBeforePrintPreview, n'est pas un évènement géé par Word.

    Tu as DocumentBeforePrint, mais c'est juste avant l'impression.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  17. #17
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    merci pour ton temps
    bien malgré moi je n'arrive à rien avec le DocumentBeforePrint ...

    j'ai ceci dans le module de classe "Classe1" de mon projet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public WithEvents App As Word.Application
     
    Private Sub App_DocumentBeforePrint(ByVal Doc As Document, Cancel As Boolean)
    Call transform
    End Sub
    et ceci dans le module standard "Module1" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Document_open()
    Dim X As New Classe1
        Set X.App = Word.Application
    End Sub
    je bloque ...

  18. #18
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Si tu mets un MsgBox, ça donne quoi ?
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  19. #19
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 16
    Points : 4
    Points
    4
    Par défaut
    idem, aucun effet , la msgbox ne s'affiche pas lors du clic sur l'aperçu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public WithEvents App As Word.Application
     
    Private Sub App_DocumentBeforePrint(ByVal Doc As Document, Cancel As Boolean)
        MsgBox "APERCU"
    End Sub
    Mon fichier est en .dotm

    merci

  20. #20
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Essaie un autre évènement pour voir, DocumentChange par exemple.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

Discussions similaires

  1. [WD18] Nombre aléatoire pour code barre
    Par bigcat dans le forum WinDev
    Réponses: 15
    Dernier message: 30/06/2015, 19h24
  2. Création de Macro pour créer un code barre
    Par babilou dans le forum Excel
    Réponses: 2
    Dernier message: 16/03/2014, 00h00
  3. Réponses: 5
    Dernier message: 08/08/2013, 11h26
  4. macro pour code barre qui ne fonctionne pas comme elle devrait
    Par scons dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/11/2009, 13h09
  5. Est ce que ça existe une api java pour code barre ?
    Par miloud dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 14/04/2005, 17h20

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