DECBIN introuvable

Raphy

XLDnaute Nouveau
Bonjour,

j'utilise la fonction DECBIN, pour une conversion décimale à binaire sous Excel 2002. Seulement, lorsque j'exécute la macro contenant c'est fonction, j'obtiens un message d'erreur indiquant "Sub ou Fonction non définie"
J'ai pourtant suivi cette méthode pour activer la macro:

Procédure
1. Dans le menu Outils, cliquez sur Macros complémentaires.
2. Dans la liste Macros complémentaires disponibles, activez la case à cocher Utilitaire d'analyse, puis cliquez sur OK.
3. Si nécessaire, suivez les instructions fournies par le programme d'installation.

Que j'ai trouvée ici :

Un collègue m'a informé qu'il y a potentiellement un problème avec l'aide, puisque certaines fonctions sont présentes sous un nom anglais, alors que l'aide indique un nom français ...:confused:
J'ai donc essayé DECBIN, DECTOBIN et DEC2BIN mais rien n'y fait.

Si vous avez la solution merci de me la faire partager. :)

D'avance merci.
 

tototiti2008

XLDnaute Barbatruc
Re : DECBIN introuvable

Bonjour Raphy,

si tu es dans un Office 2003 Multilingue, les fonctions des macros complémentaires doivent s'écrire avec leurs noms anglais.

Essaye de remplacer DECBIN par DEC2BIN pour voir...

Oups, pas lu jusqu'au bout, moi, désolé...

si tu quittes Excel et que tu retournes dans Macro complémentaires, Utilitaires d'analyses est toujours coché ? si tu vas dans l'éditeur VBA (Alt + F11), est-ce que dans l'explorateur de projets "funcres.xla" apparaît ? enfin, comment utilises tu une fonction à partir de VBA ? peux-tu nous poster le bout de code qui plante ?
 
Dernière édition:

Raphy

XLDnaute Nouveau
Re : DECBIN introuvable

Merci pour vos réponses ! :)

Voici comment j'utilise la fonction:
Code:
Function CalcChecksum(projectNumber As Integer) As Integer
    CalcChecksum = DECBIN(projectNumber, 8)
End Function
If faut bien avouer qu'elle est pas franchement finie.

Après vérifications, j'ai bien "funcres.xla" dans l'explorateur de projets, et ceci même après fermeture et réouverture.

Voilà.
 

tototiti2008

XLDnaute Barbatruc
Re : DECBIN introuvable

Re,

comme l'a précisé job75, tu peux utiliser DECBIN en l'affectant à la formule d'une cellule :

ActiveCell.Formula = "=DECBIN(50)"

ou en utilisant Evaluate pour évaluer son résultat

MsgBox Evaluate("DECBIN(50)")

mais tu ne peux pas l'utiliser directement.

seules certaines fonctions d'excel sont directement utilisables en VBA, que tu pourra appeler grâce à quelque chose du genre :

Application.WorksheetFunction.Max(5,4)

et malheureusement DECBIN n'en fait pas partie. Je pense qu'il faut utiliser un Evaluate comme l'a proposé job75.
 

job75

XLDnaute Barbatruc
Re : DECBIN introuvable

Re,

Je confirme bien sûr ce que dit tototiti, donc écrire :

Code:
Function CalcChecksum(projectNumber As Integer) As Integer
    CalcChecksum = Evaluate("DECBIN(" & projectNumber & ", 8)")
End Function

A+
 

Raphy

XLDnaute Nouveau
Re : DECBIN introuvable

Je viens d'essayer la solution suivante pour faire un test:
Code:
MsgBox Evaluate("DECBIN(50)")
et j'obtiens un message d'erreur "Incompatibilité de type".

J'ai donc essayé la formule à la main dans un classeur en l'entrant dans une cellule:
Code:
= DEC2BIN(D7;8)
Et ça fonctionne, il me reste donc plus qu'à bidouiller une macro avec ça pour l'application que je veux en faire.

Merci pour vos réponses, vous m'avez mis sur la voie de la solution !

A bientôt.
 

job75

XLDnaute Barbatruc
Re : DECBIN introuvable

Re,

Pardon, la fonction est à déclarer As String...

Code:
Function CalcChecksum(projectNumber As Integer) [COLOR="Red"]As String[/COLOR]
CalcChecksum = Evaluate("DECBIN(" & projectNumber & ", 8)")
End Function

Edit : salut kjin

A+
 
Dernière édition:

Raphy

XLDnaute Nouveau
Re : DECBIN introuvable

Le but de cette fonction ?

En l'état actuel, aucun puisqu'elle n'est pas finie. Je travaille dessus !

EDIT: voici la fonction que j'ai fini avant de partir manger, je la met pour information, on sais jamais ça pourra peut-être servir à quelqu'un un jour !
Code:
Function CalcChecksum(projectNumber As Integer) As String
    Dim temp As String
    Dim number As Integer
    number = 0
    temp = Evaluate("DEC2BIN(" & projectNumber & ", 8)")
    For i = 1 To Len(temp)
        If (Mid(temp, i, 1) = "1") Then number = number + 1
    Next i
    Select Case number
        Case 1
            CalcChecksum = temp
        Case 2
            CalcChecksum = "01" & Mid(temp, 3, 6)
        Case 3
            CalcChecksum = "10" & Mid(temp, 3, 6)
        Case Else
            CalcChecksum = "11" & Mid(temp, 3, 6)
    End Select
End Function

C'est une fonction checksum vraiment "maison", et qui n'a rien à voir avec le vrai calcul d'un checksum !
 
Dernière édition:

Statistiques des forums

Discussions
312 215
Messages
2 086 320
Membres
103 178
dernier inscrit
BERSEB50