VisualBasic : formules sur plusieurs feuilles
NNBBVV
Messages postés
7
Statut
Membre
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai 39 feuilles (Nom des feuilles: Feuil1, Feuil2,Feuil3,...) avec une disposition totalement identique.
Chaque feuille contient le bilan comptable d'une entreprise durant 6 années (de 1999à2004).
Exemple Feuille1 (Entreprise 1): Cells(2,1)
1 2 3 4
A 31/12/2004 31/12/2003 31/12/2002
B Dette financière 344 300 300
C Dette commercial. 100 100 50
D Dette totale 444 400 350
Sur la 40ème feuilles je souhaiterai réaliser différents ratios.
Il faudrait, par exemple, pour chaque firme et pour chaque année calculer le ratio 1:
Firme 1_Ratio 1 = dette financière/dettes totales = Cells(2,2) / Cells(4,2)
Je souhaiterai avoir le résultat suivant sur la feuille 40:
1 2 3 4
A 31/12/2004 31/12/2003 31/12/2002
B Firme 1_Ratio 1 0,774 0,75 0,857
C Firme 1_Ratio 2 .... ... ...
D Firme 2_Ratio 1 ... ... ...
Mon idée de départ (très peu élaborée!!!) était la suivante:
Function Macro1()
Dim dfLT As Long
Dim d As Long
For i = 1 To 39
For j = 2 To 7
Worksheets(i).Cells(j, 341) = dfLT
Worksheets(i).Cells(j, 339) = d
Worksheets(40).Cells(i + 1, j) = dfLT / d
Next j
Next i
End Function
J'espère être sur le bon forum
Si vous avez une solution sans VBA, je la prends aussi, mais je pense pas que ce soit possible!??
Je vous remercie d'avance,
L'homme qui a surestimé ses capacités en VBA :(((((((
J'ai 39 feuilles (Nom des feuilles: Feuil1, Feuil2,Feuil3,...) avec une disposition totalement identique.
Chaque feuille contient le bilan comptable d'une entreprise durant 6 années (de 1999à2004).
Exemple Feuille1 (Entreprise 1): Cells(2,1)
1 2 3 4
A 31/12/2004 31/12/2003 31/12/2002
B Dette financière 344 300 300
C Dette commercial. 100 100 50
D Dette totale 444 400 350
Sur la 40ème feuilles je souhaiterai réaliser différents ratios.
Il faudrait, par exemple, pour chaque firme et pour chaque année calculer le ratio 1:
Firme 1_Ratio 1 = dette financière/dettes totales = Cells(2,2) / Cells(4,2)
Je souhaiterai avoir le résultat suivant sur la feuille 40:
1 2 3 4
A 31/12/2004 31/12/2003 31/12/2002
B Firme 1_Ratio 1 0,774 0,75 0,857
C Firme 1_Ratio 2 .... ... ...
D Firme 2_Ratio 1 ... ... ...
Mon idée de départ (très peu élaborée!!!) était la suivante:
Function Macro1()
Dim dfLT As Long
Dim d As Long
For i = 1 To 39
For j = 2 To 7
Worksheets(i).Cells(j, 341) = dfLT
Worksheets(i).Cells(j, 339) = d
Worksheets(40).Cells(i + 1, j) = dfLT / d
Next j
Next i
End Function
J'espère être sur le bon forum
Si vous avez une solution sans VBA, je la prends aussi, mais je pense pas que ce soit possible!??
Je vous remercie d'avance,
L'homme qui a surestimé ses capacités en VBA :(((((((
A voir également:
- VisualBasic : formules sur plusieurs feuilles
- Visualbasic - Télécharger - Langages
- Visualbasic editor - Télécharger - Langages
2 réponses
Bonjour
J'aurais plutôt écris
J'aurais plutôt écris
subMacro1() dim i as long, j as long Dim dfLT As Long 'es tu sûr qu'il s'agit d'un nombre entier Dim d As Long 'es tu sûr qu'il s'agit d'un nombre entier For i = 1 To 39 For j = 2 To 7 dfLT=Worksheets(i).Cells(j, 341) d=Worksheets(i).Cells(j, 339) Worksheets(40).Cells(i + 1, j) = dfLT / d Next j Next i End sub -- :-x
dfLT et d = entier
Par contre, j'ai essayé de faire tourner mais ily a un message d'erreur
"Dépassement de capacité"
Cela signifie?????
Sub est-il capable de réaliser un calcul??
Je pensais que c'était avec "Function".
Merci pour ton aide,
Par contre, j'ai essayé de faire tourner mais ily a un message d'erreur
"Dépassement de capacité"
Cela signifie?????
Sub est-il capable de réaliser un calcul??
Je pensais que c'était avec "Function".
Merci pour ton aide,
bonjour,
39 onglets, cellules à la ligne 340 et colonne7, soit environ une surface de 2400 cellules*39
si ton classeur pèse plusieurs Mo (plusieurs= dépend de la ram)... il est "précaire"
une fonction opère un calcul sur une cellule mais peut être installée dans une procédure
par ex dans ton cas (non testée)
function ratio(onglet as byte, dflt as range, d as range) as single
with sheets(onglet)
ratio=.dflt.value/.d.value
end with
end ratio
sub macro1()
dim i as byte, j as byte
For i= 1 to 39
For j=2 to 7
sheets(40).cells(i+1,j)= ratio( i,cells(j,341),cells(j,339))
next j
next i
end sub
dans ce cas, l'utilité de la fonction n'est pas prouvée. Tu pourrais cependant te placer dans la feuil40 et utiliser la fonction avec des copier-coller mais...
On créée des fonctions pour se constituer une bibliothèque dans la quelle on puise pour réaliser les projets: ne pas réinventer l'eau tiède à chaque fois...
39 onglets, cellules à la ligne 340 et colonne7, soit environ une surface de 2400 cellules*39
si ton classeur pèse plusieurs Mo (plusieurs= dépend de la ram)... il est "précaire"
une fonction opère un calcul sur une cellule mais peut être installée dans une procédure
par ex dans ton cas (non testée)
function ratio(onglet as byte, dflt as range, d as range) as single
with sheets(onglet)
ratio=.dflt.value/.d.value
end with
end ratio
sub macro1()
dim i as byte, j as byte
For i= 1 to 39
For j=2 to 7
sheets(40).cells(i+1,j)= ratio( i,cells(j,341),cells(j,339))
next j
next i
end sub
dans ce cas, l'utilité de la fonction n'est pas prouvée. Tu pourrais cependant te placer dans la feuil40 et utiliser la fonction avec des copier-coller mais...
On créée des fonctions pour se constituer une bibliothèque dans la quelle on puise pour réaliser les projets: ne pas réinventer l'eau tiède à chaque fois...