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 :

Affichage des caractères après la virgule


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 11
    Points : 11
    Points
    11
    Par défaut Affichage des caractères après la virgule
    Bonjour à tous,

    J'ai une petite question s'il vous plait c'est urgent, j'utilise actuellement une fonction pour un affichage spécifique d'une ligne en Excel.
    Une de mes cellule est un montant TVA avec des chiffres après la virgule (Cells(1, 5)) , lorsque j'exécute ma macro j'ai pas l'affichage des chiffres après la virgule.
    Exemple TVA = 45120.00 --> ma fonction donne 45120
    Voici la fonction que j'utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function PresenterSur4Lignes3(ByVal AireAPresenter As Range) As String
     
    Dim I As Integer
     
        PresenterSur4Lignes3 = ""
        If AireAPresenter.Count = 14 Then
            With AireAPresenter
            PresenterSur4Lignes3 = "3" & .Cells(1, 2) & .Cells(1, 12) & " " & .Cells(1, 7) & " " & " " & " " & .Cells(1, 10) & .Cells(1, 5)
    End With
        End If
     
    End Function
    la cellule concernée est : Cells(1, 5).

    Merci

  2. #2
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Application.FixedDecimal = True
        Cells(3, 1).Value = Format(4800, "#,##0.00")
    et tu dis

    N'oublie les Balises et les si cela te conviens

    A+
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2013
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Bonjour Igloobel,
    Merci pour ta réponse, en fait j'ai ajouté les lignes de code dans ma fonction mais pas de résultat
    Toujours les zéros après la virgule ne s'affichent pas
    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
    Function PresenterSur4Lignes3(ByVal AireAPresenter As Range) As String
     
    Dim I As Integer
    
        Application.FixedDecimal = True
        Cells(1, 5).Value = Format(4800, "#,##0.00")
    
        PresenterSur4Lignes3 = ""
        If AireAPresenter.Count = 14 Then
            With AireAPresenter
            PresenterSur4Lignes3 = "3" & .Cells(1, 2) & .Cells(1, 12) & " " & .Cells(1, 7) & " " & " " & " " & .Cells(1, 10) & .Cells(1, 5)
          End With
        End If
     
    End Function

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Igloobel, je ne suis pas sûr qu'il soit possible de mettre un formatage de cellule dans une fonction (je suis même à presque sûr que ce n'est pas possible). Une fonction renvoie une valeur, elle ne peut pas réaliser une action.

    Cela dit, en restant dans le même esprit, il y a une façon très simple de résoudre ton problème :
    Clic droit sur la cellule où se troue la fonction > Format de Cellule > Onglet Nombre > Catégorie nombre > Nombre de décimales = 2 > Ok
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Igloobel, je ne suis pas sûr qu'il soit possible de mettre un formatage de cellule dans une fonction (je suis même à presque sûr que ce n'est pas possible). Une fonction renvoie une valeur, elle ne peut pas réaliser une action.
    Effectivement j'avais pas bien vu que c'était un fonction . moi je l'avais mis dans une sub ert chez moi cela marchais très bien donc dans une sub.
    Depuis que j'ai découvert les déclarations de variables publique, j'ai quasiment plus besoin de faire des fonctions et j'en fait très très très rarement
    C'est pourquoi j'ai fait une sub et j'affirme que mes deux lignes marche très bien dans une sub (j'ai testé avant de poster)

    A+
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 753
    Points : 28 603
    Points
    28 603
    Billets dans le blog
    53
    Par défaut
    Bonjour Menhir, Igloobel,
    Sauf si on utilise une fonction comme formule personnalisée utilisable depuis Excel, il n'y a aucun problème de faire des actions depuis une procédure Function
    J'utilise régulièrement des fonctions notamment pour faire de l'exportation. La fonction effectue l'exportation avec la méthode AdvancedFilter et me renvoie comme valeur le nombre de lignes exportées
    Exemple : taper 20,23 en cellule A1 et faites tourner cette procédure SUB qui elle-même va invoquer la fonction et de plus une fonction peut-être appeler comme une sub ou comme une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function maSomme(rng As Range, Num As Double) As Double
     Dim row As Long
     For row = 2 To 10
      With rng.Offset(row, 1)
      .Value = rng * row * 2.3
      .NumberFormat = "#,##0.00"
      maSomme = maSomme + .Value
      End With
     Next
    End Function
    La procédure SUB
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub TestA()
     maSomme Range("A1"), 10.2 ' Syntaxe 1 
     MsgBox "La somme = " & Format(maSomme(Range("A1"), 12), "#,###.00") ' Syntaxe 2
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Bonjour à tous

    Petite précision si dans Option - Option avancées - Décimale fixe n'est pas coché cela ne marche pas ! Voilà pourquoi j'ai mis la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.FixedDecimal = True
    A+
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  8. #8
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Pardon Pardon Pardon



    J'ai dis une betise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.FixedDecimal = True
    me fixe obligatoirement 2 décimales

    je tape 2000 et il met 20 !!!!

    Désolé d'avoir dit une grosse betise
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

Discussions similaires

  1. [AC-2010] Suppression affichage des 0 après virgule pour champ décimal
    Par krefkref dans le forum Access
    Réponses: 1
    Dernier message: 07/05/2014, 11h05
  2. affichage des zero aprés la virgule
    Par marry dans le forum Langage
    Réponses: 3
    Dernier message: 13/10/2009, 14h13
  3. Affichage des zéros après virgule
    Par CassiopeeQC dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 08/09/2008, 00h07
  4. Problème d'affichage des caractères accentués
    Par ostaquet dans le forum JBuilder
    Réponses: 1
    Dernier message: 10/03/2005, 06h58
  5. Commande pour afficher des chiffres apres la virgule
    Par manar dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 23/09/2004, 18h28

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