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 :

Calcul automatique VBA [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2012
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 5
    Par défaut Calcul automatique VBA
    Bonjour,

    Je souhaiterai qu'un calcul se fasse de manière automatique dans la cellule ou l’élément est saisie. je m'explique :

    j'ai un tableau dont je dois faire entrée sur plusieurs lignes et colonnes des montants en TTC.
    Je veux que lorsque je tape le montant ,par ex: 1 196, et que je le valide, le montant qui apparaitra au final dans ma cellule soit 1 000, c a dire du HT.

    je cherche donc une formule vba du genre :
    si la cellule n'est pas vide alors la saisie est divisé par 1.196

    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Besoin de VBA ?!

    Met dans la celulle destination (là où tu veux que ton calcul soit fait) ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(Z50=""; ""; Z50/1,196)
    en remplacant Z50 par la cellule d'origine.

    Cela ne te suffit pas ? =)

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2012
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 5
    Par défaut
    lol

    en fait mon soucis c'est que ma cellule de destination est ma cellule de saisie. elles se confondent, c'est pour sa que je veux passer par du VBA.

    le tableau fait apparaitre un récapitulatif du chiffres d'affaires des différents clients sur l'année civiles.
    le souci c'est que les éléments que j'ai sont de base en TTC et je veux que lorsque j'indique le montant, il apparait directement en HT.

    j'avais donc penser a
    cellule active diviser par /1.196 mais le résultat que j'ai ne prends pas en compte le montant que j'ai saisie, il me fait la formule par défaut avec 1 ( 1/1.196)
    j'ai essaye de faire un copier/coller dans la même cellule et ensuite le coller / 1.196 mais n’étant pas une pro du vba sa ne marche pas.

  4. #4
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Perso, je n'utiliserai pas le VBA. Je décalerai par exemple toute ma colonne en TTC en mettant la formule que je t'ai donné dans la bonne colonne.

    Pour autant, si tu y tiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub TTC_HT()
    Dim test As Range
     
    With Worksheets("Feuil4")
        Set test = .Range("A1")
        For i = 0 To .Columns(test.Column).Find("*", , , , xlByColumns, xlPrevious).Row - 1
            If IsNumeric(test.Offset(i, 0).Value) Then
                test.Offset(i, 0).Value = (test.Offset(i, 0).Value / 1.196)
            End If
        Next i
     
    End With
     
    End Sub
    Remplace "Feuil4" par le nom de ton onglet et "A1" par la première cellule de la colonne sur laquelle sur veux appliquer ta macro.

    Dis moi si cela te convient !

    /!\ => Si tu appliques deux fois ta macro tu va avoir un problème ! /!\ ^^

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour

    je crois avoir compris ce que tu veux faire

    tapez un montant et des que tu a fini de taper le montant se change en ttc ou ht c'est bien ca

    et bien avec l'évènement change ca n'est pas possible
    tu va devoir passer par l'évènement "onkeypress)

    si c'est la touche entrer ,alors activecell=activecell/1.196

    mais ca n'est pas un bon raisonnement j'utiliserais a ta place une colonne cachée

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Je procèderais de la même manière que patricktoulon ! ^^

  7. #7
    Membre à l'essai
    Inscrit en
    Novembre 2012
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2012
    Messages : 5
    Par défaut
    merci pour ces réponses.
    je vais tester la formule vba et vous tiens au courant.
    Oui c'est bien cela que je veux faire. le TTC apparait en HT après ma saisie.
    je comprends que c'est plus simple de mettre une colonne en plus mais
    mon tableau récapitule par clients et par mois sur l'année entière. soit 24 colonnes et pleins de données a masquer ...

  8. #8
    Membre éclairé
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Septembre 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Analyste Programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 32
    Par défaut
    Bonjour,

    J'ai fait un test avec l'événement change de ma feuil et cela fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Target.Value = Target.Value / 1.196
    maintenant cette macro ne marche pas s'il y a des lettres, il faut y ajouter une condition pour qu'elle ne se déclenche que lorsque l’événement change ce produit sur une certaine plage de cellules.

    Après tu n'explique pas pourquoi cela ne fonctionne pas.

    moi je ferais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Change(ByVal Target As Range)
        Application.EnableEvents = False
        If Target.Column = 5 And Selection.Count = 1 Then
            Target.Value = Target.Value / 1.196
        End If
        Application.EnableEvents = True
    End Sub
    tu remplace le 5 par le numéro de colonne que tu veux et tu peux aussi augmenter le nombre de condition pour déclencher le code que sur une plage de cellule au choix

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re

    au purré elle a raison sauf que tu n'a pas essayé avec un nombre decimal

    mais l'action se produit a chaque touche tapée
    mais attention a la virgule la ca va bugué

    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if right(target.value,1)="," then exit sub
    en premier dans la fonction
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. [Toutes versions] executer code vba apres le calcul automatique des fomules
    Par LaPanic dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 19/12/2011, 17h42
  2. Calcul automatique en Vba
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 24/07/2010, 09h00
  3. [VBA-E] Calcul Automatique Date
    Par nono le golfeur dans le forum Excel
    Réponses: 7
    Dernier message: 03/04/2007, 16h38
  4. [VBA Excel] Calcul automatique
    Par trihanhcie dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/02/2007, 09h16
  5. [VBA-E] calculs automatique sur une seule feuille
    Par repié dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/03/2006, 11h53

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