Soustraction en VBA
ABS65
-
ABS65 -
ABS65 -
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
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
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+
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+
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