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 :

Conversion de format texte en numérique


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Mai 2012
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 60
    Points : 48
    Points
    48
    Par défaut Conversion de format texte en numérique
    Bonjour,

    J'ai une colonne de données à convertir en format numérique sans décimale, mais le code que j'utilise usuellement ne fonctionne plus, je ne comprends pas pourquoi...

    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
     
    Sub MEF()
     
    Dim nblignetot As Long
    nblignetot = Range("A" & Rows.Count).End(xlUp).Row
     
    For Each cell In Range("A3:A" & nblignetot)
     
    cell.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False
    cell.Value = CDbl(cell.Value)
    cell.NumberFormat = "0"
     
    Next cell
     
    End Sub
    je vous joins les données , merci bien de corriger mon erreur svp.
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Essayez ce 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
    Sub MEF()
     
    Dim NbligneTot As Long
     
        NbligneTot = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
     
        With ActiveSheet.Range("A3:A" & NbligneTot)
            .Replace What:=".", Replacement:=".", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False ', SearchFormat:=True, ReplaceFormat:=False
            .NumberFormat = "0"
     
        End With
     
    End Sub
    En VBA, le point reste le séparateur décimal. Le changement en virgule ou non est dû à votre paramétrage local.

    Cordialement.

  3. #3
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour,

    tout comme Eric !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub MEF()
        With Feuil1.Range("A3", Feuil1.Cells(Feuil1.Rows.Count, 1).End(xlUp))
            .Replace ".", ".", xlPart
            .NumberFormat = "0"
        End With
    End Sub
    Une autre approche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub MEF()
        With Feuil1.Range("A3", Feuil1.Cells(Feuil1.Rows.Count, 1).End(xlUp))
                   .Value = .Value
            .NumberFormat = "0"
        End With
    End Sub
    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  4. #4
    Membre du Club
    Inscrit en
    Mai 2012
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 60
    Points : 48
    Points
    48
    Par défaut
    Merci beaucoup pour vous deux, apparement ça a bien marché sur le dossier que je vous ai joint, mais sur le fichier original ça ne marche toujours pas... je ne comprends pas le problème...

    Je vous renvoie donc le fichier original, pourriez vous me corriger de nouveau svp??

    Le code que j'ai utilisé est :
    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
     
    Sub MEF()
     
    Dim NbligneTot As Long
     
    NbligneTot = Range("A" & Rows.Count).End(xlUp).Row
     
    For Each cell In Range("K3:L" & NbligneTot)
        cell.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
        cell.Value = CDbl(cell.Value)
        cell.NumberFormat = "0"
    Next cell
     
    With ActiveSheet.Range("A3:A" & NbligneTot)
            .Replace What:=".", Replacement:=".", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False
            .NumberFormat = "0"
    End With
     
    End Sub

  5. #5
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Rien de corrigé et qui plus est, où est le fichier original ?‼

    Rien qu'en reprenant l'un de mes deux codes, le deuxième par exemple …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par idhmida Voir le message
    mais sur le fichier original ça ne marche toujours pas... je ne comprends pas le problème...
    Ca fonctionne sur la colonne A, n'est ce pas ?

    Cordialement.

  7. #7
    Membre du Club
    Inscrit en
    Mai 2012
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 60
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Ca fonctionne sur la colonne A, n'est ce pas ?

    Cordialement.
    Ce n'est pas un problème de colonne, je l'ai bien décaler pour appliquer votre code, mais sur le fichier initial rien ne marche.

    Désolée pour l'oubli, j'ai été prise dans autre chose au boulot, grrr c'est compliqué d'aller sur internet au travail hehe.


    Voici le fichier en PJ et je voudrais faire la même opération sur la colonne montant1, montant2, montant3

    Merci beaucoup pour votre temps!!!

    IDH
    Fichiers attachés Fichiers attachés

  8. #8
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Aucun souci de mon côté avec ce nouveau fichier ‼

    Donc revoir votre code …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  9. #9
    Invité
    Invité(e)
    Par défaut Bonjour, regarde ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function ConverTxtInteger(v) As Integer
    Dim t As String
    t = Replace(v, ".", ",")
    If IsNumeric(t) Then ConverTxtInteger = t: Exit Function
    t = Replace(t, ",", ".")
    If IsNumeric(t) Then ConverTxtInteger = t: Exit Function
    End Function
     
     
    Sub Test()
    Debug.Print ConverTxtInteger("10.05")
    End Sub

  10. #10
    Invité
    Invité(e)
    Par défaut
    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 MEF()
     
    Dim I As Long
     
        For I = 1 To ActiveSheet.UsedRange.Columns.Count
            Select Case I
                   Case 11, 12, 22
                        With ActiveSheet.Columns(I)
                            .Replace What:=".", Replacement:="." ' Pour reprendre la proposition plus simple de Marc
                            .NumberFormat = "0"
                   End With
             End Select
     
        Next I
     
    End Sub
    Cordialement.

  11. #11
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut Ou en plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub MOUARF()
        For Each COL In [{11,12,22}]
            With Feuil1.UsedRange.Columns(COL)
                       .Value = .Value
                .NumberFormat = "0"
            End With
        Next
    End Sub
    _______________ ____________________________________ ______________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    __________________________________________________________________________________________
    Il n'y a pas que les aigles qui atteignent les sommets, les escargots aussi mais ils en bavent !
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  12. #12
    Membre du Club
    Inscrit en
    Mai 2012
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 60
    Points : 48
    Points
    48
    Par défaut
    C'est résolu!!
    Merci à tous !! C'était vraiment super gentil!!

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

Discussions similaires

  1. Conversion date format texte en timestamp sql server 2008 R2
    Par nathantahiti dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 02/09/2011, 09h02
  2. Réponses: 31
    Dernier message: 02/11/2010, 20h07
  3. [XL-2003] Empecher la conversion d'un texte en numérique
    Par daringa dans le forum Excel
    Réponses: 1
    Dernier message: 26/07/2010, 09h55
  4. [AC-2003] Conversion de format texte en date ou extraction
    Par gwenagan dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 09/08/2009, 21h01
  5. Réponses: 4
    Dernier message: 19/06/2006, 19h15

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