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 d'une sélection de cellules en nombres


Sujet :

Macros et VBA Excel

  1. #1
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 520
    Par défaut Conversion d'une sélection de cellules en nombres
    Bonjour,

    Dans ma sélection j'ai 3 cellules en colonnes sous forme de chaines :
    45 140,95
    2 005,92
    1 707,77

    Je voudrais faire une macro qui transforme cette sélection en nombres:

    45140,95
    2005,92
    1707,77

    L'élimination des espace fonctionne bien, mais je n'arrive pas à transformer les chaines en nombres.
    J'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByColumns, MatchCase:=False
        Selection.NumberFormat = "0,00"
    Mais sans succès
    Quelqu'un pourrait il m'aider ?

    Merci

    A+
    Charly

    PS je suis en Excel 2000 (!!)

  2. #2
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 369
    Par défaut
    Bonjour Charly,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.NumberFormat = "#,##0.00"

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Le problème, c'est que VBA considère que la "," est un séparateur de milliers et non de décimales.
    A la limite, il vaudrait mieux faire ça "à la main" avec la commande Remplacer puisque Excel comprendra mieux que VBA ce format "à la française".

    Idem pour la "," placée dans le NumberFormat.

    Si tu tiens à la faire en VBA, essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, SearchOrder:=xlByColumns, MatchCase:=False
        Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByColumns, MatchCase:=False
        Selection.NumberFormat = "# ##0.00"

  4. #4
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 369
    Par défaut
    Bonjour Menhir,

    De mon côté, le NumberFormat = "#,##0.00" fonctionne très bien

  5. #5
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 520
    Par défaut
    Merci Révèr,

    mais cela ne fonctionne pas non plus, la macro me renvoie :

    45140,95
    2005,92
    1707,77

    mais cadrés à gauche et quand je veux faire la somme des 2 cellules j'ai 0,00

    A+
    Charly

  6. #6
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 369
    Par défaut
    Je ne sais pas s'il peut exister une différence avec la version 2000 d'Excel. Néanmoins, tu as oublié de préciser dans la création de ton poste. Tu as une liste déroulante avec les versions d'Excel, je ne saurai que te conseiller de lire le sujet qui a été épinglé dans le forum à cet effet.

    La solution de Menhir pourra peut-être te convenir, en tout cas comme précisé dans mon derneir message. Cette manière d'écrire le Numberformat fonctionne parfaitement dans mon cas.

  7. #7
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 520
    Par défaut
    Bonjour Menhir,

    ta solution me renvoie :

    45*140.95
    2*005.92
    1*707.77

    cadrés à gauche et la somme des 3 cellules et toujours 0,00

    A+
    Charly

  8. #8
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 369
    Par défaut
    Dans ce cas, essaie une combinaison des 2 pour retirer l'espace et garder la virgule ?

  9. #9
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 520
    Par défaut
    Désolé, c'est ma première demande sur le forum Excel, je n'avais pas vu la liste déroulante mais j'avais indiqué Excel 2000 dans mon post. Est ce qu'il faut indiquer autre chose ?

    A+
    Charly

  10. #10
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonjour
    c'est déconseillé selon les regles du forum mais je crois que pour aller direct au but ..peux tu joindre un petit fichier test sans macro ni données confidentielles

  11. #11
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 369
    Par défaut
    Indiquer la version d'Excel permet de prendre en compte des fonctionnalités existantes ou non.

    Je n'ai pas réussi à reproduire la même erreur que toi. Cela étant dit, j'ai déjà été confronté à ce problème. Essaie d'écrire un nombre décimal dans une cellule et regarde la manière dont est faite la syntaxe.

    Par ailleurs, si cette variable est une valeur monétaire tu peux aussi utiliser la fonction "CCur" qui la transformera en valeur monétaire.

  12. #12
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 520
    Par défaut
    Bonjour BENNASR


    Voici le fichier simplifié Exemple.xls (En XLS 2000)

    Exemple.zip

    je n'ai pas compris comment on pouvait regarder la manière dont est faite la syntaxe. (Format de cellule m'affiche : #\ ##0,00 après exécution de la macro)

    peut être qu'il faut utiliser Val() ? (mais je ne sais pas comment)

    Chose curieuse, après exécution, si je me place dans l'une des cellules et que je tape "Enter", la cellule se cadre à droite et devient donc une valeur numérique.

    A+
    Charly

  13. #13
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 520
    Par défaut
    Désolé, j'ai laissé la macro dans le fichier joint, voici le même sans macro !

    Exemple2.zip

  14. #14
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 369
    Par défaut
    Essaie avec une fonction de conversion de type :

    https://docs.microsoft.com/fr-fr/off...sion-functions

  15. #15
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 520
    Par défaut
    J'ai essayé avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByColumns, MatchCase:=False
        Selection.Value = CDbl(Selection.Value)
    ou bien avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByColumns, MatchCase:=False
        Selection.NumberFormat = "# ##0.00"
     
        Selection.Value = CDbl(Selection.Value)
    Mais j'ai une erreur "Incompatibilité de type" sur la dernière ligne dans les 2 cas

    Edit : bizarre, quand je copie la macro sur le forum " " se transforme en "*"

  16. #16
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 369
    Par défaut
    Selection est un objet Range pour le coup non ? Il fait référence à 3 Cellules. Je ne pense pas que CDbl puisse-t-être attribué à une plage de cellules.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim Cell As Range
    'Si ça ne fonctionne pas, peut-être créer une variable de stockage temporaire du type :
    'Dim affTemp As Double
     
    For Each Cell In Selection
    Cell.Value = CDbl(Cell.Value)
    'affTemp = CDbl(Cell.Value)
    'Cell.Value = ""
    'Cell.Value = affTemp
    Next Cell

  17. #17
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    à tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub convert()
    Dim c As Range
    Dim plage As Range
    Set plage = Sheets("Test").Range("F1:F100")
        Range("F1:F100").Replace What:=".", Replacement:=",", LookAt:=xlPart, SearchOrder:=xlByColumns, MatchCase:=False
        Range("F1:F100").Replace What:=" ", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByColumns, MatchCase:=False
        For Each c In plage
        c.Value = Replace(c.Value, Chr(10), "")
        c.Value = CDbl(c.Value) * 1
        Next c
        Range("F1:F100").NumberFormat = "# ##0.00"
    End Sub

  18. #18
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 520
    Par défaut
    J'ai fait un test dans un éditeur hexadécimal :

    Le caractère séparateur des milliers dans mes cellules n'est pas un espace, mais en binaire " " donne 22 C2 A0 22

    dans la macro j'ai bien le bon caractère, car il est supprimé

    mais ça ne fonctionne toujours pas, la chaine ne veurt pas s'afficher en numérique !

    A+
    Charly

  19. #19
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par BENNASR Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Range("F1:F100").NumberFormat = "# ##0.00"
    Pour VBA, le séparateur de milliers est ",", donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Range("F1:F100").NumberFormat = "#,##0.00"
    Mais il serait sans doute plus simple d'utiliser NumberFormatLocal pour rester dans des formats connus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Range("F1:F100").NumberFormatLocal = "# ##0,00"

  20. #20
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 520
    Par défaut
    Super, merci à tous les 2

    vos solutions qui sont semblables fonctionnent bien.

    Je conserve celle de Révèr qui prend directement en compte ma sélection

    heureusement que je suis plus doué en Delphi qu'en Macro Excel

    Merci encore

    A+
    Charly

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Conversion d'une sélection de cellule Excel en plage VBA
    Par vynmarius dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/08/2019, 16h21
  2. Impression d'une sélection de cellules en recto verso
    Par jaihna dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/11/2013, 10h58
  3. [XL-2010] Appliquer une macro sur une sélection de cellule
    Par Fireblade51 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 09/04/2013, 10h59
  4. Impression PDF d'une sélection de cellules
    Par d0n32 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/11/2011, 17h53
  5. Réponses: 3
    Dernier message: 26/09/2006, 11h33

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