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 :

Ecrire True et non VRAI dans une cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 34
    Par défaut Ecrire True et non VRAI dans une cellule
    Bonjour,
    Je dois traiter avec excel des extractions de base de donnés sur des utilisateurs (Id, Prenom, Age, Ratio, EstMajeur...,), traiter ces valeurs(Modification, ajout de paramètres...) pour les importer dans un logiciel, en fichier texte.
    Ce logiciel prend comme valeur booléen True/False et non Vrai/Faux

    je cherche donc un moyen d’écrire en anglais(True, False) dans une cellules de type texte. Mais vba utilise les valeurs (Vrai,Faux).
    Y a-t-il un moyen de spécifier dans le code vb, un choix la langue de la cellule doit être l'anglais?

    Je peux bien sur utiliser une condition if pour écrire True ou False dans cette cellule, mais je me demande si il y a d'autres manières (Spécifier une langue pour une cellule) qui pourrait régler en même temps le problème de la notation décimale(Point/Virgule).

    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 Test()
        Range("A1", "C1").Clear
        Range("A1", "C1").NumberFormat = "General"
     
        Dim ValeurD As Double
        ValeurD = 2.56
        Cells(1, 1).Value = ValeurD             'Affiche 2,56 et non 2.56
     
        Dim ValeurB As Boolean
        ValeurB = True
        'Cells(1, 3).NumberFormat = "@"   'Ne change rien
        Cells(1, 2).Value = ValeurB            'Affiche VRAI
     
        Cells(1, 3).NumberFormat = "@"    'Obligatoir sinon la valeur de la cellule est "VRAI"
        If ValeurB Then Cells(1, 3).Value = "True" Else Cells(1, 3).Value = "False"
     
    End Sub
    Merci d'avance.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    c'est la localisation d'excel qui traduit TRUE en VRAI, tu ne peux rien y faire.
    Pas d'autre choix que d'inscrire TRUE en texte :
    [A1] = "'TRUE"
    note le ' pour forcer en texte, sinon mettre les cellules au format Texte.

    eric

  3. #3
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 34
    Par défaut
    Merci pour la confirmation.
    Dommage.

    Goulven

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    pas de varable boolean mais string
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim ValeuB as string
    ValeurB="True"

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Pour le séparateur décimal tu peux utiliser temporairement celui d'excel et rétablir à la fin :
    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
    Dim UseSystemSeparatorsSav As Boolean, DecimalSeparatorSav As String
    Sub sepDecimalExcel()
        With Application
            ' sauvegarder
            UseSystemSeparatorsSav = .UseSystemSeparators
            DecimalSeparatorSav = .DecimalSeparator
            ' changer
            .DecimalSeparator = ","
            .UseSystemSeparators = False
        End With
    End Sub
     
    Sub retablirSepDecimal()
        With Application
            .UseSystemSeparators = UseSystemSeparatorsSav
            .DecimalSeparator = DecimalSeparatorSav
        End With
    End Sub
    eric

  6. #6
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 34
    Par défaut
    Merci pour les réponses,
    rdurupt : pas de varable boolean mais string
    Cette solution ne m'arrange pas parce-que je souhaite utiliser cette valeur comme un booléen pour réaliser différents traitements,
    j'ai donc opté pour garder le type booléen, puis lors de l''écriture sur la feuille je passe ce booléen en String.

    Merci Eric pour la solution du séparateur décimal je vais regarder cela de plus prés.

    Comme ce projet (Migration d'un logiciel vers un autre) consiste a réimporter différents instances d'objet (Utilisateur, métiers, Horaires...) j'ai choisi de programmer en objet, cela semble bien s'y prêter.
    Mais comme je commence en vba j'ai du mal a structurer mon code entre les données sur les feuilles et mes objets vba.
    Par exemple quand je créé une instance d'objet utilisateur, il y a souvent des valeurs non renseignées et si j'utilise les types "primitifs" de vba je me retrouve quand même avec des initialisations de ces paramètres:

    Par exemple, J'ai un objet Utilisateur:

    Nom: String
    Prenom: String
    DateDeNaissance: Date
    Age: Integer

    Quand je créé une instance sans initialiser la Age par exemple, cette variable prend par défaut la valeur 0 et cela ne m'arrange pas.
    J'ai donc construit comme il existe en java des "wrapper" de type primitif (wInteger, wBoolean...)
    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
     
    '****************************************************
    ' Classe wInteger
    '
    '****************************************************
     
    Option Explicit
     
    '****************************************************
    ' Declarations
    '****************************************************
    Private pValue As Integer
    Private pIsSet As Boolean
    '****************************************************
    ' Constructeur
    '****************************************************
    Private Sub Class_Initialize()
        pValue = 0
        pIsSet = False
    End Sub
     
    '****************************************************
    ' Accesseurs
    '****************************************************
     
    Public Property Get IsSet() As Boolean
        IsSet = pIsSet
    End Property
    Public Property Get Value() As Integer
        Value = pValue
    End Property
    Public Property Let Value(Value As Integer)
        pValue = Value
        pIsSet = True
    End Property
    Function ToString() As String
        ToString = ""
        If pIsSet Then ToString = CStr(pValue)
    End Function

    Ces "wrappers" me permette de détecter si cette variable est initialisée ou non lors de la création de l'objet pour ne avoir a traiter des initialisations par défaut (Date en 01/01/1900, Integer a 0...)
    Mais je ne sais pas si je me complique pas un peu la tâche.

    Enfin bref, c'est pour cela que je garde mes valeurs typées(Boolean, Integer, Date) Plutôt que de les définir en tant que String.

    Goulven

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 174
    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 : 13 174
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Cette solution ne m'arrange pas parce-que je souhaite utiliser cette valeur comme un booléen pour réaliser différents traitements,
    En excel (version française) comme indiqué plus haut VRAI et FAUX sont des booléens et valent 1 et 0 alors qu'en VBA c'est -1 et 0 mais la conversion est faites au moment de l'écriture et/ou lecture.
    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

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

Discussions similaires

  1. Ecrire et retour à la ligne dans une cellule JTable
    Par CostaInf dans le forum Composants
    Réponses: 2
    Dernier message: 30/05/2012, 10h05
  2. Ecrire en gras dans une cellule
    Par ouardia dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/07/2007, 12h05
  3. Ecrire dans une cellule en VBA
    Par ade94 dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/07/2007, 17h15
  4. [VBA-E] Ecrire dans une cellule sans écraser son contenu
    Par skystef dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/02/2007, 15h43
  5. Réponses: 4
    Dernier message: 15/04/2005, 15h25

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