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 :

remplacer . par ,


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 138
    Par défaut remplacer . par ,
    Bonjour,
    Lorsque j'utilise la fonction remplacer . par , dans une macro cela me créé des trucs assez étranges et aléatoires...ca peut * par 1000 mon résultat par exemple et mes cases sont reconnues comme du texte au lieu de nombres...
    Du coup cette fonction est inutilisable dans le cas de macros (enfin j'ai pas la solution)
    Auriez vous une idée ?
    Merci de votre aide

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut captaine93 et le forum
    La multiplication me laisse sceptique, mais le remplacement du point par la virgule demande une redéfinition du format de la cellule. N'ayant pas beaucoup de données, il faudrait un code du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Cel as range
    '......définition de cel....
    Set cel = .......
    Cel = CDec(Replace(Cel, ".", ","))
    Cel.NumberFormatLocal = "0,00"
    Mais sans infos précises...
    A+

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    389
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 389
    Par défaut
    essaie

    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
    Function MaValeur(Chaine)
     
        Dim fin
        Dim temp
        Dim i
     
        fin = ""
     
        For i = 1 To Len(Chaine)
            temp = Mid(Chaine, i, 1)
            If Asc(temp) >= 48 And Asc(temp) <= 57 Then
                fin = fin & temp
            ElseIf temp = "." Then
                fin = fin & ","
            End If
        Next
     
        MaValeur = CDbl(fin)
     
    End Function

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 138
    Par défaut
    salut !
    Merci de t'être penché sur mon problème
    Voici le fichier excel sur lequel je fais mes tests en pièce jointe.
    Voici le code que j'ai dans ma macro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       Cells.Select
        Selection.NumberFormat = "0.000"
        Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    Je ne comprends pas que cela multipliedes valeurs...en fait ca doit décaler la virgule de 3 chiffres...
    Merci
    Fichiers attachés Fichiers attachés

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    389
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 389
    Par défaut
    Après essai avec ta méthode, j'ai l'impression que les nombres < 1 sont convenablement convertis. Pour les nombres >1 il semble que le point soit considéré comme le séparateur des milliers (je pense aux US mais là je ne suis pas sûr) , c'est pourquoi 1.147 serait converti en 1147,000

    J'ai essayé avec ma méthode, ça semble correct. Si tu tiens absolument aux 3 décimales il suffit d'appliquer un format en conséquence ensuite.

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    Une autre approche ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub MetVirgule()
    Dim Lig As Integer, Col As Integer
        Range("C2:R5").Select
        Selection.NumberFormat = "@"
        For Lig = 2 To 5
            For Col = 3 To 18
                Cells(Lig, Col) = Replace(Cells(Lig, Col), ".", ",")
            Next Col
        Next Lig
        Selection.NumberFormat = "0.000"
    End Sub
    A+

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 138
    Par défaut
    merci de vos réponse...j'ai essayé la méthode de Leforestier qui marche bien...
    sauf que mes cases ne sont pas reconnues comme des nombres : il y a un ptit losange vert qui me dit que c'est du texte alors que quand je fais un click droit, c'est bien du nombre...du coup, pas moyen de faire une moyenne...une idée ?
    Encore merci !

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

Discussions similaires

  1. Accents remplacés par des ? durant l'écriture
    Par mona dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 03/01/2006, 14h13
  2. Trouver ' et remplacer par \' dans une chaîne
    Par micatmidog dans le forum Général Python
    Réponses: 9
    Dernier message: 23/12/2005, 16h09
  3. impossible de remplacer "-" par "_"
    Par fabrice1596 dans le forum Langage
    Réponses: 2
    Dernier message: 04/11/2005, 11h31
  4. [XSLT] Remplacer par des caractères spéciaux
    Par OXyGN dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 29/07/2005, 17h30
  5. [JSTL] Mes variables ne sont pas remplacées par leur valeur
    Par thomine dans le forum Taglibs
    Réponses: 9
    Dernier message: 18/03/2005, 10h00

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