Code VBA Calcul avec 2 variables
Résolu/Fermé
XxlloW
Messages postés
5
Date d'inscription
lundi 5 janvier 2015
Statut
Membre
Dernière intervention
6 janvier 2015
-
Modifié par pijaku le 5/01/2015 à 13:29
XxlloW Messages postés 5 Date d'inscription lundi 5 janvier 2015 Statut Membre Dernière intervention 6 janvier 2015 - 6 janv. 2015 à 16:59
XxlloW Messages postés 5 Date d'inscription lundi 5 janvier 2015 Statut Membre Dernière intervention 6 janvier 2015 - 6 janv. 2015 à 16:59
A voir également:
- Code VBA Calcul avec 2 variables
- Calcul moyenne excel - Guide
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
7 réponses
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 427
5 janv. 2015 à 15:16
5 janv. 2015 à 15:16
Bonjour
si ton code fonctionne correctement sur la ligne 2, il suffit de remplacer 2 par une varaible et de boucler sur cette variable
RQ1. Cells(li,7) vaudra toujours var+var2 et jamais 0
RQ2. si lifin doit évoluer tu dis
DQ3. si ça ne correspond pas à ce que tu veux, peux tu envoyer une partie de ton classeur au format excel 2003 su cjoint.com et joindre le lien obtenu à ton prochain message
Cdlmnt
si ton code fonctionne correctement sur la ligne 2, il suffit de remplacer 2 par une varaible et de boucler sur cette variable
const lideb = 2
const lifin = 30
Sub calcul_achat_net()
Dim var As Integer
Dim var2 As Integer
Dim li as long
for li = lideb to lifin
If Cells(li, 1) < Cells(li, 2) Then
var2 = Cells(li, 3)
Do Until var + var2 >= Cells(li, 6)
var = var + Cells(li, 4)
Loop
End If
If Cells(li, 1) >= Cells(li, 2) Then
Cells(li, 7) = 0
End If
Cells(li, 7) = var + var2
Next li
End Sub
RQ1. Cells(li,7) vaudra toujours var+var2 et jamais 0
RQ2. si lifin doit évoluer tu dis
DQ3. si ça ne correspond pas à ce que tu veux, peux tu envoyer une partie de ton classeur au format excel 2003 su cjoint.com et joindre le lien obtenu à ton prochain message
Cdlmnt
XxlloW
Messages postés
5
Date d'inscription
lundi 5 janvier 2015
Statut
Membre
Dernière intervention
6 janvier 2015
Modifié par XxlloW le 5/01/2015 à 18:25
Modifié par XxlloW le 5/01/2015 à 18:25
Je te remercie pour ta solution, je vais la tester au plus vite et je te tiendrai au courant du résultat si il correspond à mon besoin.
J'ai globalement compris le principe de ton code, mais n'ayant vraiment aucune base de code j'ai un peu chercher comment sortir le code que j'avais fait ci-dessus.
Je ne peux malheureusement pas transmettre mon tableau car il contient des informations confidentielles, sinon pour vous faciliter la tâche je te l'aurais transmis sans hésiter.
En tout cas merci pour ta réponse.
J'ai globalement compris le principe de ton code, mais n'ayant vraiment aucune base de code j'ai un peu chercher comment sortir le code que j'avais fait ci-dessus.
Je ne peux malheureusement pas transmettre mon tableau car il contient des informations confidentielles, sinon pour vous faciliter la tâche je te l'aurais transmis sans hésiter.
En tout cas merci pour ta réponse.
XxlloW
Messages postés
5
Date d'inscription
lundi 5 janvier 2015
Statut
Membre
Dernière intervention
6 janvier 2015
5 janv. 2015 à 19:03
5 janv. 2015 à 19:03
Add : https://www.cjoint.com/?0Afs00M5N0o
J'ai créé l'équivalent de mon tableau pour te le transmettre.
Je t'explique globalement la situation :
- J'ai un stock restant de plusieurs ingrédients (Colonne A)
- J'ai un stock minimum à avoir (Colonne B)
- J'ai un minimum établi à acheter en cas de besoin. (Colonne C)
- Lorsque j'achète, je dois acheter la quantité minimum puis X fois les lots (en colonne D afin d'atteindre mon stock minimum)
- J'ai mon Besoin brut (en colonne F) qui me sert de base à dépasser lors de l'achat.
Donc ça se passe globalement comme suis :
- Si Colonne A > B, aucun besoin d'acheter.
- Si Colonne A < B, Quantité minimum à acheter + si besoin X lot en plus afin que la quantité à commander soit supérieur ou égale au besoin brut.
En espérant avoir été clair, je te remercie. Je suis toujours à disposition pour répondre à une de tes questions.
J'ai créé l'équivalent de mon tableau pour te le transmettre.
Je t'explique globalement la situation :
- J'ai un stock restant de plusieurs ingrédients (Colonne A)
- J'ai un stock minimum à avoir (Colonne B)
- J'ai un minimum établi à acheter en cas de besoin. (Colonne C)
- Lorsque j'achète, je dois acheter la quantité minimum puis X fois les lots (en colonne D afin d'atteindre mon stock minimum)
- J'ai mon Besoin brut (en colonne F) qui me sert de base à dépasser lors de l'achat.
Donc ça se passe globalement comme suis :
- Si Colonne A > B, aucun besoin d'acheter.
- Si Colonne A < B, Quantité minimum à acheter + si besoin X lot en plus afin que la quantité à commander soit supérieur ou égale au besoin brut.
En espérant avoir été clair, je te remercie. Je suis toujours à disposition pour répondre à une de tes questions.
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 427
5 janv. 2015 à 20:06
5 janv. 2015 à 20:06
Désolé, mais je t'avais précisé au format excel 2003
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour,
l'erreur vient du fait que tu dois remettre les variables var et var2 à 0 à chaque début de boucles sinon elles conservent leur valeur :
Const lideb = 2
Const lifin = 7
Sub calcul_achat_net()
'Définition des variables
Dim var As Integer
Dim var2 As Integer
Dim Li As Long
'Boucle à répéter
For Li = lideb To lifin
var = 0
var2 = 0
If Cells(Li, 1) < Cells(Li, 2) Then
var2 = Cells(Li, 3)
Do Until var + var2 >= Cells(Li, 6)
var = var + Cells(Li, 4)
Loop
End If
If Cells(Li, 1) >= Cells(Li, 2) Then
Cells(Li, 7) = 0
End If
Cells(Li, 7) = var + var2
Next Li
End Sub
l'erreur vient du fait que tu dois remettre les variables var et var2 à 0 à chaque début de boucles sinon elles conservent leur valeur :
Const lideb = 2
Const lifin = 7
Sub calcul_achat_net()
'Définition des variables
Dim var As Integer
Dim var2 As Integer
Dim Li As Long
'Boucle à répéter
For Li = lideb To lifin
var = 0
var2 = 0
If Cells(Li, 1) < Cells(Li, 2) Then
var2 = Cells(Li, 3)
Do Until var + var2 >= Cells(Li, 6)
var = var + Cells(Li, 4)
Loop
End If
If Cells(Li, 1) >= Cells(Li, 2) Then
Cells(Li, 7) = 0
End If
Cells(Li, 7) = var + var2
Next Li
End Sub
XxlloW
Messages postés
5
Date d'inscription
lundi 5 janvier 2015
Statut
Membre
Dernière intervention
6 janvier 2015
6 janv. 2015 à 16:50
6 janv. 2015 à 16:50
Oups désolé en effet je n'avais pas fais attention, je vais vérifier le code de quent et si le problème persiste ou même si il est résolu je le signalerai.
En tout cas merci.
En tout cas merci.
XxlloW
Messages postés
5
Date d'inscription
lundi 5 janvier 2015
Statut
Membre
Dernière intervention
6 janvier 2015
6 janv. 2015 à 16:59
6 janv. 2015 à 16:59
Après l'essai tout va pour le mieux, en effet si par malheur la colonne A était supérieur à la B la colonne F prenait tout d'abord la valeur 0 puis re-basculé sur la dernière valeur connu de var + var 2, c'est vrai que ça parait logique !
Merci pour m'avoir aidé je vous en suis très reconnaissant.
Le sujet est à présent Résolu donc je le signal.
Encore merci à vous et bonne continuation !
Merci pour m'avoir aidé je vous en suis très reconnaissant.
Le sujet est à présent Résolu donc je le signal.
Encore merci à vous et bonne continuation !