récupérer la valuer d'une formule

  • Initiateur de la discussion Iskandhar
  • Date de début
I

Iskandhar

Guest
Bonjour :)

C'est mon premier post. :)

J'ai une fonction en visual basic intitulée EAN13. Je veux appliquer cette fonction à la cellule A1. Exemple : =EAN13(A1). A1 contient la formule : =concatener(20;999;ENT(A2)). La fonction EAN13 plante :( Il me faudrait simplement récupérer le résultat de la formule dans A1 (exemple : 2099912). Comment faire ?
 

2passage

XLDnaute Impliqué
Bonjour,

Euh.. tu le mets ou deja le EAN13 ? et il est sensé faire quoi ? et ça plante comment (message d'erreur ? #Valeur ? Hurlements de Gremlins en rut ?... ) :eek:

A priori, je pense que ça serait un problème de format quelquepart, mais sans savoir comment est faite EAN13.. dur dur...

A+
 
I

Iskandhar

Guest
Merci :)

EAN13 est une formule en VB qui calcule le code EAN 13 à partir d'une séquence de 12 chiffres. Je ne pense pas que le contenu de cette formule soit important. Il me semble que le problème est de récupérer le résultat d'une formule située dans une autre cellule.
 

Minick

XLDnaute Impliqué
SAlut,

Comment passes-tu ton argument à ta fonction??

essai de le passer par valeur
Code:
Function EAN13(ByVal 'Ton argument' as ....)


@+

PS: Avec un morceau de ta fonction ce serait plus simple

Message édité par: Minick, à: 11/08/2005 16:06
 
I

Iskandhar

Guest
Dans la cellule B1, il y a la formule suivante : =CONCATENER(20;999;REPT(0;7-NBCAR(ENT(H3)));ENT(H3)).
J'ai, attachée à la feuille excel, une formule intitulée EAN13.
Je voudrais dans la cellule B1 écrire : =EAN13(CONCATENER(20;999;REPT(0;7-NBCAR(ENT(H3)));ENT(H3))). Mais j'ai un message d'erreur ? :(
 

Minick

XLDnaute Impliqué
Salut,

J'ai bien compri ton probleme mais
EAN13 est une fonction Vba donc le pb vient surement de la (enfin je pense)

Pour savoir à quel endroit cela plante il faudrait savoir ce que fait ta fonction et comment elle recupere ses arguments.

C'est pour cela que je te demande de nous joindre ta fonction EAN13
pour comprendre ou est le probleme

@+
 
I

Iskandhar

Guest
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 i%
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 / 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
 

Discussions similaires

Statistiques des forums

Discussions
312 500
Messages
2 089 010
Membres
104 004
dernier inscrit
mista