hayaa1982
Messages postés5Date d'inscriptionvendredi 3 février 2006StatutMembreDernière intervention22 février 2006
-
13 févr. 2006 à 15:36
hayaa1982
Messages postés5Date d'inscriptionvendredi 3 février 2006StatutMembreDernière intervention22 février 2006
-
15 févr. 2006 à 11:37
Bonjour,
Je souhaiterai effectuer le calcul de la somme d'une colonne en fonction des élements se trouvant dann les autres.
Voilà un exemple de code tout simple mais il ne fonctionne.
Je ne sais pas d'ou vient l'erreur.
Dim val As Currency
Dim n As Integer
n = ThisWorkbook.Sheets("Feuil1").Cells(60000, 13).End(xlUp).Row
For i = 2 To n
If ThisWorkbook.Sheets("Feuil1").Cells(i, 1) = "Interne" Then ' selection de interne ou externe
If ThisWorkbook.Sheets("Feuil1").Cells(i, 2) = "OPTION AVENUE" Then 'selection de l'option
If ThisWorkbook.Sheets("Feuil1").Cells(i, 7) <= "31/12/05" Then 'selection de la plage de date
val = val + ThisWorkbook.Sheets("Feuil1").Cells(i, 13)'calcul de la somme de la colonnes
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 13 févr. 2006 à 17:30
Salut
Je ne suis pas un as du VBA de Excel, mais, à tout hasard (amélioration) :
With ThisWorkbook.Sheets("Feuil1")
n = .Cells(60000, 13).End(xlUp).Row
For i = 2 To n
If UCase(.Cells(i, 1)) = "INTERNE" And _
UCase(.Cells(i, 2)) = "OPTION AVENUE" And _
DateValue(.Cells(i, 7)) <= DateValue("31/12/05") Then
maVal = maVal + Val(.Cells(i, 13)) 'calcul de la somme de la colonnes
End If
Next i
End With
MsgBox maVal 'affichage du résultat final
-1- "val" est un mot clé, une instruction, donc il doit planté, faute de paramètre à cette instruction
-2- J'ai ajouté le With qui permet d'alléger la syntaxe
-3- J'ai collapsé les If en un seul (moins performant que ta structure si tu as beaucoup de lignes)
-4- J'ai ajouté le UCase pour comparer en majuscule les chaines (au cas où saisie pas exactement bonne)
-5- J'ai ajouté DateValue car je ne sais pas si Excel sait faire des comparaisons de dates mieux que VB
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)