Code à barres, macro

dimitri70

XLDnaute Nouveau
Bonjour

J'utilise deux application de code à barres élaboré par grandzebu du net, et je rencontre un problème.

Il y a plusieurs fichiers excel, qui chacun contient un programme ou une macro qui permet de retranscrire une référence en un code à barre.
Dans mon cas je me sers seulement que de deux codes barres (code 128 et code ean13), je souhaiterai pouvoir rassembler les deux fichiers contenant ces deux polices dans un même fichier excel. Seulement quand je copie les deux pages de chaque fichiers, et que je les rassemble dans un nouveau fichier, le programme ou la macro de chaque fichier ne fonctionne plus.

Quand je le fait sur ma version d'excel 2007, je n'ai pas ce problème, mais sur la version 2003 que actuellement je me sert, ce la ne fonctionne pas.
Est ce que vous pouvez m'indiquer la procédure à suivre pour pouvoir rassembler ces deux fichiers dans un seul? Est ce que cela peut venir d'un problème au niveau du programme ou de la macro?

Je n'ai jamais fais de macro, c'est pour cela, je me demande si le problème ne vient pas de là.
Je joint le lien ou vous pouvez trouver le fichier zip à télécharger, j ene peux pas mettre les deux fichiers excel que je me sert, ils sont trop volumineux.
VeriTi V 3, le site des amis d'Excel et OOo - Label Ti

JE vous remercie d'avance.
 

dimitri70

XLDnaute Nouveau
Re : Code à barres, macro

Mon fichier est bien enregistré en format 97-2003.

Le problème c'est que si ce programme marche avec une macro, je ne sais pas comment faire pour copier deux macro de deux fichiers différents pour les remettre dans un meme fichier
 

JNP

XLDnaute Barbatruc
Re : Code à barres, macro

Bonsoir le fil :),
J'ai jeté un oeil aux fichiers de Ti, mais c'est une véritable usine à gaz...
Personnelement, je m'en tiendrais aux basiques, à savoir les fonctions de départ de Grand Zébu que tu peux prendre ICI.
Tu copie chacune de ses 2 macros dans un module et le tour est joué :p.
Bonne soirée :cool:
 

dimitri70

XLDnaute Nouveau
Re : Code à barres, macro

en faite ce qu'il faut faire ac serait de copier les deux codes la dans excel sous vba:

code 128:
Public Function Code128$(chaine$)
'V 2.0.0
'Paramètres : une chaine
'Parameters : a string
'Retour : * une chaine qui, affichée avec la police CODE128.TTF, donne le code barre
' * une chaine vide si paramètre fourni incorrect
'Return : * a string which give the bar code when it is dispayed with CODE128.TTF font
' * an empty string if the supplied parameter is no good
Dim i%, checksum&, mini%, dummy%, tableB As Boolean
Code128$ = ""
If Len(chaine$) > 0 Then
'Vérifier si caractères valides
'Check for valid characters
For i% = 1 To Len(chaine$)
Select Case Asc(Mid$(chaine$, i%, 1))
Case 32 To 126, 203
Case Else
i% = 0
Exit For
End Select
Next
'Calculer la chaine de code en optimisant l'usage des tables B et C
'Calculation of the code string with optimized use of tables B and C
Code128$ = ""
tableB = True
If i% > 0 Then
i% = 1 'i% devient l'index sur la chaine / i% become the string index
Do While i% <= Len(chaine$)
If tableB Then
'Voir si intéressant de passer en table C / See if interesting to switch to table C
'Oui pour 4 chiffres au début ou à la fin, sinon pour 6 chiffres / yes for 4 digits at start or end, else if 6 digits
mini% = IIf(i% = 1 Or i% + 3 = Len(chaine$), 4, 6)
GoSub testnum
If mini% < 0 Then 'Choix table C / Choice of table C
If i% = 1 Then 'Débuter sur table C / Starting with table C
Code128$ = Chr$(210)
Else 'Commuter sur table C / Switch to table C
Code128$ = Code128$ & Chr$(204)
End If
tableB = False
Else
If i% = 1 Then Code128$ = Chr$(209) 'Débuter sur table B / Starting with table B
End If
End If
If Not tableB Then
'On est sur la table C, essayer de traiter 2 chiffres / We are on table C, try to process 2 digits
mini% = 2
GoSub testnum
If mini% < 0 Then 'OK pour 2 chiffres, les traiter / OK for 2 digits, process it
dummy% = Val(Mid$(chaine$, i%, 2))
dummy% = IIf(dummy% < 95, dummy% + 32, dummy% + 105)
Code128$ = Code128$ & Chr$(dummy%)
i% = i% + 2
Else 'On n'a pas 2 chiffres, repasser en table B / We haven't 2 digits, switch to table B
Code128$ = Code128$ & Chr$(205)
tableB = True
End If
End If
If tableB Then
'Traiter 1 caractère en table B / Process 1 digit with table B
Code128$ = Code128$ & Mid$(chaine$, i%, 1)
i% = i% + 1
End If
Loop
'Calcul de la clé de contrôle / Calculation of the checksum
For i% = 1 To Len(Code128$)
dummy% = Asc(Mid$(Code128$, i%, 1))
dummy% = IIf(dummy% < 127, dummy% - 32, dummy% - 105)
If i% = 1 Then checksum& = dummy%
checksum& = (checksum& + (i% - 1) * dummy%) Mod 103
Next
'Calcul du code ASCII de la clé / Calculation of the checksum ASCII code
checksum& = IIf(checksum& < 95, checksum& + 32, checksum& + 105)
'Ajout de la clé et du STOP / Add the checksum and the STOP
Code128$ = Code128$ & Chr$(checksum&) & Chr$(211)
End If
End If
Exit Function
testnum:
'si les mini% caractères à partir de i% sont numériques, alors mini%=0
'if the mini% characters from i% are numeric, then mini%=0
mini% = mini% - 1
If i% + mini% <= Len(chaine$) Then
Do While mini% >= 0
If Asc(Mid$(chaine$, i% + mini%, 1)) < 48 Or Asc(Mid$(chaine$, i% + mini%, 1)) > 57 Then Exit Do
mini% = mini% - 1
Loop
End If
Return
End Function


Et code EAN13:
Public Function ean13$(chaine$)
'Cette fonction est régie par la Licence Générale Publique Amoindrie GNU (GNU LGPL)
'This function is governed by the GNU Lesser General Public License (GNU LGPL)
'V 1.1.1
'Paramètres : une chaine de 12 chiffres
'Parameters : a 12 digits length string
'Retour : * une chaine qui, affichée avec la police EAN13.TTF, donne le code barre
' * une chaine vide si paramètre fourni incorrect
'Return : * a string which give the bar code when it is dispayed with EAN13.TTF font
' * an empty string if the supplied parameter is no good
Dim i%, checksum%, first%, CodeBarre$, tableA As Boolean
ean13$ = ""
'Vérifier qu'il y a 12 caractères
'Check for 12 characters
If Len(chaine$) = 12 Then
'Et que ce sont bien des chiffres
'And they are really digits
For i% = 1 To 12
If Asc(Mid$(chaine$, i%, 1)) < 48 Or Asc(Mid$(chaine$, i%, 1)) > 57 Then
i% = 0
Exit For
End If
Next
If i% = 13 Then
'Calcul de la clé de contrôle
'Calculation of the checksum
For i% = 12 To 1 Step -2
checksum% = checksum% + Val(Mid$(chaine$, i%, 1))
Next
checksum% = checksum% * 3
For i% = 11 To 1 Step -2
checksum% = checksum% + Val(Mid$(chaine$, i%, 1))
Next
chaine$ = chaine$ & (10 - checksum% Mod 10) Mod 10
'Le premier chiffre est pris tel quel, le deuxième vient de la table A
'The first digit is taken just as it is, the second one come from table A
CodeBarre$ = Left$(chaine$, 1) & Chr$(65 + Val(Mid$(chaine$, 2, 1)))
first% = Val(Left$(chaine$, 1))
For i% = 3 To 7
tableA = False
Select Case i%
Case 3
Select Case first%
Case 0 To 3
tableA = True
End Select
Case 4
Select Case first%
Case 0, 4, 7, 8
tableA = True
End Select
Case 5
Select Case first%
Case 0, 1, 4, 5, 9
tableA = True
End Select
Case 6
Select Case first%
Case 0, 2, 5, 6, 7
tableA = True
End Select
Case 7
Select Case first%
Case 0, 3, 6, 8, 9
tableA = True
End Select
End Select
If tableA Then
CodeBarre$ = CodeBarre$ & Chr$(65 + Val(Mid$(chaine$, i%, 1)))
Else
CodeBarre$ = CodeBarre$ & Chr$(75 + Val(Mid$(chaine$, i%, 1)))
End If
Next
CodeBarre$ = CodeBarre$ & "*" 'Ajout séparateur central / Add middle separator
For i% = 8 To 13
CodeBarre$ = CodeBarre$ & Chr$(97 + Val(Mid$(chaine$, i%, 1)))
Next
CodeBarre$ = CodeBarre$ & "+" 'Ajout de la marque de fin / Add end mark
ean13$ = CodeBarre$
End If
End If
End Function


Si quelqu'un peut m'aider car je gère pas trop au niveau des macro et language VBA.

Merci
 

JNP

XLDnaute Barbatruc
Re : Code à barres, macro

Re :),
Avec ton fichier ouvert, tu fais Alt+F11.
Si tu n'as pas à gauche l'arborescence, tu fais Ctrl+r.
Clic droit sur ton classeur -> Insertion -> Module.
Tu copies le code dans le module.
Tu fermes l'éditeur VBA.
Tes fonctions sont disponibles dans ton classeur.
Bon courage :cool:
 

Discussions similaires

Statistiques des forums

Discussions
312 487
Messages
2 088 823
Membres
103 971
dernier inscrit
abdazee