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 :

Conserver le format d'une cellule définie en variable (currency)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    419
    419 est déconnecté
    Membre confirmé
    Homme Profil pro
    Portage Salarial
    Inscrit en
    Mars 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Portage Salarial
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2005
    Messages : 82
    Par défaut Conserver le format d'une cellule définie en variable (currency)
    Bonjour,
    mon titre n'est pas clair mais je n'ai pas trouvé mieux.

    J'ai un montant en USD ou EUR dans une cellule.
    Je souhaite utiliser ce montant ET le format (usd ou eur) pour l'utiliser dans une autre feuille (coller le montant ET appliquer le format à un ensemble de cellule)

    Ma cellule est définie en variable as currency.

    J'ai initialement tenté de vérifier le format à l'arrivée mais étant une variable, je pense que ca ne marche pas.
    J'ai tenté de le faire au départ c'est à dire définir une condition sur la variable mais sans succès.


    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
     
    ' sur une feuille active, je copie le taux à facturer
    Dim Dayrate As Currency
     
    'check day rate currency and apply
        If ActiveCell.Offset(, 7).NumberFormat = "[$$-409]#,##0.00" = True Then
        Dayrate = Format(ActiveCell.Offset(, 7), "[$$-409]#,##0.00")
        Else
        Dayrate = ActiveCell.Offset(, 7)
        End If
     
    'sur une nouvelle feuille créée, je vide les cellules puis je colle le taux   
    Range("a19:c23").ClearContents
        Range("c19") = Dayrate
     
    ' apply currency to invoice
        If Range("c19").NumberFormat = "[$$-409]#,##0.00" = True Then
        Range("c19:g31").NumberFormat = "[$$-409]#,##0.00"
        Else
        End If
     
    End sub
    Merci pour votre aide dans la compréhension du souci.

    En bref, quand j'ai 480 euros dans la cellule, tout baigne (car rien ne change ).
    Si j'ai 480 usd, j'ai tjs 480 euros à l'arrivée..

  2. #2
    Invité
    Invité(e)
    Par défaut
    bonjour,
    d'ou ou de quel moyen les donnée son entré dan Excel?
    les 480 sont justifié à droite ou à gauche?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     If ActiveCell.Offset(, 7).NumberFormat = "[$$-409]#,##0.00" = True Then
        Dayrate = Format(ActiveCell.Offset(, 7), "[$$-409]#,##0.00")
    ActiveCell.Offset(, 7).value=ActiveCell.Offset(, 7).value
        Else
        Dayrate = ActiveCell.Offset(, 7)
        End If

  3. #3
    419
    419 est déconnecté
    Membre confirmé
    Homme Profil pro
    Portage Salarial
    Inscrit en
    Mars 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Portage Salarial
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2005
    Messages : 82
    Par défaut
    Je récupère les données d'un autre fichier ou les datas sont rentrées en dur. Si USD, format US, si EUR, format euro.
    Je les colle sur la feuille xy de mon fichier actuel en respectant le format.
    De là j'applique ma macro pour créer une nouvelle feuille yy en récupérant les datas de la feuille xy.

    données non justifiées a priori. juste le format $ ou € qui est appliqué sur la cellule.

  4. #4
    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,

    Adapte dans le code et teste. Je suis parti du principe que tu as déjà créé une nouvelle feuille (par copie je suppose car tu vide une zone) devant recevoir la valeur et le formatage (ici, nommée "Feuil2") puis que tu reviens sélectionner une cellule dans la feuille source et que tu lance le code après ça :
    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
     
    Sub Test()
     
        Dim FeDest As Worksheet
        Dim Cel As Range
        Dim USD As Boolean
     
        'défini la cellule cible sur la feuille active
        Set Cel = ActiveCell.Offset(, 7)
     
        'adapter le nom de la feuille recevant la valeur et le formatage !
        'feuille nouvellement créée ?
        Set FeDest = Worksheets("Feuil2")
     
        'contrôle le format
        If InStr(Cel.NumberFormat, "$$") <> 0 Then USD = True Else USD = False
     
        'vide les cellules puis colle la valeur
        FeDest.Range("A19:C23").ClearContents
        FeDest.Range("C19") = Cel.Value
     
        If USD = True Then
            FeDest.Range("C19:G31").NumberFormat = "[$$-409]#,##0.00"
        Else
            FeDest.Range("C19:G31").NumberFormat = "#,##0.00 $"
        End If
     
    End Sub

  5. #5
    419
    419 est déconnecté
    Membre confirmé
    Homme Profil pro
    Portage Salarial
    Inscrit en
    Mars 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Portage Salarial
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2005
    Messages : 82
    Par défaut
    bonsoir,
    j'ai adapté.

    Ca fonctionne.
    je comprends pas trop pourquoi je n'y arrive pas autrement que via ta fonction mais ça remplit l'objectif cherché.

    Merci

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

Discussions similaires

  1. VB6 - Definir le format d une cellule sur Excel
    Par Zaal dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/07/2006, 14h22
  2. [VBA-E] vérifier le format d'une cellule
    Par jouf dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/06/2006, 20h51
  3. [VBA-E]changer le format d'une cellule dans un spreadsheet
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 13/02/2006, 11h12
  4. Comment forcer le format d'une cellule?
    Par cha_cha dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/11/2005, 14h31
  5. Display Format d'une cellule d'une DBGrid
    Par Wilco dans le forum Bases de données
    Réponses: 5
    Dernier message: 21/10/2004, 13h00

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