Extraire les chiffres après la virgule

sanaa590 -  
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

j'ai besoin d'une fonction VBA qui permet d'extraire les chiffres après
la virgule d'une chaine numérique.
j'ai tout essayer la fonctionne indexof ne marche pas la fonctionne substring aussi la méthode Mdi a l'intérieur d'une boucle avec la conditionne s'il trouve la virgule il m'affiche !!!!

merci de m'aidez :)

5 réponses

  1. Paf
     
    bonjour,
    ton nombre a t-il toujours le même nombre de chiffres après la virgule , et combien ?
    partant de là, plusieurs solutions.

    A+
    0
    1. sanaa590
       
      bonjour ,
      merci paf
      non pas toujours mais je round pour avoir un seul nombre après la virgule

      round(nombre,1)

      et a partir de se chiffre :si il est supérieur ou inférieur pour que je puis terminer le traitement
      0
    2. Paf
       
      re,
      tu peux essayer de faire la différence entre ton nombre "roundé" et sa partie entière:

      MonNB=round(nombre,1)
      MonDécimal = MonNB - Int(MonNB)

      si MonNB vaut 12,4 , MonDécimal vaudra 0,4

      Bonne suite
      0
    3. sanaa590
       
      re bonjour,

      j'ai déjà essayé mais la soustraction me donne 0 il prend pas en considération la virgule :(
      0
  2. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    ce n'est pas un problème, mais avant d'écrire un code, le séparateur de décimale dans ton système c'est le point ou la virgule !

    et lorsque tu as 10,05 par exemple tu veux récupérer 5 ou 05 !
    0
    1. sanaa590
       
      bonjour,
      le séparateur c'est un point ,et j'ai pas le cas d'avoir un nombre avec la virgule .05 toujours soit .333.... ou bien .6666... ou bien .9999 soit .5
      0
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    En supposant que la plage à traiter est en colonne A à partir de A2, le code bouclera jusqu'à la dernière cellule non vide, associer le code Transfert à un bouton

    Sub Transfert()
    [A2].Select
    If ActiveCell <> "" Then Extraire_Décimale_Comme_Chiffre_Entier
    Do While ActiveCell <> "" 'Evite de relancer le code
    ActiveCell.Offset(1, 0).Select
    Extraire_Décimale_Comme_Chiffre_Entier
    Loop
    ActiveCell.Offset(0, 1).ClearContents
    End Sub

    Sub Extraire_Décimale_Comme_Chiffre_Entier()
    Dim d As Double
    d = ActiveCell
    'MsgBox (Mid(Str(d), InStr(1, Str(d), ".") + 1))
    ActiveCell.Offset(0, 1) = (Mid(Str(d), InStr(1, Str(d), ".") + 1))
    ActiveCell.Offset(0, 1).NumberFormat = "00"
    End Sub

    Tiens moi au courrant

    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
    1. sanaa590
       
      salut

      merci bien pour votre aide :)

      je programme sous Access , je suis désolé de ne pas l'avoir mentionné au début.
      0
  4. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Je rajoute un code plus court

    Sub Sépare_Valeurs()
    Dim n, tablo, m As Variant
    For n = 2 To Range("A65536").End(xlUp).Row
    tablo = Split(Range("A" & n), ".")
    For m = 0 To UBound(tablo)
    Cells(n, 1 + m) = tablo(m)
    Cells(n, 1 + m).NumberFormat = "00"
    Next m
    Next n
    End Sub
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Si ton problème est résolu, tu voudras bien nous le confirmer que l'on mette le statut de la discussion en résolu

    Cordialement
    0