[VB6 -> VBA]Conversion décimal en binaire avec excel

Signaler
-
 Utilisateur anonyme -
Bonjour les amis!
J'ai besoin de votre aide!
J'ai un fichier excel avec les champs Compte, Nom, CritX1 et Conversion. Le champs Critx1 contient des valeurs en base 10. Je souhaite les convertir en binaire dans le champs conversion. J'utilise DECBIN mais pour les Nombres supérieurs à 511 la conversion est impossible! kel méthode puis-je utiliser? Et puis y aurai une méthode pour les convertir d'un seul coup? Urgent SVP!


Merci beaucoup codesSources!

6 réponses


Bonjour,

Pardon, mais je viens de tester la fonction de ucfoutu et il y a un petit problème...
Par exemple le decimal 88 en binaire c'est 1011000, or ta fonction, ucfoutu, renvoi 1000110 (ce qui correspond à 70)

Je m'en rappelle que j'ai eu cette erreur quand j'ai "fabriqué" la fonction également, ce qui m'a poussé à tout reprendre depuis le début...

Voici la mienne:

'Exemple de l'utilisation:
msgbox decbin(88)


  Public Function DecBin(ByVal NombreDec As Integer) As Long
        Dim Binaire As String
        Dim Bin As String
        Dim i As Integer
        Do
            Bin = Bin & (NombreDec Mod 2)
            NombreDec = (Int(NombreDec / 2))
        Loop Until NombreDec 1 Or NombreDec 0
        If NombreDec = 0 Then
            Bin = Bin & "0"
        Else
            Bin = Bin & "1"
        End If
        If Len(Bin) < 8 Then
            Do While Len(Bin) < 8
                Bin = Bin & "0"
            Loop
        End If
        For i = 8 To 1 Step -1
            Binaire = Binaire & Mid$(Bin, i, 1)
        Next
        DecBin = Val(Binaire)
    End Function



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Bonjour,
J'utilise DECBIN

Cette fonction étant totalement inconnue du bataillon VB6, explique !

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Tu vas peut-être :
1) finir par comprendre que tu ne développes pas sous :
Forum > Visual Basic 6

qui ignore totalement DECBIN
2) t'efforcer de voir où un administrateur bienveillant a dû déplacer ton autre discussion
3) en prendre conscience et t'efforcer de ne pas répéter un tel errement, dont la conséquence est celle que su subis maintenant : une perte de temps par négligence.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Un admin a bien voulu déplacer cette discussion === >> prends s'il te plait maintenant (une fois pour toutes) bonne note de la section dans laquelle il l'a déplacée. Il conviendra que tu y ouvres tes prochaines éventuelles discussions VBA .
Tu as toujours la possibilityé de faire une fonction personnalisée, utilisable dans tes formules, comme toute fonction Excel.
Exemple :
Dans un module :
Public Function deci_to_binaire(nombre As Integer) As String
  ou$  = ""
  If nombre = 0 Then
    deci_to_binaire = "0"
  Else
    While nombre > 1
      ou$ = ou$ & Str(nombre Mod 2)
      nombre = nombre \ 2 ' attention : \ et non / (pour azvoir l'entier de la division
    Wend
    deci_to_binaire = "1" & ou$
  End If
End Function


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Déjà merci pour le code! Je vais le tester et je vous fais signe!

Merci beaucoup codesSources!

Pardon, le:
 If Len(Bin) < 8 Then
            Do While Len(Bin) < 8
                Bin = Bin & "0"
            Loop
        End If

N'a pas lieu dans ce cas précis
(c'était pour renvoyer un string avec les 8 bits affichés)

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique