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 :

[Résolu] VBA impossible de convertir en format monétaire car espaces invisibles [XL-2019]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 69
    Par défaut [Résolu] VBA impossible de convertir en format monétaire car espaces invisibles
    Bonjour

    Je n’arrive pas à faire une macro qui me convertit le contenu de la colonne dans laquelle les données semblent monétaires mais que je ne peux additionner.
    Je voudrais donc une aide pour les convertir en format monétaire pour faire des additions.
    il s’agit d’un fichier qui est généré par l’export au format excel d’une application.
    j’ai bien sur demander au service informatique de réparer cet export mais ça prendra du temps on m'a dit c'est en haut de la pile mais pas rapidement....
    La seule solution pour le moment que j'ai trouvée c’est de faire un rechercher remplacer tout et de sélectionner deux fois deux suite les espaces invisibles mais c'est assez fastidieux donc si ça pouvait être fait par la macro je préférerai.
    et je ne connais pas les codes de ces espaces invisibles j'ai bien essayé d'autres polices que calibra en vain.
    Merci pour votre aide.
    Bon dimanche
    Fichiers attachés Fichiers attachés

  2. #2
    Membre très actif
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    Décembre 2021
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Décembre 2021
    Messages : 387
    Par défaut
    Bonjour,

    A tester :

    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
     
    Option Explicit
     
    Sub Test()
     
    Dim I As Integer, DerniereColonne As Integer, DerniereLigne As Integer
     
        With Sheets("datas")
             DerniereColonne = .Cells(1, .Columns.Count).End(xlToLeft).Column
             DerniereLigne = .Cells(.Rows.Count, 1).End(xlUp).Row
     
             .Cells(1, DerniereColonne + 1).Formula = "=SUBTOTAL(9," & .Range(.Cells(2, DerniereColonne + 1), .Cells(DerniereLigne, DerniereColonne + 1)).Address & ")"
             .Cells(1, DerniereColonne + 1).NumberFormat = "#,##0.00 $"
     
             For I = 2 To DerniereLigne
                 .Cells(I, DerniereColonne + 1) = Conversion(.Cells(I, DerniereColonne))
                 .Cells(I, DerniereColonne + 1).NumberFormat = "#,##0.00 $"
             Next I
        End With
     
    End Sub
     
     
    Function Conversion(ByVal Valeur As String) As Variant
     
    Dim I As Integer
     
        Conversion = ""
        For I = 1 To Len(Valeur)
           Select Case Mid(Valeur, I, 1)
                   Case Chr(32), Chr(160), "€"
     
                   Case 0 To 9, ","
                        Conversion = Conversion & Mid(Valeur, I, 1)
           End Select
        Next I
     
        Conversion = CDbl(Conversion)
     
    End Function

  3. #3
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Salut, testé et fonctionne:

    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 ConvertirFormatMonetaire()
     
        Dim ws As Worksheet
        Dim c As Range
        Dim rng As Range
     
        Set ws = Worksheets("datas")
        Set rng = ws.Range("D2:D" & ws.Cells(ws.Rows.Count, "D").End(xlUp).Row)
     
        For Each c In rng
            If IsNumeric(c.Value) Then
                c.Value = CDbl(c.Value)
                c.NumberFormat = "#,##0.00 €"
            End If
        Next c
     
    End Sub

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 69
    Par défaut j'ai testé vos deux propositions
    Bonjour
    Merci Franc et E KERGRESSE

    On m'a dit que le problème viendrait de l'espace juste avant le symbole qui est considéré comme un "no-break space"

    Sinon, j'ai testé vos deux propositions :

    Celle de Franc ne fonctionne pas : je la lance mais quand je sélectionne les cellules pour voir en bas à droite de la feuille excel si elle fait bien les totaux elle me dit le nombre de sélections mais pas le total ou la moyenne.
    Peut-être est le format proposé dans la macro qui n'est pas français car séparateur de milliers virgule et séparateurs de centimes le point même si j'ai essayé en enlevant le point remplacé par la virgule. il y a peut-être quelque chose que j'ai pas bien fait.

    celle de E. KERGRESSE fonctionne qui combine avec une fonction me transforme bien le contenu de la colonne D dans la colonne adjacente et fait le total.

    Je mets le fichier xlm avec les deux macros: la macro test () fonctionne et celle de Franc ConvertirFormatMonetaire() qui semble ne pas fonctionner.

    test-pour-macro.xlsm

    Encore une fois merci énormément

  5. #5
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Comme précisé dans ma première réponse, j'avais testé. J'ai donc retesté sur le dernier classeur que tu as envoyé et de nouveau ça fonctionne. Quand je sélectionne les cellules contenant les valeurs, j'ai bien le total qui s'affiche sur la barre de statut en bas à droite. Quand j'insère la fonction "Somme" en bas de colonne, j'ai bien le total qui s'affiche.
    Donc le problème ne vient pas de la macro. La macro travaille sur la feuille "Datas", tu es sûr de ne pas avoir testé "Datas(2)" ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 69
    Par défaut
    Avec mes excuses et remerciements Franc pour avoir regardé à nouveau.

    J'avais bien lu que tu avais testé.

    Ta macro pour le moment ne marche pas sur mon ordinateur. Ça doit venir d'autres choses comme tu le dis.
    Je vais demander à un ami de la tester sur son ordinateur.

    Bien à vous deux.
    Et encore bon dimanche.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/01/2017, 09h51
  2. Réponses: 20
    Dernier message: 27/01/2016, 18h24
  3. Réponses: 20
    Dernier message: 05/06/2006, 16h07
  4. [VBA-E]automatiser "clic droit, format cellule, texte"
    Par jmlcea dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/04/2006, 16h21
  5. [XPATH] Impossible de convertir #BOOLEAN en un NodeList
    Par claudyyyyy dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 08/02/2006, 16h00

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