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 :

Format des nombres


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    Bonjour,
    Comment faire pour convertir un nombre dans une cellule au format 0 au lieu du format 0.00 dans le 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    Sub COPYPASTESEL()
    Worksheets("RECUP").Activate
    ActiveWorkbook.Save
    MsgBox "FIN REMONTEE DEBUT CALCUL"
     
     
     
     
        Dim PremLig As Long
        Dim Derlign As Long
        Dim Lign As Long
        Dim Col As Integer
        Dim NomF As String
     
        NomF = "RECUP"
     
     
        With Sheets("RECUP").Range("DV2:DV1000")
    Cells(2, 126).Select
     
    y = 2
     
    While y <= 1000
     
     
     
     
    Set cel = Cells.Find(What:="FAUX", After:=ActiveCell, LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
     
    If cel = "VRAI" Then
     
    Cells(y + 1, 126).Select
    Set cel = Cells.Find(What:="FAUX", After:=ActiveCell, LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
     
     
    If cel = "FAUX" Then
     
     
    Cells(y + 2, 7).Select
     
    PremLig = y + 2
     
     
     
     
     
        Derlign = Range("A2", Range("A2").End(xlDown).Offset(1, 0)).Rows.Count + 1
     
     
     
        For Lign = PremLig To Derlign
            If Cells(Lign, 1).Value <> "" Then
                For Col = 7 To 125
                Cells(Lign, Col).Select
                    If Not IsNumeric(Cells(Lign, Col).Value) Or Cells(Lign, Col).Value = "" Then
                        Cells(Lign, Col).Value = Cells(Lign, Col).Value
                    Else
                        Cells(Lign, Col).NumberFormat = "General"
                        Cells(Lign, Col).Value = CSng(Cells(Lign, Col).Value)
     
                    End If
                Next
            End If
        Next
     
     End If
     End If
     
     y = y + 1
     
     Wend
     
     
     
    MsgBox "FIN"
     
     End With
    End Sub
    J'essaie de remplacer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(Lign, Col).NumberFormat = "General"
    par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(Lign, Col).NumberFormat = "Standard"
    et j'ai une erreur méthode range.
    Est-ce parce que le code trouve des nombres déjà à ce format dans certaines cellules?????
    Dans ce cas, comment remédier au problème?

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    Bon esprit pour un forum d'entre aide, j'ai toujours eu des réponses constructives à tous mes posts y compris à celui ci parce que je te l'assure aucun problème ne se pose avec les "FAUX" mais bien juste ce problème de format à la toute fin du problème posé par ce code qui fonctionne très bien avec "General" mais pas avec "Standard" et je pense bien que c'est parce que certaines cellules doivent déjà être en bien que je ne comprends pas pourquoi cela pose un problème au code de tomber sur un qu'il est sensé transformer en .

    Je n'avais jamais encore eu de réponse aussi "tournée vers l'autre" ici

    Pour info, l'enregistreur de Macro donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub FORMATNB()
    '
    ' FORMATNB Macro
    '
     
    '
        Range("G62").Select
        Selection.NumberFormat = "0.00"
    End Sub
    par exemple, ce qui ne répond pas à la problématique même adapté comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Else
                        Cells(Lign, Col).NumberFormat = "General"
                        Cells(Lign, Col).Value = CSng(Cells(Lign, Col).Value)
                        Cells(Lign, Col).Select
                        Selection.NumberFormat = "0.00"
                    End If
    et que je n'ai pas encore pu tester

  3. #3
    Expert éminent
    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
    Par défaut

    En créant une discussion avec un post initial clair, ce serait plus simple !

    Qu'est-ce qui ne fonctionne pas ? Quelle est la ligne de code incriminée ? Le message d'erreur ?
    Comme c'est expliqué dans les règles du forum … Voilà, ce n'est pas plus compliqué.

    Quant à ta dernière demande, encore une fois, le format Standard n'existe pas en VBA !

    Est-ce si difficile de vérifier en VBA quel est le format d'une cellule ? Quelle est la difficulté ?

    _____________________________________________________________________________________________________
    Lire … C'est s'investir !

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Pour que tu comprenne mieux ton problème de format regarde ce qui se passe dans ma fenêtre exécution

    ?ActiveCell.NumberFormat
    General
    ?ActiveCell.NumberFormatLocal
    Standard
    et donc le format "General" c'est de l'anglais .. traduit en français "Standard" ...

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    Donc "General" dans le code proposé par un autre forumeur dans:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For Lign = PremLig To Derlign
            If Cells(Lign, 1).Value <> "" Then
                For Col = 7 To 125
                    If Not IsNumeric(Cells(Lign, Col).Value) Or Cells(Lign, Col).Value = "" Then
                        Cells(Lign, Col).Value = Cells(Lign, Col).Value
                    Else
                        Cells(Lign, Col).NumberFormat = "General"
                        Cells(Lign, Col).Value = CSng(Cells(Lign, Col).Value)
    ne correspond pas au format du nombre?
    En tout cas ça fonctionne très bien, ça me convertit bien mes nombres stockés au format texte au format nombre, general?????
    J'essayais donc de transformer "General" par "Standard" comme trouve ici:

    Formats numériques nommés (fonction Format)
    Le tableau suivant présente les noms des formats numériques prédéfinis :
    Nom de format
    Description
    Nombre général
    Affichage du nombre sans séparateur de milliers.
    Monétaire
    Affichage du nombre avec un séparateur de milliers, le cas échéant ; affichage de deux chiffres à droite du séparateur décimal. Le résultat est fonction des paramètres régionaux de votre système.
    Fixe
    Affichage d’au moins un chiffre à gauche et de deux chiffres à droite du séparateur décimal.
    Standard
    Affichage d’un nombre avec séparateur de milliers et d’au moins un chiffre à gauche et de deux chiffres à droite du séparateur décimal.
    Pourcentage
    Affichage d’un nombre multiplié par 100 suivi du signe pourcentage (%) ; affichage automatique de deux chiffres à droite du séparateur décimal.
    Scientifique
    Utilisation de la notation scientifique standard.
    Oui/Non
    Affichage de Non si le nombre est 0 ; sinon affichage de Oui.
    Vrai/Faux
    Affichage de Faux si le nombre est 0 ; sinon affichage de Vrai.
    Actif/Inactif
    Affichage de Inactif si le nombre est 0 ; sinon affichage de Actif.

    A cette adresse:

    https://msdn.microsoft.com/fr-fr/lib.../gg251755.aspx

    A OK là c'est limpide!

    Quelle pourrait être alors la bonne traduction pour avoir un nombre au format:

    "0.00"??

  6. #6
    Expert éminent
    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
    Par défaut



    Tu l'as déjà dans ton code …

    Sinon encore une fois regarder ce que retourne VBA pour les propriétés NumberFormat et NumberFormatLocal !

  7. #7
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par Kestion100 Voir le message
    ...
    A OK là c'est limpide!

    Quelle pourrait être alors la bonne traduction pour avoir un nombre au format:

    "0.00"??
    tu as aussi une fenêtre exécution (CTRL+G) dans ton éditeur VBA ... et tu peu utiliser ma méthode vu plus haut !!!

  8. #8
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    Le code pourrait donc être:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     If Not IsNumeric(Cells(Lign, Col).Value) Or Cells(Lign, Col).Value = "" Then
                        Cells(Lign, Col).Value = Cells(Lign, Col).Value
                    Else
                        Cells(Lign, Col).NumberFormat = "0.00"
                        Cells(Lign, Col).Value = CSng(Cells(Lign, Col).Value)
    au lieu de:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     If Not IsNumeric(Cells(Lign, Col).Value) Or Cells(Lign, Col).Value = "" Then
                        Cells(Lign, Col).Value = Cells(Lign, Col).Value
                    Else
                        Cells(Lign, Col).NumberFormat = "General"
                        Cells(Lign, Col).Value = CSng(Cells(Lign, Col).Value)

  9. #9
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Comment faire pour convertir un nombre dans une cellule au format 0 au lieu du format 0.00 dans le code
    Tu as essayé de cette façon ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Cells(Lign, Col).NumberFormat = "0"

Discussions similaires

  1. Format des nombres
    Par an1981 dans le forum MATLAB
    Réponses: 2
    Dernier message: 29/12/2007, 14h08
  2. Réponses: 3
    Dernier message: 03/08/2007, 09h06
  3. [Lazarus] Format des nombres dans TDBEdit,TDBText
    Par chlubister dans le forum Lazarus
    Réponses: 1
    Dernier message: 14/05/2007, 17h26
  4. Formater des nombres
    Par kloss dans le forum Mise en forme
    Réponses: 3
    Dernier message: 10/05/2006, 17h57
  5. Format des nombres entiers, séparateurs de milliers
    Par zazaraignée dans le forum Langage
    Réponses: 2
    Dernier message: 26/10/2005, 01h25

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