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 :

Utilisation de NumberFormat [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2012
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Septembre 2012
    Messages : 42
    Points : 32
    Points
    32
    Par défaut Utilisation de NumberFormat
    Bonjour à tous,

    je m'arrache les cheveux sur cette problématique pourtant simple...

    Dans une colonne, je veux m'assurer qu'il n'y a que des chiffres avec le format X,XX (si il y a autre chose, quoique ce soit, je vide la cellule)

    du coup je tente d'utiliser NumberFormat de cette façon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If NumberFormat.(Cells(ligne, colbarre)) <> "0,00" Then Cells(ligne, colbarre).Value = ""
    ça ne marche pas du tout, et je ne trouve pas comment utiliser NumberFormat comme condition.

    Je doute même que cela fonctionne mais j'aimerai réussir à le tester.

    D'avance merci pour votre aide.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Avec cette syntaxe cela irait beaucoup mieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(ligne, colbarre).NumberFormat <> "0.00" Then Cells(ligne, colbarre).Value = ""
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    En effet ça ne fonctionnera pas, tu peux avoir ta cellule au format "0,00" et avoir du texte comme contenu.

    Si je comprend bien :
    2,5 c'est bon ?
    1936,35 c'est bon ?
    50 c'est pas bon, il faut supprimer ?
    12,125 c'est pas bon, il faut supprimer ?
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Septembre 2012
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Septembre 2012
    Messages : 42
    Points : 32
    Points
    32
    Par défaut
    @corona: merci, je l'avais pris de travers ça marche déjà mieux comme ça.

    @fring: en fait, ça marche. Si je met du texte, il le retire bien. Par contre, il efface aussi certaines de mes valeurs. En fait non, je ne checkais pas toutes le lignes -_-

    C'est une colonne de prix, donc, tous les chiffres avec 2 chiffres après la virgule sont valident. pour reprendre tes exemples.
    sont valident: 2,5 ; 1936,35 ; 50
    n'est pas valide: 12,125

    je pense que numberformat n'est pas la bonne solution... je vais chercher autre chose, si vous avez des idées, je suis preneur ^^

  5. #5
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    teste ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If IsNumeric(Cells(ligne, colbarre)) Then
        If InStr(Cells(ligne, colbarre), ",") > 0 Then
            If Len(Split(Cells(ligne, colbarre), ",")(1)) > 2 Then Cells(ligne, colbarre) = ""
        End If
    Else
        Cells(ligne, colbarre) = ""
    End If
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Septembre 2012
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Septembre 2012
    Messages : 42
    Points : 32
    Points
    32
    Par défaut
    J'en étais un peu au même point que toi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If Right(Cells(ligne, colbarre), Len(Cells(ligne, colbarre)) - InStr(",", Cells(ligne, colbarre))) > 2 Then
        Cells(ligne, colbarre).Value = ""
    ça n'est pas fonctionnel... ils a des erreurs là dedans

    mais j'ai finalement utiliser split comme tu le suggère et c'est bien mieux:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For ligne = 2 To LigneFin
    If Not IsNumeric(Cells(ligne, colbarre)) Then Cells(ligne, colbarre).Value = ""
    If InStr(Cells(ligne, colbarre), ",") > 0 Then
        If Len(Split(Cells(ligne, colbarre), ",")(1)) > 2 Then Cells(ligne, colbarre).Value = ""
    End If
    Next
    problème réglé, merci Fring et Corona,
    Bonne continuation.

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

Discussions similaires

  1. Utilisation de numberFormat
    Par IPreferCSharp dans le forum VB.NET
    Réponses: 0
    Dernier message: 28/11/2013, 09h53
  2. [NumberFormat] : utilisation de la methode parse()
    Par richard_34b dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 20/10/2004, 15h07
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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