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 :

Aide programmation VBA


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Points : 8
    Points
    8
    Par défaut Aide programmation VBA
    Bonjour à tous,
    Je suis étudiants en économie et je dois réaliser une petite application de gestion de ventes de produits en VBA..
    Nous (moi et mon binome) nous en sommes pas trop mal sorti jusqu'au point 4) de notre projet mais nous blocons pour le petit calcul de rentabilité du point 5)..
    Il faut en fait calculer la rentabilité de cette entreprise de la façon suivante:
    Ventes de produit - achats de produits - frais fixes (350.000) - le salaire des employés.
    (Chacun de ces postes se trouvant dans un userform différents..)
    A la suite de cela, il faut calculer le bénéfice obtenu et voir si il se trouve au dessus d'une certaine valeur pour voir quel taxation de l impot nous devons appliquer.. après il faut affecter cette fonction à un bouton calcul rentabilité..
    Voilà j'aimerais avoir votre aide et vos propositions pour faire ce calcul de rentabilité
    (il faut savoir que nous n avons eu que 4 heures d'intro à VBA et c'est vraiment pas évident pour nous!!)
    Un grand merci à celui qui pourrait nous aider
    (je ne joins pas le fichier Excell de notre travail car apparemment ce n'est pas de bonne augure mais si quelqu'un est intéressé par ma question je le mettrai bien évidemment à votre disposition car je pense que ca peut aider à voir ce que je vous demande.)
    Bonne journée.

  2. #2
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Qu'avez vous commencer à coder sur le calcul de rentabilité?
    Cordialement,
    Christophe

    Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Je suis au regret de vous répondre rien car justement nous ne savons pas par ou et comment commencer.. comme je vous l'ai dis, nous débutons vraiment et n'avons eu que quelques heures d'introduction à VBA..
    C'est pour cela que toute aide est vraiment la bienvenue!
    Merci.

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Même remarques ici et ici.
    A ce rythme, toute la classe postera le même sujet dans ce forum.
    Un peu de sérieux et lisez avant de poster.
    Votre devoir surveillé reflétera l'effort que vous fournissez et non la quête d'une solution clé en main.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Bonjour,
    ma question ne porte pas sur la création de la partie "userform" et les différents boutons associés mais bien sur la partie du calcul de la rentabilité où nous bloquons. nous avons donc effectué une grande partie du travail seul mais là c'est vrai que pour la partie du calcul de rentabilité nous n'y arrivons pas..
    Merci à celui qui pourra nous aider.

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Vous avez un listing de produits achetés et un autre pour ceux vendus et un 3ème pour les salaires.
    Vous pouvez utiliser des somme ou somme.si ou sommeprod.
    Sujet illustrant l'utilisation de sommeprod (on pouvait utiliser somme.si) ici (Encore c'est un sujet récent)
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heu!!
    bonjour

    Ventes de produit - achats de produits - frais fixes (350.000) - le salaire des employés.
    si tes userform ne sont pas affiché en même temps
    il y a une chose a faire toute simple


    tu ajoute un module standard

    en haut tu déclare tes 5 variables du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public  venteproduit as long
    public achatproduit as long
    public fraisfixe as long 
    public salairesemployes as long
    public benefice as long
    et dans chaque userform par exemple dans celui de vente quand le calcul est fait dans la même macro juste avant le tu met

    venteproduit=soit le nom du control ou ce trouve le résultat soit la variable dont tu t'est servie

    et tu fait pareil avec le autre dans leur userform respectifs


    tu aura donc a la fin tes variable public avec la valeurs que tu leur aura donné

    voila si ça peut t'être utile


    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

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Merci pour votre aide! je ne sais pas encore si cela pourra m aider mais je vais essayer. bonne soirée.

  9. #9
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Peux tu dans un premier temps faire tes calculs sur Excel sans vba?
    Puis après, tu traduiras en vba.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    voir sans vba du tout avec une celulle hors aera pour le print avec une formule
    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

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par mercatog Voir le message
    Peux tu dans un premier temps faire tes calculs sur Excel sans vba?
    Puis après, tu traduiras en vba.
    Non malheureusement je ne peux utiliser que VBA pour ce calcul de rentabilité.

  12. #12
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Je sais que ton devoir est ainsi (utilisation de vba).
    Si tu réussi manuellement à faire ce que tu veux obtenir, vba sera pour formaliser ton devoir en ayant compris ton problème.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Bonsoir,
    J'ai commencé un début de programme pour mon calcul de rentabilité..
    Mais le problème c'est que je ne sais pas en fait jusqu ou je dois aller dans ma colonne.. Je veux dire par la que je ne peux définir la grandeur de ma colonne à calculer puisque je peux en fait continuellement ajouter des données et donc je ne peux fixer ce nombre.. j'ai fixé ce nombre à n dans l'idée que je ne connaissais pas sa valeur mais je ne pense pas que ce soir correct..
    Ce que j'ai pensé à faire c'est de demander à mon programme d arreter de sommer les nombres de ma colonne lorsque la cellule est vide..
    mais je ne vois pas comment faire ça et où le placer dans mon code..
    J'ai pensé au codage : If i = " " Then
    On arrete de sommer

    Mais je ne sais pas comment traduire ça..

    Je vous donne ce que j'ai fait jusqu'a présent. Bonne soirée.


    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
    79
     
    Function LireVentes() As Variant
    Dim Ventes(n) As Variant
    Dim i As Integer
    For i = 1 To n
           Ventes(i) = Worksheets("Ventes").Cells(i + 1, 5)
    Next
     
    LireVentes = Ventes
    End Function
     
    Function LireAchats() As Variant
    Dim Achats(n) As Variant
    Dim i As Integer
    For i = 1 To n
           Achats(i) = Worksheets("Achats").Cells(i + 1, 5)
    Next
     
    LireAchats = Achats
    End Function
     
     
    Function LireSalaires() As Variant
    Dim Salaires(n) As Variant
    Dim i As Integer
    For i = 1 To n
           Salaires(i) = Worksheets("Employés").Cells(i + 1, 10)
    Next
     
    LireSalaires = Salaires
    End Function
     
     
    Sub Rentabilité()
    Dim Rentabilité As Variant
    Dim Ventes As Variant
    Dim Achats As Variant
    Dim Salaires As Variant
    Dim sumVentes As Double
    Dim sumAchats As Double
    Dim sumSalaires As Double
    Dim Bénéfice As Double
    Dim i As Integer
     
    Ventes = LireVentes()
    Achats = LireAchats()
    Salaires = LireSalaires()
    sumDepenses = 0
    sumRecettes = 0
    sumSalaires = 0
     
    For i = 1 To n
          sumVentes = sumVentes + Ventes(i)
          sumRecettes = sumAchats + Achats(i)
          sumSalaires = sumSalaires + Salaires(i)
    Next
     
     
          Bénéfice = sumVentes - sumAchats - sumSalaires - 350000
     
     
    If Bénéfice > 150000 Then
         Rentabilité = 0.33 * Bénéfice
    Else
        If Bénéfice <= 150000 Then
               Rentabilité = 0.15 * Bénéfice
    Else
        If Bénéfice < 0 Then
               Rentabilité = Bénéfice
     
    End If
       End If
         End If
     
     
     
    Worksheets("Résultat").Range("B2").Value = Rentabilité
     
    End Sub

  14. #14
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonsoir
    Un essai encourageant ainsi

    pour avoir la ligne de la dernière cellule remplie d'une colonne, utilise ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim LastLig as long
     
    with sheets("Feuil1")
       LastLig=.cells(.rows.count,"F").end(xlup).row
       Msgbox LastLig
    end with
    lastlig donnera la ligne de la dernière cellule remplie de la colonne F
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Le problème c'est que je dois définir dès le départ dans ma fonction lireVentes par exemples quel est la grandeur de ma liste que je lui fais passer en revue (au programme).. en fait je dois juste pouvoir lire toutes les données appartenants à une colonne précise d'une feuille (ici la feuille Ventes).. N'y a-t-il pas une fonction qui fasse cela?
    Ou bien ne pourrait-on pas adapter un peu le programme que je vous ai proposé (comment??)..

  16. #16
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Une proposition
    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 Rent()
    Dim Ventes As Double, Achats As Double, Salaires As Double
    Dim FraisFixes As Double, Benefice As Double, Rentabilite As Double
     
    Ventes = Application.Sum(Sheets("Ventes").Range("E:E"))
    Achats = Application.Sum(Sheets("Achats").Range("E:E"))
    Salaires = Application.Sum(Sheets("Employes").Range("J:J"))
    FraisFixes = 350000
     
    Benefice = Ventes - (Achats + Salaires + FraisFixes)
    Select Case Benefice
        Case Is > 150000: Rentabilite = 0.33 * Benefice
        Case Is > 0: Rentabilite = 0.15 * Benefice
        Case Else: Rentabilite = Benefice
    End Select
    Sheets("Resultat").Range("B2").Value = Rentabilite
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup pour votre proposition.
    Lorsque j'exécute le programme il me met
    "erreur d exécution 9 : l indice n appartient pas à la sélection".
    Comment cela se fait-il?

    Votre fonction "Application.Sum(Sheets("Ventes").Range("E:E"))"
    calcule donc la somme de ma colonne E mais dois-je adapter cette fonction
    à mon programme ou pas..
    Pour le moment ça ne marche pas mais encore merci de votre proposition.

  18. #18
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    erreur d exécution 9 : l indice n appartient pas à la sélection"
    Adapte les noms exacts de tes feuilles (j'ai mis Employes et Resultat alors que tu as Employés et Résultat! Personnellement, j'évite les accents en vba)
    Je calcule pour les ventes et les achats la somme des montants de la colonne E et les salaires de la colonne J.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  19. #19
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    En effet,
    J'avais simplement mis des accents sur mes feuilles Excell.
    Tout marche très bien à présent.
    Merci et bonne nuit.

    J'ai encore une interrogation quand à la facon dont je dois faire fonctionner cette application.. Je vais devoir affecter un bouton pour mon calcul de rentabilité et je vais devoir spécifier l'année sur base de laquelle je veux que ce calcul soit effectué.. le prrogramme ne devra donc prendre en compte que la année 2008 par exemple..

    Je vous soummetrai demain ma proposition pour ce problème et j'espère que vous pourrez me guider si je me trompe. bonne nuit.

  20. #20
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Vous n'aurez donc plus une somme mais une somme avec condition.
    Regardez le lien que je vous ai donnée dans ma 2ème réponse en utilisant SommeProd (entre autre). Tu peux aussi utiliser Somme.Si.

    Apparemment, vous lisez en diagonale ce qu'on vous propose. C'est une mauvaise habitude pour avancer ou une attente passive d'une solution prête.
    Bonne courage pour la suite, et le courage ça se mérite.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

Discussions similaires

  1. [XL-2010] Aide programme vba
    Par Rob's dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/10/2013, 10h06
  2. Demande d'aide programmation VBA
    Par quentin22breizh dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 10/09/2012, 16h27
  3. aide programmation vba
    Par arbotch dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 28/05/2009, 16h05
  4. Aide Programmation VBA?
    Par chubak62 dans le forum Excel
    Réponses: 3
    Dernier message: 20/05/2009, 20h41

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