Bonjour à toutes et tous,
Voila la macro que j'utilise pour récuperer un tas d'information sur tout les fichiers excel d'un dossier.
Mais j'ai un petit problème avec ma macro car les partie en rouge ne fonctionne pas en effet je souhaiterai faire une division de deux variable qui seraient:
a(10)=a(9)/a(7)
a(15)=a(14)/a(12)
a(20)=a(19)/a(17)
la fonction si c'est celle que j'utilise directement sur excel sans passer par les macro. elle me permet dans le cas ou soit le numérateur ou le dénominateur sont égal à 0, et bien de ne pas faire le calcul, ca mévite d'avoir une anotation moche dans ma cellule me précisant que la division par 0 est impossible.
Mais je n'arrive pas à faire cette division!!!! si quelqu'un connaît une astuce se serait sympa. Merci.
Sub essai()
Dim fs, f, f1, fc, s
Dim a(27)
Application.ScreenUpdating = False
specdossier = ActiveWorkbook.Path
fic = ActiveWorkbook.Name
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(specdossier)
Set fc = f.Files
pos = 3
For Each f1 In fc
s = f1.Name
b = Right(s, 4)
If b = "xlsx" And s <> ActiveWorkbook.Name Then
Workbooks.Open Filename:=specdossier & "\" & s
Sheets("Résultat").Activate
a(1) = Cells(2, 2)
a(2) = Cells(2, 1)
a(3) = Cells(1, 1)
a(4) = "Non renseigné"
a(5) = "Non renseigné"
a(6) = Cells(5, 3)
a(7) = Cells(5, 4)
a(8) = Cells(5, 6)
a(9) = a(7) - a(8)
a(10) =SI(a(9)=0;"";SI(a(7)=0;"";a(9)/a(7))) a(11) = Cells(9, 3)
a(12) = Cells(9, 4)
a(13) = Cells(9, 6).Value + Cells(9, 7).Value
a(14) = a(12) - a(13)
a(15) = SI(a(14)=0;"";SI(a(12)=0;"";a(14)/a(12))) a(16) = Cells(38, 3)
a(17) = Cells(38, 4)
a(18) = Cells(38, 6)
a(19) = a(17) - a(18)
a(20) = SI(a(19)=0;"";SI(a(17)=0;"";a(19)/a(17))) a(21) = a(7) + a(12) + a(17)
a(22) = Cells(43, 8)
a(23) = a(22) / a(23)
a(24) = Cells(9, 9)
a(25) = Cells(9, 10)
a(26) = Cells(44, 8)
a(27) = Cells(45, 8)
ActiveWorkbook.Close
Windows(fic).Activate
Sheets("feuil1").Activate
For u = 1 To 27
Cells(pos, u) = a(u)
Next u
ActiveSheet.Hyperlinks.Add Anchor:=Cells(pos, 3), Address:=specdossier & "\" & s, TextToDisplay:=a(3)
pos = pos + 1
End If
Next
End Sub
Voila la macro que j'utilise pour récuperer un tas d'information sur tout les fichiers excel d'un dossier.
Mais j'ai un petit problème avec ma macro car les partie en rouge ne fonctionne pas en effet je souhaiterai faire une division de deux variable qui seraient:
a(10)=a(9)/a(7)
a(15)=a(14)/a(12)
a(20)=a(19)/a(17)
la fonction si c'est celle que j'utilise directement sur excel sans passer par les macro. elle me permet dans le cas ou soit le numérateur ou le dénominateur sont égal à 0, et bien de ne pas faire le calcul, ca mévite d'avoir une anotation moche dans ma cellule me précisant que la division par 0 est impossible.
Mais je n'arrive pas à faire cette division!!!! si quelqu'un connaît une astuce se serait sympa. Merci.
Sub essai()
Dim fs, f, f1, fc, s
Dim a(27)
Application.ScreenUpdating = False
specdossier = ActiveWorkbook.Path
fic = ActiveWorkbook.Name
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(specdossier)
Set fc = f.Files
pos = 3
For Each f1 In fc
s = f1.Name
b = Right(s, 4)
If b = "xlsx" And s <> ActiveWorkbook.Name Then
Workbooks.Open Filename:=specdossier & "\" & s
Sheets("Résultat").Activate
a(1) = Cells(2, 2)
a(2) = Cells(2, 1)
a(3) = Cells(1, 1)
a(4) = "Non renseigné"
a(5) = "Non renseigné"
a(6) = Cells(5, 3)
a(7) = Cells(5, 4)
a(8) = Cells(5, 6)
a(9) = a(7) - a(8)
a(10) =SI(a(9)=0;"";SI(a(7)=0;"";a(9)/a(7))) a(11) = Cells(9, 3)
a(12) = Cells(9, 4)
a(13) = Cells(9, 6).Value + Cells(9, 7).Value
a(14) = a(12) - a(13)
a(15) = SI(a(14)=0;"";SI(a(12)=0;"";a(14)/a(12))) a(16) = Cells(38, 3)
a(17) = Cells(38, 4)
a(18) = Cells(38, 6)
a(19) = a(17) - a(18)
a(20) = SI(a(19)=0;"";SI(a(17)=0;"";a(19)/a(17))) a(21) = a(7) + a(12) + a(17)
a(22) = Cells(43, 8)
a(23) = a(22) / a(23)
a(24) = Cells(9, 9)
a(25) = Cells(9, 10)
a(26) = Cells(44, 8)
a(27) = Cells(45, 8)
ActiveWorkbook.Close
Windows(fic).Activate
Sheets("feuil1").Activate
For u = 1 To 27
Cells(pos, u) = a(u)
Next u
ActiveSheet.Hyperlinks.Add Anchor:=Cells(pos, 3), Address:=specdossier & "\" & s, TextToDisplay:=a(3)
pos = pos + 1
End If
Next
End Sub