Macro: division de variable

  • Initiateur de la discussion Initiateur de la discussion baara
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

baara

XLDnaute Nouveau
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
 
Re : Macro: division de variable

j'ai mis ce code, mais la division doit poser problème... il me met erreur d'execution 13 ; incomptatibilité de type.
et il fluote en jaune cette partie: a(10) = a(9) / a(10)

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) = ""
If a(9) <> 0 And a(7) <> 0 Then a(10) = a(9) / a(10)
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) = ""
If a(15) <> 0 And a(13) <> 0 Then a(10) = a(15) / a(13)
a(16) = Cells(38, 3)
a(17) = Cells(38, 4)
a(18) = Cells(38, 6)
a(19) = a(17) - a(18)
a(20) = ""
If a(19) <> 0 And a(17) <> 0 Then a(10) = 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
 
Re : Macro: division de variable

Bonjour baara

si cette ligne est jaune
If a(9) <> 0 And a(7) <> 0 Then a(10) = a(9) / a(10)

c'est parce qu'à la ligne précédente tu as
a(10) = ""

donc si la condition est vérifiée
a(10) = a(9) / ""

ce qui provoque une erreur

à+
Philippe
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
183
Réponses
6
Affichages
160
Réponses
9
Affichages
897
Réponses
2
Affichages
586
Réponses
9
Affichages
510
Retour