Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2816 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Incrémenter des quantités par ligne jusqu'à une valeur cible globale

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Incrémenter des quantités par ligne jusqu'à une valeur cible globale

n°2198504
parxa
Posté le 23-07-2013 à 15:39:31  profilanswer
 

Bonjour à tous!
 
Etant débutant en Macros Excel, je sollicite votre grande expertise et vos conseils avisés!
Voilà ma situation, nous avons :
 
> un thème (T1, T2, ...) en colonne A
> une référence (R1, R2,...) en colonne B  
=> Un thème a plusieurs références mais une référence a un seul thème unique
> une quantité "disponible" (Qd) par référence en colonne C
> une quantité à renseigner (Qr) par mes soins en colonne D (Qr<=Qd)
> une quantité initiale fixe (Qi) en colonne F
> un taux cible par thème fixé à la semaine
> un taux réel par référence calculé après chaque modification de Qr en colonne E (Qr / Qi)
> un taux réel par thème calculé après chaque modification de Qr en cellule E422 pour le T1, E423 pour le T2 etc... (Somme des Qr / Somme des Qi)
 
Chaque semaine, pour les lignes avec une Qd>0, je dois renseigner manuellement les Qr jusqu'à ce que le taux réel par thème = taux cible (renseigné via un UserForm).
En gros, je renseigne une Qr et je checke le taux réel.
S'il n'est pas égal au taux cible je renseigne une autre Qr ou j'augmente cette Qr. Je recheck le taux réel.
Ainsi de suite jusqu'à ce que le taux réel = taux cible

 
Par conséquent j'aimerais automatiser cela :
rentrer un taux cible via un userform
lancer une boucle qui affecte des Qr puis qui les modifie d'un certain pas (+1 me parait bien) jusqu'à ce que le taux réel par thème = taux cible
 
J'ai donc fait cela mais c'est apparemment un très mauvais code...(qui en plus ne fonctionne pas)...Je pense à repartir de zéro ou même continuer mes manips manuelles sauf si vous pouvez m'aiguiller vers la lumière!
 
Merci!
 
Xavier
 
 
Private Sub CommandButton1_Click()
 
Dim a, l, Min As Integer
Dim TauxCible As Double
 
 
UserForm4.Hide
 
 
'Test de la valeur entrée dans le userform
If IsNumeric(UserForm4.TextBox2.Value) = False Then
Select Case MsgBox("Le taux indiqué n'est pas un nombre", vbRetryCancel, "Message d'erreur" )
    Case vbRetry
    UserForm4.Show
    Case vbCancel
    UserForm4.Hide
End Select
Else
TauxCible = UserForm4.TextBox2.Value
End If
 
Min = 10
l = 5
a = 9
 
 
line1:
 
If Range("BB425" ).Value <= TauxCible Then
    If Range("AY" & l).Value >= 10 Then
            If Range("BA" & l).Value > 0 Then
            Range("AZ" & l).Value = 10
            Range("AZ" & l).Value = Range("AZ" & l).Value + 1
            Application.ScreenUpdating = True
            l = l + 1
                If l < 10 Then
                GoTo line1
                 
                Else: GoTo line2
                 
                End If
                 
            Else: l = l + 1
                If l < 10 Then
                GoTo line1
                Else: GoTo line2
                End If
                 
            End If
    End If
Else
MsgBox "Oups", vbExclamation, "Attention"
End If
 
 
 
l = 5
line2:
If Range("BB425" ).Value <= TauxCible Then
    If Range("BA" & l).Value = a Then
    Range("AY" & l).Value = Range("AZ" & l).Value
    Application.ScreenUpdating = True
    l = l + 1
        If l < 10 Then
                GoTo line2
                Else:
                a = a - 1
                GoTo line2
        End If
    End If
 
Else
 
MsgBox "Oups 2", vbExclamation, "Attention"
End If
 
 
 
'Test pour vérifier que la qté basculée n'excède pas la qté disponible
If Range("BA" & l).Value < 0 Then
        Range("AZ" & l).Value = Range("AZ" & l).Value + Range("BA" & l).Value
End If
     
 
End Sub

mood
Publicité
Posté le 23-07-2013 à 15:39:31  profilanswer
 

n°2198593
Takama13
Posté le 24-07-2013 à 11:15:31  profilanswer
 

Salut,
 
Je n'ai pas très bien compris ta demande mais pourquoi ne pas utiliser simplement une formule pour tes Qr ?
Si j'ai bien compris, tu devrais avoir Qr = Taux Cible x Qi

n°2198642
Marc L
Posté le 24-07-2013 à 16:42:09  profilanswer
 

 
           Bonjour Takama13,
 
           c'est exactement la réponse obtenue sur un autre forum !
 
           Mais au lieu de faire l'effort d'y continuer, il a préféré tenter sa chance ici; c'est pourquoi je le zappe ici …
 

n°2198749
parxa
Posté le 25-07-2013 à 15:09:50  profilanswer
 

J'ai préféré tenter ma chance ici compte tenu de la teneur des réponses que l'on m'a données sur l'autre forum! (En gros je sais pas expliquer et je suis tp nul pour espérer coder)
Qr = Taux Cible * Qi peut marcher dans certains cas mais pas dans tous : sur certaines lignes (références) Qd peut être égale à 0 par conséquent Qr = 0 également. Il faut donc compenser sur les autres lignes.
Voilà j'essaie juste d'obtenir de l'aide ou des conseils de gens plus expérimentés que moi dans ce domaine. Désolé si j'explique mal ou si ce n'est pas très clair!

n°2198753
Takama13
Posté le 25-07-2013 à 15:21:47  profilanswer
 

Suffit juste de rajouter un "SI" alors dans ta formule.
Un truc du genre (à adapter avec les références exactes) :
=SI(Qd=0;0;Qr = Taux Cible * Qi)

n°2198885
parxa
Posté le 26-07-2013 à 18:33:42  profilanswer
 

Merci Takama13! J'avais effectivement exploré cette piste mais cela pose un problème
 
Taux Cible du thème 50%
 
Theme       Ref             Qi          Qd          Qr          taux obtenu à la ref
   1            A              20           15          10          50%
   1            B              30            20          15         50%
   1            C              50            0            0           0%
...
Taux au thème = (10+15+0)/(20+30+50) = 31,25% donc < Taux Cible. Je cherche un moyen dans ce cas là de "compenser" sur les autres refs pour atteindre mon taux au thème de 50% (même si je n'ai plus 50% sur chaque ref...)
Bref effectivement c'est un peu flou mais je vais partir sur cette idée, et j'ajusterai à la main pour les exceptions.
Merci en tt cas Takama13 d'avoir pris le temps de me répondre!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Incrémenter des quantités par ligne jusqu'à une valeur cible globale

 

Sujets relatifs
Ajout automatique d'une ligne sur excel avec couleur[BAT] Comment ajouter une ligne en début de fichier ?
Récupération d'une ligne de terminal dans une variable[RESOLU] trouver nombre de mots par ligne dans une boucle + sql
Recherche de valeur dans un tableau dynamiqueAjout de ligne automatique sur excel 2010 - VBA
[VBA Excel 2003] - Problème pour récupérer la 65537° ligne d'un CVSProblème de mise en ligne d un site local
Récupérer valeur entre deux balisesrecuperer la valeur castée d'une cle de registre
Plus de sujets relatifs à : Incrémenter des quantités par ligne jusqu'à une valeur cible globale


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR