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 :

Formatage de nombres


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Par défaut
    Salut,

    J'ai lu cette discussion.

    La dernière solution ne change rien chez moi

    C'est étonnant car lorsqu'on fait manuellement Edition/remplacer/"."par"", cela résoud le problème, j'ai donc enregistré cette manip sous la forme d'une macro mais cela ne fonctionne pas

    Comment peut-on faire sous VBA ? (j'ai testé les solutions précédentes sans succès)

    D'avance merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Par défaut
    J'ai trouvé cette solution :

    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
     
    Sub try1()
     
    Dim nblignes As Integer
    Dim tai As Integer
    Dim sep As Integer
    Dim gauche1 As Integer
    Dim droite2 As Integer
    Dim j As Integer
    Dim c As Integer
     
    nblignes = ActiveSheet.UsedRange.Rows.Count
    'compte le nombre de lignes de la feuille active
    For c = 4 To 5
    'définit les colonnes surlesquelles se feront les modifications
    For j = 2 To nblignes
    'définit les lignes surlesquelles se feront les modifications
    '
    tai = Len(Cells(j, c))
    'compte le nombre de caractères
    sep = Mid(Cells(j, c), tai - 2, 1)
    'identifie le séparateur de décimale, se trouvant 3 caractères avant la fin (pour un nombre avec 2 chiffres après la virgules, si plus remplacer le 2 par ce nombre de chiffres apres la virgule)
    If sep = "." Then
    'pour que la modif ne se fasse que si on trouve un .
    gauche1 = Left(Cells(j, c), tai - 3)
    'sélectionne tous les caractères à gauche du séparateur
    droite2 = Right(Cells(j, c), 2)
    'sélectionne tous les caractères à droite du séparateur
    Cells(j, c) = gauche1 & "," & droite2
    'concatène la partie gauche, le séparateur voulu et la partie droite
    Cells(j, c) = Cells(j, c) + 0
    'active la cellule en tant que nombre
    End If
    Next j
    Next c
    End Sub
    C'est moi qui ai mis les Dim mais ca ne doit pas etre bon, toujours est il que cela ne fonctionne pas... Quelqun saurait ? D'avance merci

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Avril 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 46
    Par défaut
    Bonjour,

    Pour mes traitements d'extration d'ERP, j'utilise la routine suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Sub ConvertSeparateurDecimal()
        Application.ScreenUpdating = False
        For Each Cell In Selection
            Cell.Value = Replace(Cell.Value, ",", ".")
        Next Cell
    End Sub
    Je l'ai associé au menu contextuel. Ainsi, on sélectionne la plage puis clic droit.

    Pour ce qui est de la logique du code, il est utilise le fait que VBA est écrit en anglais alors que les feuilles Excel sont en langue régionale.

    Il suffit juste d'avoir l'esprit un peu tordu...

    Re boujour,

    J'avais zappé le séparateur de décimal...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub ConvertSeparateurDecimal()
        Application.ScreenUpdating = False
        For Each Cell In Selection
            Cell.Value = Replace(Cell.Value, ".", "")
            Cell.Value = Replace(Cell.Value, ",", ".")
        Next Cell
    End Sub
    Et voilà, ça marche nickel

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Par défaut
    Merci pour ta macro, je l'ai testée en remplacant le point par rien
    mon 1.234,56 devient bien 1234,56 mais ce dernier nombre n'est pas reconnu en format nombre et en ajoutant dans la macro Selection.NumberFormat = "0,00" mais malgré cela, ils ne sont toujours pas reconnu comme des nombres...

    Que pensez vous de la précédente macro de mon dernier post ? que lui manque t il pour fonctionner ? désolé je suis un peu nouvelle dans le domaine !

  5. #5
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    parce que c'est une chaîne de caractères (à cause du point). Je fais un petit test et je reviens.

  6. #6
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    C'est en fait à la fois le point, la virgule et l'espace qui bousillent tout. Voilà quelque chose qui devrait marcher correctement. Testé chez moi sous WinXP et ExcelXP.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub SepMilPointVersEsp()
        ' S'ajustera aux paramètres régionaux de l'ordinateur
        Dim s As String
        Dim r As Double
        Dim c As Range
        For Each c In Selection
            s = c.Value
            s = Replace(s, ".", "")     'séparateur de milliers, remplacer par rien
            s = Replace(s, ",", ".")    'le point décimal
            r = Val(s)
            c.Value = r
            c.NumberFormat = "#,##0.00" ' mettre l'espace dans le format
        Next
    End Sub

Discussions similaires

  1. [XSL-FO] formatage de nombre
    Par qouify dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 16/05/2006, 13h58
  2. [PHP-JS] Formatage de nombre
    Par goldorax113 dans le forum Langage
    Réponses: 5
    Dernier message: 08/05/2006, 11h50
  3. formatage de nombre
    Par Phiz dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 29/03/2006, 18h17
  4. Formatage de nombres dans une page JSP
    Par Addouna dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 10/03/2006, 13h01
  5. Formatage des nombres à l'affichage
    Par nbutin dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 13/07/2004, 10h54

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