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 entre deux cellules différentes à chaque fois


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 28
    Points : 16
    Points
    16
    Par défaut Calcul entre deux cellules différentes à chaque fois
    Bonjour,

    J'ai actuellement un UserForm qui m'affiche un formulaire. Après validation du formulaire, les données des champs sont récupérées et stockées dans un classeur Excel.

    Il se trouve que j'ai un champs "quantité" et "prix".
    Pas de problème pour stocker les données. Je voudrais stocker dans une autre cellule d'une autre colonne le résultat de la multiplication de "quantité" et "prix" et afficher le résultat sur la même ligne du calcul à chaque calcul.

    La quantité est stockée automatiquement dans la colonne P et le prix dans la colonne Q (la ligne change à chaque validation de la saisie du formulaire pour le prix et la quantité).

    Voici mon code de validation de saisie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            Dim A, B, D, F, R ' Préselection  des colonnes à incrémenter
            Dim wb As Workbook, sh As Worksheet
                Set wb = Workbooks("bdd.xls") ' On référence le classeur
                Set sh = wb.Worksheets(3) ' On référence la feuille
                    sh.Range("A65536").End(xlUp).Offset(1, 0) = Controls("TextBoxFabricant")
                    sh.Range("B65536").End(xlUp).Offset(1, 0) = Controls("TextBoxFournisseur")
                    sh.Range("D65536").End(xlUp).Offset(1, 0) = Controls("TextBoxFacture")
                    sh.Range("F65536").End(xlUp).Offset(1, 0) = Controls("TextBoxReference")
                    sh.Range("P65536").End(xlUp).Offset(1, 0) = Controls("TextBoxQuantite")
                    sh.Range("Q65536").End(xlUp).Offset(1, 0) = Controls("TextBoxPrix")
                    sh.Range("AJ65536").End(xlUp).Offset(1, 0) = Controls("TextBoxNote")
            Selection.EntireRow.Insert ' On insert une nouvelle ligne
    En gros l'idéale serait d'incrémenter automatiquement le calcul: =PRODUIT(P21:Q21), mais en prenant le numéro de la ligne où on incrémente le calcul.

    Merci d'avance si vous avez des idées !

  2. #2
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut
    Je n'ai pas compris où était ton problème...

    Tu as ton user form Ok ! qu'est-ce que tu n'arrive pas à faire?

  3. #3
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    bonjour,

    essaye comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim A, B, D, F, R ' Préselection  des colonnes à incrémenter
            Dim wb As Workbook, sh As Worksheet
                Set wb = Workbooks("bdd.xls") ' On référence le classeur
                Set sh = wb.Worksheets(3) ' On référence la feuille
                    sh.Range("A65536").End(xlUp).Offset(1, 0) = Controls("TextBoxFabricant")
                    sh.Range("B65536").End(xlUp).Offset(1, 0) = Controls("TextBoxFournisseur")
                    sh.Range("D65536").End(xlUp).Offset(1, 0) = Controls("TextBoxFacture")
                    sh.Range("F65536").End(xlUp).Offset(1, 0) = Controls("TextBoxReference")
                    sh.Range("P65536").End(xlUp).Offset(1, 0) = Controls("TextBoxQuantite")
                    sh.Range("Q65536").End(xlUp).Offset(1, 0) = Controls("TextBoxPrix")
                    sh.Range("R65536").End(xlUp).Offset(1, 0).formular1c1 ="=rc[-1]*rc[-2]"
                    sh.Range("AJ65536").End(xlUp).Offset(1, 0) = Controls("TextBoxNote")
            Selection.EntireRow.Insert ' On insert une nouvelle ligne
    Alleï Bonjour chez vous!

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    Bonjour !

    Il me met une erreur:
    Erreur d'exécution '438'

    Propriété ou méthode non gérée par cet objet
    L'erreur se produit sur la ligne que tu as modifiée, merci d'avance !

  5. #5
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    bizarre, cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sh.Range("R65536").End(xlUp).Offset(1, 0).FormulaR1C1 = "=RC[-2]*RC[-1]"
    fonctionne parfaitement chez moi
    Alleï Bonjour chez vous!

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    Je viens de revoir ça, le calcul se fait, mais pas dans la bonne case.
    Je souhaiterai que le résultat s'affiche là où le montre la croix violette sur le screen, une idée ?

    C'est à cause du nombre au dessus, mais si je peux éviter de le déplacer(c'est le total de la colonne montant).

    Merci !

  7. #7
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    Bonjour,
    comme ça cela devrais renvoyer au bon endroit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sh.Range("Q65536").End(xlUp).Offset(0, 1).FormulaR1C1 = "=RC[-2]*RC[-1]"
    Alleï Bonjour chez vous!

Discussions similaires

  1. [XL-MAC 2011] calcul entre deux fichiers différents
    Par tim343 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 25/07/2013, 09h09
  2. Réponses: 2
    Dernier message: 10/10/2008, 20h35
  3. [Requete] Calcul Somme entre deux temps pour chaque jour
    Par nico33307 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 21/03/2006, 00h58
  4. [ADO.Net][VB.NET] Comment copier des données entre deux BDD différentes ?
    Par maddog2032 dans le forum Accès aux données
    Réponses: 6
    Dernier message: 06/06/2005, 11h01
  5. Calcul entre deux dates heures
    Par Isa31 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 31/03/2005, 13h17

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