Formule de calcul sous VB
Fermé
vash641
Messages postés
40
Date d'inscription
lundi 20 avril 2009
Statut
Membre
Dernière intervention
6 janvier 2010
-
22 avril 2009 à 15:00
vash641 Messages postés 40 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 6 janvier 2010 - 27 avril 2009 à 11:45
vash641 Messages postés 40 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 6 janvier 2010 - 27 avril 2009 à 11:45
A voir également:
- Formule de calcul sous VB
- Formule si et - Guide
- Calcul moyenne excel - Guide
- Vb - Télécharger - Langages
- Formule excel pour additionner plusieurs cellules - Guide
- Vb cable - Télécharger - Audio & Musique
3 réponses
vash641
Messages postés
40
Date d'inscription
lundi 20 avril 2009
Statut
Membre
Dernière intervention
6 janvier 2010
22 avril 2009 à 15:45
22 avril 2009 à 15:45
Bon, j'ais tenté de coder mon calcul dans un premier temps pour "fourniture1" mais il me retourne un résultat négatif ( -550 ) et je comprend pas du tout d'ou il me sort cette valeur.
Une idée ?
Sub CalculFourniture1() Dim i As Integer Dim Compt As Integer Dim ComptA As Integer Dim F1 As Integer F1 = 0 ComptA = Worksheets("Articles").Range("C65536").End(xlUp).Row Cells(1, 3) = ComptA Compt = Worksheets("Fournitures").Range("D65536").End(xlUp).Row Cells(1, 4) = Compt For j = 2 To ComptA - 1 For i = 2 To Compt - 1 If Worksheets("Fournitures").Cells(i, 3).Value = "Fourniture 1" Then F1 = F1 + (Worksheets("Articles").Cells(j, 3) * Worksheets("Fournitures").Cells(i, 5) * Worksheets("Fournitures").Cells(i, 6)) End If Cells(2, 3) = F1 Next i Next j End Sub
Une idée ?
vash641
Messages postés
40
Date d'inscription
lundi 20 avril 2009
Statut
Membre
Dernière intervention
6 janvier 2010
22 avril 2009 à 18:08
22 avril 2009 à 18:08
J'ais résolu mon souci de signe négatif ( true vaut -1 ) mais je n'arrive pas à trouver mon erreur au niveau de la valeur qu'il me renvoit dans la boucle :/
vash641
Messages postés
40
Date d'inscription
lundi 20 avril 2009
Statut
Membre
Dernière intervention
6 janvier 2010
27 avril 2009 à 11:45
27 avril 2009 à 11:45
Petit up du topic, le code suivant fait bien ce qu'il faut, mais il prend énormément de temps ( ComptPT et ComptA valant 2001 et 160 )
Je souhaiterais qu'il soit plus rapide à exécuter, auriez vous une piste à me donner ? ( sachant qu'il y a plein d'itérations ou rien ne se passe, j'aimerais faire un test mais je ne vois pas trop ou :s
'A optimiser, trop de temps pour calculer le prix total en l'état
Je ne peux pas joindre le excel correspondant ( >500 Ko )
En espérant une tit piste de votre part ( je pensais à faire un while, mais je vois pas trop ou et comment )
Je souhaiterais qu'il soit plus rapide à exécuter, auriez vous une piste à me donner ? ( sachant qu'il y a plein d'itérations ou rien ne se passe, j'aimerais faire un test mais je ne vois pas trop ou :s
'A optimiser, trop de temps pour calculer le prix total en l'état
Sub CalculFournitures() Dim i As Integer Dim Compt As Integer Dim ComptA As Integer Dim F1 As Variant F1 = 0 k = 2 j = 2 i = 2 ComptA = Worksheets("Articles").Range("C65536").End(xlUp).Row Cells(1, 4) = ComptA ComptF = Worksheets("Fournitures").Range("D65536").End(xlUp).Row Cells(1, 3) = ComptF ComptPT = Worksheets("Prix totaux").Range("B65536").End(xlUp).Row Cells(1, 5) = ComptPT 'For k = 2 To ComptPT 'indice de la ligne où est la fourniture dans la page Prix total For k = 2 To ComptPT For j = 2 To ComptA 'indice de l'article For i = 2 To ComptPT 'indice de la fourniture dans l'article If Worksheets("Fournitures").Cells(i, 1).Value = Worksheets("Prix totaux").Cells(k, 1).Value And j - 1 = Worksheets("Fournitures").Cells(i, 2).Value Then F1 = F1 + (Worksheets("Articles").Cells(j, 4).Value * Worksheets("Fournitures").Cells(i, 5).Value * Worksheets("Fournitures").Cells(i, 6).Value) End If Worksheets("Prix totaux").Cells(k, 4).Value = F1 'Cells(2, 8) = Worksheets("Articles").Cells(j, 4).Value 'quantité 'Cells(2, 9) = Worksheets("Fournitures").Cells(i, 5).Value 'actif ou pas 'Cells(2, 10) = Worksheets("Fournitures").Cells(i, 6).Value 'prix unitaire 'Cells(2, 11) = Worksheets("Fournitures").Cells(i, 3).Value 'N°article 'Cells(2, 12) = Worksheets("Prix totaux").Cells(k, 1).Value 'N° fourniture Cells(1, 8) = i Cells(1, 9) = j Cells(1, 10) = k If j = ComptA And i = ComptPT Then Worksheets("Prix totaux").Cells(k + 1, 4).Value = "0" F1 = Worksheets("Prix totaux").Cells(k + 1, 4).Value End If Next i Next j Next k End Sub
Je ne peux pas joindre le excel correspondant ( >500 Ko )
En espérant une tit piste de votre part ( je pensais à faire un while, mais je vois pas trop ou et comment )