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]Remplacer 125- par -125 dans des cellules


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut [VBA-E]Remplacer 125- par -125 dans des cellules
    Bonjour à tous,

    J'ai un fichier Excel dont certaines cases contiennent des chiffres négatifs au format "200-". Je souhaiterai transformer via une macro ces nombres au format négatif d'Excel soit "- 200".

    Je cherche un code pour exécuter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Si cellule contient signe "-" alors supprime le et ajoute le signe "-" au début
    Merci d'avance pour votre aide !

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub macroplcemoins()
    Dim v As Range
    Dim y As Variant
    Set v = ActiveWindow.RangeSelection
    For Each y In v
    MsgBox (Val(Left(y, Len(y) - 1)) * -1)
    If Right(y, 1) = "-" Then y.Value = Val(Left(y, Len(y) - 1)) * -1
    Next y
     
    End Sub

  3. #3
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    allez, je me fends aussi de ma petite solution ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For Each c In Range("A1:M50").Cells
        If c.Value Like "*-" And Not (c.HasFormula) Then
            c.Value = -1 * CDbl(Replace(c.Value, "-", vbNullString))
        End If
    Next c

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci à tous pour vos réponses

    D'abord, désolé de ne pas avoir précisé mon sujet, je le ferai la prochaine fois.

    La solution de caféine fonctionne parfaitement.

    Autre demande :

    Via ma macro j'ai modifié le format des nombres en "comptabilité" avec 2 en nombre de décimales soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Columns("C:H").Select
    Selection.NumberFormat = "_(* #,##0.00_);_(* (#,##0.00);_(* ""-""??_);_(@_)"
    Effectivement, la modification se fait (quand je vérifie dans les propriétés sous Excel c'est parfait) mais ça ne prend pas en compte l'affichage de ce format. Les centimes par exemple ne s'alignent pas.

    Merci d'avance !

  5. #5
    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 543
    Points
    15 543
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns("C:H").NumberFormat = "#,##0.00"
    A+

    NB - Je ne comprends pas
    Les centimes par exemple ne s'alignent pas.

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Explication :

    Format "Comptabilité" dans les propriétés, donc la macro a bien fait son boulot, mais à l'affichage il n'a pas un format "Comptabilité" :



    Voilà un format comptabilité :


  7. #7
    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 543
    Points
    15 543
    Par défaut
    Essaie d'ajouter cette ligne après numberFormat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            Columns("E:E").HorizontalAlignment = xlRight
    mais vérifie que les nombres ne soient pas considérés comme du texte (en faisant la somme)
    A+

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse

    J'y ai pensé aussi mais ce n'est pas un alignement à droite c'est un alignement spécial du format "comptabilité".


  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 543
    Points
    15 543
    Par défaut
    En utilisant le même code que toi, toute ma feuille s'est mise au format comptabilité.
    Selection.NumberFormat = "_(* #,##0.00_);_(* (#,##0.00);_(* ""-""??_);_(@_)"
    Tu as quelle version d'Excel ?
    Edit
    Tu mets bien le format après le remplacement de 456- par -456 ?

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Excel 2000


    et oui je mets bien le format apres le remlpacement du signe moins.

    Mais moi aussi ma feuille se met bien au format comptabilité sauf que l'affichage de celui-ci ne s'applique.

    Si tu veux tester, mets ta feuille au format comptabilité via une macro puis double clique sur une cellule et valide sans rien modifier

    tu remarquera que l'affichage change

  11. #11
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    Juste une question : quand c'est pas au format compatibilité, si tu clique dans la cellule et que tu fais Entrée, ça se met pas au bon format par la suite ?

  12. #12
    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 543
    Points
    15 543
    Par défaut
    Tu as raison, Il,
    J'avais ça dans 97
    et c'est précisément ce que souligne également ju75011

    Bon, j'ai tester avec VBA 97
    Deux réponses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub remplirLaPlage()
    For I = 1 To 20
        Cells(I, 2) = (1000 * Rnd) + 1
        Cells(I, 2).NumberFormat = "_(* #,##0.00_);_(* (#,##0.00);_(* ""-""??_);_(@_)"
    Next
    End Sub
    Le format ne s'applique pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub remplirLaPlage()
    For I = 1 To 20
        Cells(I, 2) = (1000 * Rnd) + 1
    Next
    Columns("B:B").NumberFormat = "_(* #,##0.00_);_(* (#,##0.00);_(* ""-""??_);_(@_)"
    End Sub
    Le format s'applique (!?!)
    Tu testes ?
    A+

  13. #13
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    Heuu ça me le fait au boulot, et j'ai le pack office 2000

    Sinon, pour avoir la bonne valeur, suffit juste de créer une valeur temporaire où tu met la valeur de la cellule, et tu remet dans la cellule, genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ValTemp = cells(1,1).value
    cells(1,1).value = valtemp
    C'est barbare mais chez moi ya que comme ça que je retrouve mes valeurs

  14. #14
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonjour à tous,

    Merci pour vos réponses, chez moi vos solutions ne donnent rien

    Si vous avez une autre idée je suis preneur, je continue à chercher de mon coté

    merci d'avance !

  15. #15
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Je viens de tester sur un Excel 2003 ce code (basé sur celui de cafeine):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim c As Range
    For Each c In Range("A1:A2").Cells
      c.NumberFormat = "_(* #,##0.00_);_(* (#,##0.00);_(* ""-""??_);_(@_)"
      If c.Value Like "*-" And Not (c.HasFormula) Then
        c.Value = -1 * CDbl(Replace(c.Value, "-", vbNullString))
      End If
    Next c
    et le format est bien appliqué.

    Si ce n'est pas résolu demain, j'essayerai sur un 2000.

  16. #16
    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 543
    Points
    15 543
    Par défaut
    Il y a des moments où je dis vraiment n'importe quoi
    La grippe, ça te fout un homme en l'air comme qui rigole
    Je fais le ménage

Discussions similaires

  1. [VBA-E] Comparer des valeurs dans des cellules
    Par michel2662 dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 22/06/2017, 15h00
  2. VBA/Excel "Mise en forme de texte dans des cellules"
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/03/2007, 16h20
  3. [VBA-E]Remplacement virgules par tabulation dans un fichier texte
    Par Mlezen dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 03/05/2006, 14h03
  4. [VBA-E] afficher des données dans des cellules
    Par Bad Bond dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/04/2006, 14h04
  5. [VBA]effacer les espaces à ralonge dans des cellules
    Par repié dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/01/2006, 11h00

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