Boucle infinie
-
Bonjours,
Je travail actuellement sur un fichier qui utilisera énormément de ligne dans le futur,et qui a 3 formule par ligne.
Pour éviter d'alourdir mon fichier j'ai créé une macro qui insère mes formules dans la ligne cliquer au moment du remplissage mais voila,maintenant je veut rajouter des bordure a mes cellule et le fait de les rajouter réactive la macro et cela tour a l'infini.
Savez vous comment éviter ce problème ?
Bien cordialement
Arthur
PS:
Sub auto_etir_formule()
Dim ligne As Integer
ligne = ActiveCell.Row
Cells(ligne, 2).NumberFormat = "_-* #,##0.00 [$€-fr-FR]_-;-* #,##0.00 [$€-fr-FR]_-;_-* ""-""?? [$€-fr-FR]_-;_-@_-" ' cellule avec les chiffres en €
Cells(ligne, 3).FormulaLocal = "=SI(A" & ligne & "="""";"""";INDEX('F:\Fichiers\Suivi cde\2018\[Suivi cde 2018.xlsm]cde en cours'!E:E;EQUIV(A" & ligne & ";'F:\Fichiers\Suivi cde\2018\[Suivi cde 2018.xlsm]cde en cours'!W:W;0)))"
Cells(ligne, 4).FormulaLocal = "=SI(A" & ligne & "="""";"""";INDEX('F:\Fichiers\Suivi cde\2018\[Suivi cde 2018.xlsm]cde en cours'!D:D;EQUIV(A" & ligne & ";'F:\Fichiers\Suivi cde\2018\[Suivi cde 2018.xlsm]cde en cours'!W:W;0)))"
Cells(ligne, 5).FormulaLocal = "=SI(A" & ligne & "="""";"""";INDEX('F:\Fichiers\Suivi cde\2018\[Suivi cde 2018.xlsm]cde en cours'!C:C;EQUIV(A" & ligne & ";'F:\Fichiers\Suivi cde\2018\[Suivi cde 2018.xlsm]cde en cours'!W:W;0)))"
Cells(ligne, 6).FormulaLocal = "=SI(A" & ligne & "="""";"""";INDEX('F:\Fichiers\Suivi cde\2018\[Suivi cde 2018.xlsm]cde en cours'!Y:Y;EQUIV(A" & ligne & ";'F:\Fichiers\Suivi cde\2018\[Suivi cde 2018.xlsm]cde en cours'!W:W;0)))"
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Range("B" & ligne & ":G" & ligne).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Range("A" & ligne).Select
End SubPrivate Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
ligne = ActiveCell.Row
If ActiveCell.Column = 1 And ActiveCell.Row <> 1 And Cells(ligne, 3) = "" Then
auto_etir_formule
End If
End Subvoila les codes
la partie du haut met les formule dans les cases ,l'autre est (en théorie) sensé mettre les bordures sur toute les cellules
bonjour,
essaie ainsi
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
ligne = ActiveCell.Row
If ActiveCell.Column = 1 And ActiveCell.Row <> 1 And Cells(ligne, 3) = "" Then
application.enableevents=false
auto_etir_formule
application.enableevents=true
End If
End Sub-
Super merci h2so4 sa fonctionne parfaitement