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 :

Fonction récursive ou pas ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 25
    Par défaut Fonction récursive ou pas ?
    Bonjour.

    Je me pose une question de logique, et je ne sais pas s'il faut ou non utiliser une fonction récursive. Voici donc le problème.

    Dans un programme de répartition des couts et du chiffre d'affaire, j'effectue différents calculs.

    Je distingue 3 cas:
    - A) Si R > S
    - B) Si R < S
    - C) Si R = S

    Jusque là, pas de soucis.

    1) Dans le cas A, je calcule un reste: reste = R-S
    2) Je calcule un prix par produit en fonction de 2 autres prix... Passons dessus...
    3) Je fais la somme et je l'affiche dans un tableau virtuel
    4) SI mon prix est inférieur au total, alors c'est bon
    SINON, je dois recalculer un nouveau reste
    a) Refaire certains calculs etc...
    b) ...


    Je ne sais pas trop comment faire en fait!

    Le soucis est donc que j'obtiens toujours le premier reste, et ensuite suivant certains mois, j'aurai un reste, ou bien deux restes, ou trois... etc... (nombre de reste inconnu par moi) sachant que SI j'ai un reste... cela influe sur tout les résultats...

    Quelqu'un a une idée?

    Je ne demande pas de code, mais un début de logique si possible

    Merci

  2. #2
    Membre éclairé Avatar de tomy7
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 540
    Par défaut re
    bonjour ,
    je ne comprend pas le probleme!!!!

    tu ne sais comment attaquer ????
    tom

  3. #3
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 25
    Par défaut
    J'obtiens forcément un reste, le 1er reste.

    Ensuite, avec ce reste est réparti sur plusieurs produits.

    MAIS si reste + prix du produit > prix maxi ALORS j'ai un nouveau reste.

    Avec ce nouveau reste, je le réparti à nouveau sur les autres produits, et ainsi de suite...

    Une boucle est nécessaire, j'en suis pas à ce point là, mais je voudrais connaitre une solution efficace pour éviter de tomber dans du bidouillage, merci

  4. #4
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Tu peux nous donner un exemple chiffré, avec des trucs simples (genre, 10, 20 des trucs comme ça) en faisant un exemple pour ton cas que tu expliques ?

    Parce que je comprend pas trop ton histoire de prix de base par rapport au prix maxi et au reste tout ça
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  5. #5
    Membre éclairé Avatar de tomy7
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 540
    Par défaut rep
    j attaquerai le probleme de cette maniere:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Select case addition
    case reste_plus_produit>Pmax
    .........effectuer je sais pas quoi....
     
    case reste_plus_produit<Pmax
    ...... effectuer je sais pas quoi .....
     
    end select

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Par défaut
    Bonjour,

    Ca pourrait ressembler à ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Depart()
        Dim Reste
        'Code déterminant le 1er reste
        Do While Reste > 0
            Reste = Repartition(Reste)
        Loop
    End Sub
     
    Function Repartition(x)
        'Code faisant diminuer x
    End Function
    La difficulte étant de s'assurer que x diminue forcement jusqu'a atteindre zéro dans un temps raisonnable, faute de quoi ca ne s'arrete jamais.

    Cordialement,

    Tirex28/

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    Bonjour tout le monde
    je pense que yodu29 cherche a faire quelque chose de ce genre
    heu j'ai inventé hein, c'est un peu primaire
    probleme*
    j'ai trois prix
    A = 8 €
    B=10€
    C = 12€
    je dois vendre tout ça pour 40 €
    Combien je peux ajouter a chaque produit ?'

    Somme = A + B + C
    qaund il me restera moins de 3 €, je ne peux plus en rajouter sur les prix = résultat
    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
    Function distribution(Prix, A, B, C)
    distribution = Prix - (A + B + C)
            If distribution - 3 >= 0 Then
            A = A + 1
            B = B + 1
            C = C + 1
            distribution Prix, A, B, C
           End If
    distribution = Prix - (A + B + C)
    End Function
    Sub distribue()
    Prix = 40
    A = 8
    B = 10
    C = 12
    reste = distribution(Prix, A, B, C)
    MsgBox "A =  " & A & Chr(10) & "B =   " & B & Chr(10) & "C =  " & C & Chr(10) & "Reste =  " & reste
    End Sub
    dis nous si ça doit ressembler a ça
    pour les autres, en annexe a ce sujet, il y a quelque chose que je ne comprend pas dans ce que je viens de faire
    si j'écris la fonction comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function distribution(Prix, A, B, C)
    distribution = Prix - (A + B + C)
            If distribution - 3 >= 0 Then
            A = A + 1
            B = B + 1
            C = C + 1
            distribution Prix, A, B, C
           End If
    '''''distribution = Prix - (A + B + C)
    End Function
    et qu'on déroule en F8 le calcul se passe bien, la valeur de distribution arrive bien a 1, mais a la fin, a chaque end if elle remonte de trois, elle reprend sa valeur initial d'avant chaque passage dans la boucle, et je ne comprend pas très bien le phénomène

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

Discussions similaires

  1. Afficher du XML dans une table HTML avec fonction récursive (ou pas)
    Par iviewclear dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 19/04/2010, 17h04
  2. Fonction récursive qui ne fonctionne pas
    Par Sadar007 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/09/2009, 16h24
  3. Fonction récursive qui ne renvoie pas le résultat
    Par mathieugamin dans le forum Langage
    Réponses: 4
    Dernier message: 05/11/2007, 10h29
  4. Fonction récursive renvoi sur page d'erreur
    Par peck dans le forum Langage
    Réponses: 1
    Dernier message: 23/12/2005, 10h08
  5. Problème de fonction récursive avec un TcxDBTreeList
    Par isachat666 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 05/12/2005, 13h12

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