IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

afficher une fraction sans qu'elle ne soit calculée


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Points : 22
    Points
    22
    Par défaut afficher une fraction sans qu'elle ne soit calculée
    bonjour

    je suis sur un code vba et j'ai besoin dans un calcul de faire appel à des fractions;
    et je voudrais que quand j'affiche par exemple 4/12 , excel me la considère comme nombre ( car j'en ai besoin par la suite pour d'autres calculs) et en plus ne me la calcule pas (en m'affichant 1/3) je voudrais garder cette fraction intacte

    merci d em'aider

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,

    Si tu veux garder ta fraction intacte et algébriquement "pure", il te suffit de garder en mémoire 2 variables : son numérateur toto et son dénominateur titi, puis dans tes calculs utiliser les deux (toto/titi)
    Pour ce qui est maintenant de passer de 4/12 à 1/3 ===>>> recherche du plus grand diviseur commun (les algos sur le Web ne manquent pas ...) et application de ce diviseur au numérateur et au dénominateur.

    EDIT :

    Allez, va ... === >> en récursivité, en plus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub Command1_Click()
      Dim numerateur As Integer, denominateur As Integer, couic As Integer
      numerateur = 4
      denominateur = 12
      couic = pgcd(numerateur, denominateur)
      numerateur = numerateur / couic
      denominateur = denominateur / couic
      MsgBox numerateur & " / " & denominateur
    End Sub
    Function pgcd(n As Integer, d As Integer) As Integer
      If d = 0 Then
         pgcd = n
      Else
        pgcd = pgcd(d, n Mod d)
      End If
    End Function

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    bonjour


    s'il s'agit d'afficher les fractions dans la feuille de calcul :

    Comment gérer les fractions par format personnalisé ?


    bonne journée
    michel

  4. #4
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Points : 22
    Points
    22
    Par défaut
    bonjour et merci pour vos réponses

    J'ai plusieurs fractions , donc je ne pourrai pas tous en mémoriser les numérateurs et dénominateurs .
    voilà: une partie d'un code VBA s'occupe de calculer et d'afficher ces fractions ligne par ligne sur une colonne . Ensuite plus loin j'ai une partie du code qui va me faire le calcul d'un montant qui fait appel à ces fractions sur une autre colonne et ligne par ligne

    et donc je souhaiterais 2 choses:
    1> afficher ces fractions sans qu'excel ne les réduise automatiquement
    2> les déclarer comme des nombres car plus loin j'en aurai besoin pour faire d'autres calculs .

    et merci infiniment

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Points : 542
    Points
    542
    Par défaut
    bonjour,

    J'ai plusieurs fractions , donc je ne pourrai pas tous en mémoriser les numérateurs et dénominateurs
    Dans ce cas sert toi d ' une variable de type tableau

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Points : 22
    Points
    22
    Par défaut
    bonjour patbou et merci
    ok pour le tableau mais n'y a til pas moins compliqué. ça m'étonnerait qu'il n'existe pas de moyens d'afficher une fraction en obligeant excel de ne pas la convertir

  7. #7
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Citation Envoyé par samimikha Voir le message
    bonjour patbou et merci
    ok pour le tableau mais n'y a til pas moins compliqué. ça m'étonnerait qu'il n'existe pas de moyens d'afficher une fraction en obligeant excel de ne pas la convertir
    Bonjour,

    il me semble que tu as eu la réponse, si elle ne te convient pas il serait bien de dire pourquoi.
    Citation Envoyé par SilkyRoad Voir le message
    bonjour


    s'il s'agit d'afficher les fractions dans la feuille de calcul :

    Comment gérer les fractions par format personnalisé ?


    bonne journée
    michel

  8. #8
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Points : 22
    Points
    22
    Par défaut
    bonjour

    Désolée d'avoir manqué un peu de tact, c'est tout simplement que je suis débutante en vba et la solution proposée par Patbou m'a semblé compliquée de prime abord. mais en aucun cas je ne l'ai rejetée, au contraire je l'ai gardé en veilleuse en attendant de me documenter sur les variables de type tableau

    je vous serais bien reconnaissante de me mettre sur la piste
    Au fait mon projet vba contient plusieurs modules. dans un premier module j'affiche les fractions en question sous forme n/d en utilisant la formule suivant : n & "/" & d . donc si j'ai bien compris , je dois utiliser une variable de type tableau pour mémoriser autant de n et d qu'il ya de lignes ensuite mémoriser cette variable et la réutiliser dans un autre module; ce module fait des calculs faisant appel à ces n/d et les affiche sur une autre colonne

    et merci encore

  9. #9
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Je ne voulais pas parler d'un problème de tact mais il me semble que tu n'as toujours pas lu la réponse de Silkyroad

    http://www.developpez.net/forums/d63...e/#post3743077
    .

  10. #10
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Points : 22
    Points
    22
    Par défaut
    bonjour
    si je l'ai lu . je ne sais pas si j'ai compris . j'ai essayé ce code pour afficher la colonne des fractions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    For j = i To k
    n = Cells(j, 3).Value
    Cells(j, 5).Selection
    Selection.NumberFormat = "#"" ""???/d"
    Cells(j, 5).Value = n / d
    Next
    mais ça ne marche pas

    est ce que j'ai bien compris la réponse? je ne pense pas

    merci de m'aider et désolée de t'enquiquiner

  11. #11
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Un petit exemple ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
    Dim n As Integer, d As Integer
     
    n = 8
    d = 15
     
    With Cells(1, 1)
        .NumberFormat = "#"" ""???/" & d
        .Value = n & "/" & d
    End With
     
    End Sub
    Essaie d'adapter ton code avec cet exemple, si tu n'y arrives pas fais signe

  12. #12
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Points : 22
    Points
    22
    Par défaut
    bonjour fring et merci encore
    ça marche sauf pour les fraction où numérateur=dénominateur , ça m'affiche 1 au lieu de n/d

  13. #13
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Oui c'est parce que ce format effectue quand même une modification de la fraction lorsque celle-ci atteind ou dépasse l'unité.
    Par exemple 20/15 s'affichera 1...5/15

    Je n'ai pas de solution pour contourner cela sauf si tu ne dois pas utiliser ces fractions pour effectuer des calculs et que tu peux les insérer au format "Texte". A ce moment là tu peux faire comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test2()
    Dim n As Integer, d As Integer
     
    n = 15
    d = 15
     
    Cells(1, 1) = "'" & n & "/" & d
     
    End Sub

  14. #14
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Points : 22
    Points
    22
    Par défaut
    non malheureusement je les utilise pour d'autres calculs
    au fait j'ai toujours n<= d donc le problème ne se pose que pour les égalités. en tout cas j'ai déjà très bien avancé avec tout ça merci à tous . je vais chercher ou attendre des propositions pour ce égalités

  15. #15
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Points : 22
    Points
    22
    Par défaut
    bonjour
    j'ai cherché un peu la réponse sur internet et je n'ai rien trouvé. si quelqu'un veut bien m'aider je lui serais mille fois reconnaissante

    voilà où j'en suis: le code suivant marche avec toutes les fractions sauf quand le numérateur=dénominateur; ça m'affiche 1 alors que je voudrais x/s

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     For j = i To k
    x = Cells(j, 3).Value
     If x = "" Then
     Cells(j, 5).Value = ""
     Else
      With Cells(j, 5)
        .NumberFormat = "#"" ""???/" & s
        .Value = x & "/" & s
        End With
     End If
    Next
    merci d'avance

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Points : 350
    Points
    350
    Par défaut
    Bonsoir Tous,

    à tester et adapter si cela convient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Sub fraction()
      For j = 2 To 6
        x = Cells(j, 3) 'numérateur
        y = Cells(j, 4) 'dénominateur
     
        If x = "" Then
          Cells(j, 5).Value = ""
        Else
          If Cells(j, 4) = "" Or Cells(j, 4) = 0 Then Exit Sub
        'pour l'affichage
          Cells(j, 5).FormulaR1C1 = "="" ""&FIXED(RC[-2],0)&""/""&FIXED(RC[-1],0)"
        'pour les calculs
          Cells(j, 7) = Cells(j, 6) * x / y
        End If
      Next
    End Sub

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 121
    Points : 127
    Points
    127
    Par défaut
    Bonjour

    quand je ne veux pas qu' Excel me calcule une fraction qui s'affichera 1 je l'écris ainsi: 1* 6/6
    Par contre ce n'est valable que pour une cellule , pour l'appliquer à toute une colonne je ne sais pas sauf à le taper cellule par cellule .

    D'autre part pour transcrire 1* 6/6 en VBA je ne sais pas faire ni ne sait si c'est possible.

    A+

  18. #18
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Points : 22
    Points
    22
    Par défaut
    bonjour et merci pour vos réponses
    s'agissant la réponse de Ordonc:
    concernant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(j, 5).FormulaR1C1 = "="" ""&FIXED(RC[-2],0)&""/""&FIXED(RC[-1],0)"
    au fait le dénominateur est une valeur s qui n'est pas toujours dans une position relativement fixe donc je ne pourrais pas utiliser RC[-1]
    voici comment j'obtiens la valeur s
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Do While Cells(i, 2).Value <> ""
    s = 0
     
        'calculer entre 2 DP la somme des jours et la stocker dans s
        For j = i To Cells(Rows.count, 1).End(xlUp).Row
        var = Cells(j, 3).Value
        s = s + var
     
            If Cells(j, 1).Value Like "DP*" Then
            Cells(j, 4).Value = s
            Cells(j, 4).Select
            Selection.Font.Bold = True
     
        Exit For
            End If
     
       Next

    concernant la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(j, 7) = Cells(j, 6) * x / y
    j'avoue ne pas avoir bien saisi : c'est quoi cells(j,7) et cells(j,6)

    et merci encore

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Points : 350
    Points
    350
    Par défaut
    Bonsoir Tous,

    Vois ce que cela donne en remplaçant la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(j, 5).FormulaR1C1 = "="" ""&FIXED(RC[-2],0)&""/""&FIXED(RC[-1],0)"
    par celle-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(j, 5) = " " & [Cy].Text & "/" & [Az].Text

    Cells(j, 5) est l'adresse de la cellule contenant l'écriture fractionnaire,
    Cy est celle de la cellule contenant le numérateur et
    Az celle de la cellule qui contient le dénominateur.

    A noter que le premier espace permet d'éviter le format de date provenant du slash /.

    Pour la second question, je mettais simplement un exemple d'utilisation de la fraction en calcul comme a = b x ¾ , a étant en Cells( j , 7 ), b en Cells( j , 6) et la fraction ¾.

  20. #20
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Points : 22
    Points
    22
    Par défaut
    bonjour et merci
    le problème c'est que le dénominateur occupe une cellule qui n'est pas repérable car c'est le résultat d'une somme cumulée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Do While Cells(i, 2).Value <> ""
    s = 0
     
        'calculer entre 2 DP la somme des jours et la stocker dans s
        For j = i To Cells(Rows.count, 1).End(xlUp).Row
        var = Cells(j, 3).Value
        s = s + var
     
            If Cells(j, 1).Value Like "DP*" Then
            Cells(j, 4).Value = s
            Cells(j, 4).Select
            Selection.Font.Bold = True
     
        Exit For
            End If
     
       Next
     
    'pour chaque ligne et entre 2 DP  inscrire dans la colonne prorata le nbre de jours/ s comprise entre de DP
    k = j
     
    For j = i To k
    x = Cells(j, 3).Value
     If x = "" Then
     Cells(j, 5).Value = ""
     Else
     With Cells(j, 5)
        .NumberFormat = "#"" ""???/" & s
       .Value = x & "/" & s
       End With

Discussions similaires

  1. [AC-2003] Copier une valeur sans qu'elle soit modifiée après
    Par yieiyiei dans le forum Modélisation
    Réponses: 6
    Dernier message: 06/03/2015, 13h53
  2. Réponses: 3
    Dernier message: 19/03/2009, 01h07
  3. Afficher une vidéo sans attendre que tout soit chargé ?
    Par brunoperel dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 06/08/2007, 16h12
  4. [C#]Afficher une forme sans qu'elle se ferme
    Par gilles641 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/03/2006, 12h25
  5. Afficher une image sans passer par les textures
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/05/2003, 19h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo