Je travaille sur une table dont une des colonnes est la région (A) et les autres sont des montants de différentes aides (B1, B2, B3 etc....). Je travaille sur plusieurs onglet (1 par année). Je cherche a faire une macro qui calcule pour chaque année, la somme des montants (SumB1, SumB2, SumB3 etc....) mais seulement pour les exploitations de la région A choisie. J'ai fait la macro suivante :
Dim ligne As Integer
Dim Sum As Long
Sum = 0
ligne = 2 'mes données démarrent a partir de la seconde ligne'
While Cells(ligne, 14).Value <> Null 'données région sont en colonne 14'
If Cells(ligne, 14).Value = FR62 Then
Sum = Sum + Cells(ligne, 16).Value 'Montants B1'
End If
ligne = ligne + 1
Wend
Sheets("total FR62" ).Select 'je range mes résultats dans un autre onglet'
Cells(19, 2).Value = Sum
Mais voila, ca ne marche pas du tout. Ca m'écrit 0 dans la cellule 19,2 de l'onhlet total FR62. Et je non seulement je ne parvient pas a trouver l'erreur mais en plus je n'arrive pas a faure en sorte qu'il répete ca pour toutes les colonnes de montants B.
J 'ose espérer que tu as mis la clause Option Explicit au début de ton code Ce qui prouverait que FR62 ait un sens.
Si tu ne mets pas cette clause, ce crétin de VB permet d'utiliser des variables non définies.
Si FR62 est la valeur que tu attends trouver dans telle cellule, alors il faut la mettre entre guillemets.
Tant qu'à faire, je continue avec les remarques désagréables.
Les commentaires commencent par une quote ('), pas besoin d'en remettre une à la fin.
Ne plus utiliser While .. Wend (qui marche très bien) mais Do While .. Loop (Qui marche aussi bien )
As-tu vraiment besoin de sélectionner - c'est-à-dire de donner explicitement le focus - à la feuille "total FR62" ?
Si oui, pas de problème. Sinon, je t'ai tout réécrit pour me faire pardonner d'avoir été désagréable
Code :
Option Explicit
Sub TaProcedure
Dim ligne As Integer
Dim Sum As Long
Sum = 0
ligne = 2 'tes données démarrent à partir de la seconde ligne
Do While Cells(ligne, 14).Value <> Null 'données région sont en colonne 14
If Cells(ligne, 14).Value = "FR62" Then
Sum = Sum + Cells(ligne, 16).Value 'Montants B1
End If
ligne = ligne + 1
Loop
'je range tes résultats dans un autre onglet
Sheets("total FR62" ).Cells(19, 2).Value = Sum
[..]
End Sub
Spoiler :
Pour les jaloux à qui je ne réécris rien, z'avez qu'à supporter le Stade Toulousain.
Elendis, tu supportes le ST au moins.
merci pour tout ! Bon en fait ca ne marche toujours pas, mais on m'a dirigé vers la fonction SOMME.SI de excel directement. Et ca me suffit pour résoudre mon probleme.
Merci encore ;-)
disons, que ca m'aurais aidé de savoir faire cette macro car j'ai beaucoup de tables énormes et c'est quand meme plus simple et surtout plus rapide une macro (quand on sait se l'écrire) que de devoir refaire x fois la meme manip a la main...... D'autant que les autres calculs que je vais devoir faire sont nettement plus complexe qu'une simple somme et la la fonction SOMME.SI ne me sera d'aucune utilité.........
Je continue donc quand meme a essayer de faire marcher ma macro (ne serait ce que par simple obstination... ;-)