[Writer] Importer une fonction depuis Calc
Publié : 31 août 2010 08:17
Bonjour à tous,
Étant débutant sous OpenOffice, je galère sur un problème qui doit être assez simple (je suppose).
Ayant une formule sous Calc sous forme de Macro qui permet de généré un code barre a partir des chiffres qui lui sont passés en paramètres, je souhaiterais importer cette dernière sous Writer.
Étapes faites jusque ici :
1. J'ai recopier la Macro dans le document Writer actif.
2. J'ai trouvé comment créer une variable permettant d'exécuter les formules de Calcs (Insertion - Champs - Autres... - Onglet "Variables" - Insérer une formule)
3. Et ... malheureusement c'est ici que ca bloque puisque l'appelle à la Marco ne fonctionne manifestement pas (me retourne la valeur qui lui est passer en paramètre)... Pour info elle est appelée de la façon suivante : EAN13('123456789012)
Si une âme charitable pouvait me donner une piste ...
Le code, issue du site Grand Zebu (OpenBarcodes), est :
h**p://grandzebu.net/informatique/codbar/code128.htm
PS: Un problème identique à été soulever dans ce fil
Étant débutant sous OpenOffice, je galère sur un problème qui doit être assez simple (je suppose).
Ayant une formule sous Calc sous forme de Macro qui permet de généré un code barre a partir des chiffres qui lui sont passés en paramètres, je souhaiterais importer cette dernière sous Writer.
Étapes faites jusque ici :
1. J'ai recopier la Macro dans le document Writer actif.
2. J'ai trouvé comment créer une variable permettant d'exécuter les formules de Calcs (Insertion - Champs - Autres... - Onglet "Variables" - Insérer une formule)
3. Et ... malheureusement c'est ici que ca bloque puisque l'appelle à la Marco ne fonctionne manifestement pas (me retourne la valeur qui lui est passer en paramètre)... Pour info elle est appelée de la façon suivante : EAN13('123456789012)
Si une âme charitable pouvait me donner une piste ...
Le code, issue du site Grand Zebu (OpenBarcodes), est :
h**p://grandzebu.net/informatique/codbar/code128.htm
Le modérateur a écrit :URL neutralisée : attention ce site se permet de mettre votre navigateur en plein écran.
Code : Tout sélectionner
Public Function ean13$(chaine$)
'V 1.0
'Paramètres : une chaine de 12 chiffres
'Retour : * une chaine qui, affichée avec la police EAN13.TTF, donne le code barre
' * une chaine vide si paramètre fourni incorrect
Dim i%, checksum%, first%, CodeBarre$, tableA As Boolean
ean13$ = ""
'Vérifier qu'il y a 12 caractères
If Len(chaine$) = 12 Then
'Et que ce sont bien des chiffres
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
For i% = 2 To 12 Step 2
checksum% = checksum% + Val(Mid$(chaine$, i%, 1))
Next
checksum% = checksum% * 3
For i% = 1 To 11 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
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
For i% = 8 To 13
CodeBarre$ = CodeBarre$ & Chr$(97 + Val(Mid$(chaine$, i%, 1)))
Next
CodeBarre$ = CodeBarre$ & "+" 'Ajout de la marque de fin
ean13$ = CodeBarre$
End If
End If
End Function