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 :

[VBA-E] Macro pour conversion donnée caractère en numérique sous excel


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut [VBA-E] Macro pour conversion donnée caractère en numérique sous excel
    Bonjour,

    Je travaille sur une base donnée dont les 10 premières colonnes sont du texte et les 150 suivantes sont numériques. Seulement voila, tous les nombres de ces dernières colonnes, qui n'ont pas de chiffres après la virgule sont reconnus en texte et possède un ' au début.
    Si je sélection toutes ces données et que je fais Format>Nombre, ca ne change rien a cause des petits '.
    Il faudrait en fait que je fasse Sélection d'une colonne>Données>Convertir. Sauf que je devrai répéter cette opération 16 000 fois environ. Autrement dit c'est l'horreur.
    Comme c'est une fonction que je dois répéter, j'ai pensé que peut être une macro pourrai le faire automatiquement. Mais je ne m'y connais absolument pas en VBA. Donc après un long moment de galère a chercher comment faire, je vous apelle au secour !

    Donc voila : Connaitriez vous une petite macro qui me permette de répéter tout seul cette manipulation ?

    Merci 1000 fois par avance !!!!!! :-)
    Elendis.

  2. #2
    Membre habitué Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Points : 181
    Points
    181
    Par défaut
    Hello, bienvenue sur le forum,

    En utilisant l'enregistreur de macro, j'obtiens cette fonction textocolumns, je ne la connais pas trop :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Columns("E:E").Select
        Selection.TextToColumns Destination:=Range("E1"), DataType:=xlFixedWidth, _
            FieldInfo:=Array(0, 1), TrailingMinusNumbers:=True
    Essaie déjà sur une colonne pour voir si ça fait ce que tu veux, ensuite on verra

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup déja.
    Mais tu aurais une idée de comment faire une boucle disant de répéter cette macro de la colonne S à la colonne EZ ?

  4. #4
    Membre habitué Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Points : 181
    Points
    181
    Par défaut
    avec qqch comme ça, ça devrait aller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = Range("S1").Column To Range("EZ1").Column
        Columns(i).Select
        'le code
    Next
    Tu dis

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Du coup j'ai écrit ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For I = 19 To 218
     
        Columns(I).Select
        Selection.TextToColumns Destination:=Cells(1,I), DataType:=xlFixedWidth,
            FieldInfo:=Array(0, 1), TrailingMinusNumbers:=True
     
        Next I
    et je ne comprend pas pourquoi ca ne marche pas. J'ai un message d'erreur..........

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    désolée j'avais pas vue ta réponse avant de poster ma derniere réponse

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    en fait le probleme est le terme range, je dois le remplacer par cells pour y mettre la variable i et du coup le programme ne marche pas.
    Mais merci quand meme pour tout :-)

  8. #8
    Membre habitué Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Points : 181
    Points
    181
    Par défaut
    Hum, bon en fait l'argument destination est facultatif , donc tu peux faire sauter, regarde ce que ça te donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = 19 To 218
        Columns(i).Select
        Selection.TextToColumns DataType:=xlFixedWidth, FieldInfo:=Array(0, 1), TrailingMinusNumbers:=True
    Next i
    par contre si tu as une colonne ou il a pas de données à convertir, lui pas être content...

  9. #9
    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
    Si tu as toujours un pb, tu as une autre solution un peu brutale consistant à parcourir ta plage en remplaçant le texte par sa valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(NoLigne, NoCol).value = val(Cells(NoLigne, NoCol))
    Dans une boucle sur la plage, ce sera + long que la méthode préconisée par cwain mais peut-être au bout du bout, tu éconnomiseras des tests
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub ConvertirTextEnValeur()
    Dim LaPlage As Range
    Dim Cell As Range
    Set LaPlage = Range("S1:EZ" & Range("A1").SpecialCells(xlCellTypeLastCell).Row)
        For Each Cell In LaPlage
            Cell.Value = Val(Cell.Value)
        Next
        On Error GoTo 0
    End Sub
    Si tu ne dois faire ça qu'une fois, tu ne perdras pas trop de temps
    Si tu as des pb de valeurs déjà converties, elles ne changent pas.
    A+

Discussions similaires

  1. [VBA-PP] macro pour insérer des images dans PowerPoint
    Par mashpro dans le forum VBA PowerPoint
    Réponses: 4
    Dernier message: 01/08/2006, 22h56
  2. [VBA-E] Macro Récupération de donnée afin d'en faire un rapport.
    Par strifer dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 25/07/2006, 15h37
  3. [VBA-E] Macro pour tous fichiers Excel ?
    Par belfaigore dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/07/2006, 18h25
  4. [VBA-E] Macro pour copier cellules
    Par jfamiens dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 07/06/2006, 20h02
  5. [VBA-E] Macro pour convertir un fichier texte en excel
    Par Nicolas67 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/05/2006, 14h47

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