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 :

Convertir une selection de texte en chiffre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Par défaut Convertir une selection de texte en chiffre
    Je souhaite utiliser un grand ensemble de données issues de mon ERP.
    La difficulté est que les nombres ressortent en format "texte":

    Le nombre 146000,00 s'écrit de la manière suivante : 146.000,00
    Si je remplace dans une macro le caractère '.' par rien.
    Le "146000,00" est au format texte
    Je force par macro le changement de format en format numérique.

    La macro s’exécute bien mais pour Excel m'informe :
    'Le nombre dans cette cellule est au format texte ou précédé d'une apostrophe'
    Je dois faire un forçage manuel pour convertir en texte.

    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sheets("Data").Select
     
    Range("L:O,Q:Q,T:W,Y:AB,AD:AG,AI:AL,AW:AX,BB:BE").Select
     
    Selection.Replace What:=".", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
     
    Selection.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??        _);_(@_)"
    ...

    Vos idées car je galère...
    A++

    Marc

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Je dis peut-être une bétise mais as-tu essayé "CInt" ?
    http://www.techonthenet.com/excel/formulas/cint.php

    EDIT : ou plutot "CSng" dans ton cas. http://www.techonthenet.com/excel/formulas/csng.php
    ou encore "CDbl"...
    http://www.techonthenet.com/excel/formulas/cdbl.php

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Par défaut
    J'ai trouvé un moyen pour le faire à travers une boucle FOR mais ça mettait 2/3 minutes de traitement... car la boucle for traitait une cellule après l'autre.

    L'idée serait de gagner du temps de traitement en faisant mes manips sur des selections

  4. #4
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Alors, à tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub essai()
    Dim Tabl(), i As Long
    Tabl = Range("L:O,Q:Q,T:W,Y:AB,AD:AG,AI:AL,AW:AX,BB:BE")
    For i = LBound(Tabl, 1) To UBound(Tabl, 1)
        For j = LBound(Tabl, 2) To UBound(Tabl, 2)
            Tabl(i, j) = CDbl(Tabl(i, j))
        Next j
    Next i
    Range("A1").Resize(UBound(Tabl, 1), UBound(Tabl, 2)) = Tabl
    End Sub
    Tu fais ton cast dans un tableau et non pas cellule par cellule !
    Avec un test rapide, cela m'a prit 20 secondes. J'espère que ça sera pareil pour toi avec toutes tes valeurs !
    Tiens moi au courant ! =)

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable sécurité
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Par défaut
    Merci, le gain obtenu est à peine perceptible... Il doit bien exister une solution pour forcer une sélection de cellule à passer en nombre.

Discussions similaires

  1. Convertir une Date US (Texte) en FR
    Par troxsa dans le forum VB.NET
    Réponses: 8
    Dernier message: 13/07/2008, 12h26
  2. Copier une selection de texte automatiquement
    Par didier.aucun dans le forum VBA Word
    Réponses: 23
    Dernier message: 27/06/2007, 20h27
  3. [Requête]Convertir une chaine de texte en format date
    Par emjie dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 19/04/2007, 00h44
  4. Faire une selection de texte et la travailler
    Par simou37000 dans le forum Flash
    Réponses: 3
    Dernier message: 19/07/2006, 04h44

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