Code VBA Calcul avec 2 variables
Résolu
XxlloW
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
XxlloW Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
XxlloW Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
J'ai un petit soucis quant à l'utilisation de Macro VBA, en effet je manipule Excel plutôt bien mais suis totalement débutant dans l'utilisation de VBA.
J'aimerai effectuer une tâche particulière mais n'arrive pas à la mettre en pratique, je vous expose mon problème le plus clairement possible.
J'ai un tableau à 6 colonnes et j'aimerai effectuer une macro afin d'effectuer un calcul avec variable(s) (2 je pense).
Je vous expose mon code existant qui ne fonctionne que sur une ligne (ici la deuxième), et mon soucis serait de faire ce même calcul mais sur plusieurs lignes (environ 30 aujourd'hui qui risque d'augmenter dans les jours à venir)
Pour résumé mon calcul ci dessus :
Si A2 < B2 alors var2 = C2
Donc faire le calcul suivant jusqu'à ce que var + var2 = F2
var = var + D2
SI A2 >= B2 alors G2 = 0
G2 = var + var 2
PS : la colonne E n'est pas utilisé
J'aimerai donc faire ce calcul pour une trentaine de ligne environ mais je ne sais pas comment m'y prendre, je ne sais pas si il vous faut plus de détail pour essayer de m'aider, mais si vous avez besoin d'informations supplémentaire je peux vous les fournir.
En espérant avoir été clair, je vous remercie pour l'aider que vous m'apporterez.
Cordialement.
J'ai un petit soucis quant à l'utilisation de Macro VBA, en effet je manipule Excel plutôt bien mais suis totalement débutant dans l'utilisation de VBA.
J'aimerai effectuer une tâche particulière mais n'arrive pas à la mettre en pratique, je vous expose mon problème le plus clairement possible.
J'ai un tableau à 6 colonnes et j'aimerai effectuer une macro afin d'effectuer un calcul avec variable(s) (2 je pense).
Je vous expose mon code existant qui ne fonctionne que sur une ligne (ici la deuxième), et mon soucis serait de faire ce même calcul mais sur plusieurs lignes (environ 30 aujourd'hui qui risque d'augmenter dans les jours à venir)
Sub calcul_achat_net() Dim var As Integer Dim var2 As Integer If Cells(2, 1) < Cells(2, 2) Then var2 = Cells(2, 3) Do Until var + var2 >= Cells(2, 6) var = var + Cells(2, 4) Loop End If If Cells(2, 1) >= Cells(2, 2) Then Cells(2, 7) = 0 End If Cells(2, 7) = var + var2 End Sub
Pour résumé mon calcul ci dessus :
Si A2 < B2 alors var2 = C2
Donc faire le calcul suivant jusqu'à ce que var + var2 = F2
var = var + D2
SI A2 >= B2 alors G2 = 0
G2 = var + var 2
PS : la colonne E n'est pas utilisé
J'aimerai donc faire ce calcul pour une trentaine de ligne environ mais je ne sais pas comment m'y prendre, je ne sais pas si il vous faut plus de détail pour essayer de m'aider, mais si vous avez besoin d'informations supplémentaire je peux vous les fournir.
En espérant avoir été clair, je vous remercie pour l'aider que vous m'apporterez.
Cordialement.
A voir également:
- Code VBA Calcul avec 2 variables
- Code ascii - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Calcul moyenne excel - Guide
7 réponses
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
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.
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.
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
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.
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 !