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 :

VBA Réaliser des arrondis.


Sujet :

Macros et VBA Excel

  1. #21
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    non, chaque langage arrondissait à sa manière, quelques uns au dessous d'autres au dessus.. d'autres au pair le plus proche, d'autres aux impairs, certains avec un calcul savant et d'autres aléatoirement ?

    Les règles sont égales à du vomi, oui, cependant les comptables travaillant en grande partie sur SAP et excel... à moins que la COM - FI ne fasse de la magouille de tableaux.. La règle prévaut..

  2. #22
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    818
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 818
    Points : 49
    Points
    49
    Par défaut
    Bonjour à tous,

    je reviens car je n'arrive toujours pas avoir un arrondi correct

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    Private Function Arrondi(ByVal Nombre, ByVal Decimales)
          Arrondi = Int(Nombre * 10 ^ Decimales + 1 / 2) / 10 ^ Decimales
    End Function
     
    Sub vba()
     
    Dim DernLigne As Long
     
    Dim Sommetotal As Long
     
    Dim Fs As Object, A As Object
     
    Dim i As Long
     
            feuille = Sheets("information").Range("B6").Value
             Code = Sheets("information").Range("c6").Value
            typeecriture = Sheets("information").Range("E6").Value
     
    Sheets(feuille).Select
    DernLigne = Sheets(feuille).Range("A65536").End(xlUp).Row
    date_export = Replace(Sheets("information").Range("D6").Value, "/", "-")
     
    Set Fs = CreateObject("Scripting.FileSystemObject")
    Set A = Fs.CreateTextFile("J:\Comptabilite\Documents\" & date_export & ".txt", True)
    A.WriteLine ("Type Ecriture   Code Journal    Date de Pièce   N° Compte Général   N° Compte tiers Libellé d'écriture  Montant débit   Montant crédit  N°Plan  N° section")
         For i = 1 To DernLigne
     
             'If Sheets(feuille).Range("C" & i).Value <> "" Then
                             If IsNumeric(Sheets(feuille).Range("D" & i).Value) Then
     
                         Else
                                              Sheets(feuille).Range("D" & i).Value = "0,00"
                         Sheets(feuille).Range("D" & i).NumberFormat = "0.00"
     
     
                    End If
     
                             If IsNumeric(Sheets(feuille).Range("E" & i).Value) Then
     
                         Else
                                            Sheets(feuille).Range("E" & i).Value = "0,00"
                         Sheets(feuille).Range("E" & i).NumberFormat = "0.00"
     
                    End If
     
     
                    If Sheets(feuille).Range("D" & i).Value = "" Then
                                         Sheets(feuille).Range("D" & i).Value = "0,00"
                         Sheets(feuille).Range("D" & i).NumberFormat = "0.00"
     
                    End If
     
            If Sheets(feuille).Range("E" & i).Value = "" Then
                                 Sheets(feuille).Range("E" & i).Value = "0,00"
                         Sheets(feuille).Range("E" & i).NumberFormat = "0.00"
     
                     End If
     
     
            A.WriteLine (typeecriture & vbTab & Code & vbTab & date_export & vbTab & Range("C" & i) & vbTab & vbTab & Range("A" & i) & vbTab & Arrondi((Range("D" & i).Value), 2) & vbTab & Arrondi(Range("E" & i).Value, 2) & vbTab & vbTab)
     
    'Else
     
    'End If
       Next
        A.Close
    'Columns(5).TextToColumns FieldInfo:=Array(1, 1)
    'Columns(4).TextToColumns FieldInfo:=Array(1, 1)
    End Sub
    Dans le fichier txt la colonne G est à 195080.28 et la colonne H à 195080.27
    Alors que dans le fichier excel le total des deux colonnes sont identiques

  3. #23
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    Ta fonction Arrondi n'étant pas typée, donc en Variant, prendra à cause des décimales un type Variant / Double par défaut …
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub DemoPrecisionCalcul()
        Const F$ = "20.4 - 19.6", L$ = vbLf & vbLf
     
        C@ = Evaluate(F)
        D# = Evaluate(F)
        S! = Evaluate(F)
     
        MsgBox Space(27) & "Calcul  :  " & F & L & "Type :    (@)   Currency =  " & C & L & _
               Space(15) & "(#)     Double =  " & D & L & _
               Space(15) & "(!)        Single =  " & S, vbExclamation
    End Sub
    A méditer …

    Voir par exemple pour arrondir directement du côté de la fonction CCur

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

Discussions similaires

  1. Macro VBA sur des onglets réalisable ?
    Par djiyll dans le forum Excel
    Réponses: 3
    Dernier message: 31/05/2014, 01h28
  2. Réaliser des coins arrondis
    Par laurentSc dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 31/01/2013, 10h21
  3. Réponses: 7
    Dernier message: 08/03/2004, 15h30
  4. Comment réaliser des modèles de documentations avec XML ?
    Par Dams76 dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 29/08/2003, 02h15

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