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 :

[EXCEL] Nombres avec espace...


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 149
    Points : 43
    Points
    43
    Par défaut [EXCEL] Nombres avec espace...
    Voila.
    j'ai une feuille excel avec des nombres.
    Quand je fais des additions de cellules, çà ne marche pas car mes nombres ont un format bizzare, il y a deux espaces entre les milliers
    Ex: 2 354,20


    J'ai essayé le format des cellules, rien ne change.

    Quelqu'un aurait une idée de fonction VBA prenant une plage de cellules comme paramètres et supprimant les 2 espaces pour chacune d'elles?

    Merci

  2. #2
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 149
    Points : 43
    Points
    43
    Par défaut
    ogenki le problème c'est que je ne suis pas programmeur
    je suis dans l'économie...
    Tu aurais le code VBA de ta fonction?

  3. #3
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    avec une formule excel tu peu utilise CNUM... si


    =CNUM(2 354,20 ) donne 2354,20 ...

    si non il faut voir comment est organisée ta plage de nombre et executer par exemple une macro qui dans la dite zone recherche et remplace un espace par rien... tu peu te donner une idée de la macro .. en enregistrant une macro qui effectue cette action de remplacement...

  4. #4
    Expert confirmé
    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
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    Si les données contenues dans les cellules sont de type String, tu ne pourras jamais faire d'opérations arythmétiques avec ces cellules. Un moyen de vérifier le contenu d'une cellule. Mets le format à Standard et si le contenu s'aligne à droite, c'est un nombre. Par contre si le contenu s'aligne à gauche, c'est une chaîne de caractères. Tu peux aussi vérifier par code:

    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
    Public Sub TesterCellule()
        Dim strType As String
        Select Case VarType(Selection.Value)
          Case 0
            strType = "Empty"
          Case 1
            strType = "Null"
          Case 2
            strType = "Integer"
          Case 3
            strType = "Long"
          Case 4
            strType = "Single"
          Case 5
            strType = "Double"
          Case 6
            strType = "Currency"
          Case 7
            strType = "Date"
          Case 8
            strType = "String"
          Case 9
            strType = "Object"
          Case 10
            strType = "Error"
          Case 11
            strType = "Boolean"
          Case 12
            strType = "Variant"
          Case 13
            strType = "DataObject"
          Case 14
            strType = "Decimal"
          Case 17
            strType = "Byte"
          Case 8192
            strType = "Array"
        End Select
        MsgBox strType
    End Sub
    que tu mets dans un module de code. Puis tu appelle la macro TesterCellule. Tu verras bien

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    bONSOIR?
    Une petite question : les chiffres qui sont dans tes cellules, tu les importes ou tu les tapes toi-même ?? Parceque si tu les tapes toi-même, il n'y a aucune raison qu'il y ait 2 espaces entre les milliers.

    jpleroisse

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Importés de certaines bases, les nombres peuvent être formatés avec un espace <> chr(32) contrairement au format de nombre d'excel "avec séparateur de milliers"
    Il suffit donc de faire un remplacement sur la colonne de ce caractère par rien.
    Ce peut être chr(160) (Ascii) qui correspond à Alt + 255 manuel (Ansi)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    LeCar = chr(160) 
    Columns("A:A").Select 
    Selection.Replace What:=LeCar , Replacement:="", LookAt:=xlPart, _ 
    SearchOrder:=xlByRows, MatchCase:=False
    Si c'est pas chr(255), tu dois analyser un nombre se trouvant dans une cellule pour en découvrir le code ascii différent du code des chiffres > 57 et < 48 et différent du code de la virgule <> de 44

    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
    Sub ChercherLaPetiteBête()
        Nombre = ActiveCell.Formula
        If Nombre = "" Then MsgBox "Sélectionner une cellule contenant une valeur à tester"
        For i = 1 To Len(Nombre)
            LeCar = Asc(Mid(Nombre, i, 1))
            ok = LeCar < 48 Or LeCar > 57 And LeCar <> 44
            If ok Then
                MsgBox LeCar
                Columns(ActiveCell.Column).Select
                Selection.Replace What:=Chr(LeCar), Replacement:="", LookAt:=xlPart, _
                    SearchOrder:=xlByColumns, MatchCase:=False
                Exit Sub
            End If
        Next
    End Sub
    Mais essaie d'abord le remplacement manuel dans ta colonne avec Alt + 255

    Une fois que tu connais le code, mets le dans un coin, il te resservira la prochaine fois...

    Tu dis

    A+

    Ouf !

Discussions similaires

  1. Réponses: 28
    Dernier message: 05/06/2012, 10h36
  2. plugin Tablesorter, tri nombre avec espaces (1 000)
    Par Nympheasi dans le forum jQuery
    Réponses: 9
    Dernier message: 02/11/2010, 17h15
  3. [SP-2007] Colonne au format "nombre" avec des espaces ?
    Par Faro dans le forum SharePoint
    Réponses: 2
    Dernier message: 15/05/2009, 09h48
  4. Réponses: 8
    Dernier message: 27/10/2008, 17h52
  5. [Excel] Formattage des nombres avec PHPExcel !
    Par gentyjp dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 10/10/2007, 03h00

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