Soustraction en VBA

Fermé
ABS65 - Modifié par jipicy le 24/04/2010 à 20:07
 ABS65 - 27 avril 2010 à 16:49
Je ne suis pas fort en programmation loin s'en faut
j'essaie de faire un programme paie en vba sur la base d'un fichier paie excel de 67 colonnes et 6200 lignes
j'ai fait un certain nombre d'opération mais arrivé à la soustraction de cellules entre 2 colonnes l'une contenant des données fournies et l'autre des données calculées (addition) l'application s'arrête et ne donne pas de résultat.
j'ai pourtant réussi à faire une addition
il faut préciser que comme les colonnes ne sont pas toujours à la même position j'utilise la fonction "find" pour retrouver la colonne recherchée je lui affecte une référence que j'utilise dans les opérations
exemple :
Cells.Find(What:="Ind_Kilo", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True _
, SearchFormat:=False).Activate

rg42 = ActiveCell.Offset(1, 0).Column

For b = 1 To 4
Cells.Find(What:="Salaire_Brut", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True _
, SearchFormat:=False).Activate

ActiveCell.Offset(b, 0).Value = Cells(b, rg1) + Cells(b, rg2) + Cells(b, rg3) + Cells(b, rg4) _
+ Cells(b, rg5) + Cells(b, rg6) + Cells(b, rg7) + Cells(b, rg8) + Cells(b, rg9) + Cells(b, rg10) _
+ Cells(b, rg11) + Cells(b, rg12) + Cells(b, rg13) + Cells(b, rg14) + Cells(b, rg15) + Cells(b, rg16) _
+ Cells(b, rg17) + Cells(b, rg18) + Cells(b, rg19) + Cells(b, rg20) + Cells(b, rg21) + Cells(b, rg22) _
+ Cells(b, rg23) + Cells(b, rg24) + Cells(b, rg25) + Cells(b, rg26) + Cells(b, rg27) + Cells(b, rg28) _
+ Cells(b, rg29) + Cells(b, rg30) + Cells(b, rg31) + Cells(b, rg32) + Cells(b, rg33) + Cells(b, rg34) _
+ Cells(b, rg35) + Cells(b, rg36) + Cells(b, rg37) + Cells(b, rg38) + Cells(b, rg39) + Cells(b, rg40) _
+ Cells(b, rg41) + Cells(b, rg42)

Next b

Sal_Brut = ActiveCell.Offset(b, 0).Value

et cette opération me donne bien le résultat escompté

parcontre l'opération suivante ne donne rien

Cells.Find(What:="Brut", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True _
, SearchFormat:=False).Activate

rg43 = ActiveCell.Offset(1, 0).Column

Cells.Find(What:="Salaire_Brut", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True _
, SearchFormat:=False).Activate

rg44 = ActiveCell.Offset(1, 0).Column

For b = 0 To 4
Cells.Find(What:="Autres_Rubriques", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True _
, SearchFormat:=False).Activate

ActiveCell.Offset(b, 0).Value = Cells(b, rg43) - 25.489 'Cells(b, rg44)

Next b


merci bien de me pourquoi la soustraction ne marche pas

2 réponses

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
26 avril 2010 à 16:18
Bonjour,

Dans la boucle quand b a la valeur 0 cette instruction provoque forcément une erreur :

ActiveCell.Offset(b, 0).Value = Cells(b, rg43) - 25.489 'Cells(b, rg44)

car cells (0,rg43) ne fonctionne pas. Il faut peut-être boucler de 1 à 4 et non pas de 0 à 4

Par ailleurs la fin à partir de l'apostrophe est un commentaire je ne sais pas si c'est normal

A+
0
merci de votre réponse pilas31
le fait de boucler de 1 à 4 n'a rien change je viens d'essayer ; j'ai bouclé de 0 à 4 pour l'addition et cela a marché
par ailleurs j'ai rectifié les paramètres de la soustraction qui sont en fait
ActiveCell.Offset(b, 0).Value = Cells(b, rg43) - Cells(b, rg44)
et cela ne marche toujours pas
vraiment bizarre qu'avec la même formulation mais avec un signe (-) au lieu de (+) cela ne fonctionne pas.
merci de votre aide ; ça fait près d'un mois que j'y suis avec plusieurs essais
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
26 avril 2010 à 17:18
Bon, je ne comprends pas bien car chez moi le cells avec ligne égale à 0 ne fonctionne pas .

A moins qu'une instruction avant le code montré soit :

On Error Resume Next

Ou une gestion d'erreur qui masque l'erreur.
0
merci quand même pilas31
je vais encore revoir des fois qu'il y a qq chose dans ce genre
A+
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
26 avril 2010 à 17:57
Eventuellement, il est possible de déposer un extrait du fichier (avec les macros mais sans donnée confidentielles) sur www.cijoint.fr .
On pourra alors le télécharcher et essayer d'analyser le problème.

A+
0
Bonjour
merci de ton suivi
je suis en train de préparer qq chose de plus ou moins compréhensible
autant pour le fichier que pour le programme

A+
0