Ewigefrost
XLDnaute Junior
Salut bisàmme,
j'ai un petit soucis concernant l'intégration d'un bout de code dans ma macro déjà existante que voici :
Cette macro me sert à exporter automatiquement une image d'une plage de cellules (actuellement "O2:X38" sur la feuille "TCD ALU") dès qu'il y a une changement sur un des cellules des feuilles "TCD ALU" et "TCD ACIER".
Le problème est que cette plage de cellules est variable, mais l'utilisation d'un EndxlUp ne marche pas puisque toutes les lignes de la feuille contiennent des formules.
J'ai donc trouvé un code qui permet de trouver la dernière ligne du tableau que je souhaite exporter (en recherchant le mot "Total général" qui correspond à la dernière ligne de celui-ci). Il fonctionne parfaitement lorsque je le place dans la feuille "TCD ALU" et que je l'exécute manuellement :
Seulement, il faudrait qu'il s'exécute automatiquement dès qu'il y a un changement sur la feuille, comme pour l'exportation automatique, mais avant celle-ci bien sûr.
Le problème c'est que je ne sais pas comment remplacer le .Range("O2:X38") par quelque chose qui prendrait en compte le Dligne. J'ai testé ça : .Range("$O$2:$X$ & Dligne") en plaçant ça après le Then
mais Excel plante lorsque je modifie une cellule dans TCD ALU ou TCD ACIER.
Comment je pourrais faire ça svp ?
Merci énormément d'avance, vous m'avez déjà permis d'avancer pas mal dans d'autres topics
j'ai un petit soucis concernant l'intégration d'un bout de code dans ma macro déjà existante que voici :
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
wshSheets = [{"TCD ACIER", "TCD ALU"}]
If Not IsError(Application.Match(Sh.Name, wshSheets, 1)) Then
With Sheets("TCD ALU")
ActiveWindow.Zoom = 120
.Range("O2:X38").CopyPicture xlScreen, xlBitmap
With .ChartObjects.Add(0, 0, 2400, 1429).Chart
.Paste
.Export ThisWorkbook.Path & "\test1.gif", "gif"
End With
.ChartObjects(Sheets("TCD ALU").ChartObjects.Count).Delete
End With
ActiveWorkbook.Save
End If
End Sub
Cette macro me sert à exporter automatiquement une image d'une plage de cellules (actuellement "O2:X38" sur la feuille "TCD ALU") dès qu'il y a une changement sur un des cellules des feuilles "TCD ALU" et "TCD ACIER".
Le problème est que cette plage de cellules est variable, mais l'utilisation d'un EndxlUp ne marche pas puisque toutes les lignes de la feuille contiennent des formules.
J'ai donc trouvé un code qui permet de trouver la dernière ligne du tableau que je souhaite exporter (en recherchant le mot "Total général" qui correspond à la dernière ligne de celui-ci). Il fonctionne parfaitement lorsque je le place dans la feuille "TCD ALU" et que je l'exécute manuellement :
Code:
Sub test()
With Worksheets("TCD ALU").Range("a1:a40")
Dim NLigneDescription As Long
Dim Dligne As Long
Cells.Find(What:="Total général", After:=Range("A1"), LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
NLigneDescription = ActiveCell.Row
Range("A200").Value = NLigneDescription
Dligne = NLigneDescription + 10
Range("A201").Value = Dligne
End With
End Sub
Seulement, il faudrait qu'il s'exécute automatiquement dès qu'il y a un changement sur la feuille, comme pour l'exportation automatique, mais avant celle-ci bien sûr.
Le problème c'est que je ne sais pas comment remplacer le .Range("O2:X38") par quelque chose qui prendrait en compte le Dligne. J'ai testé ça : .Range("$O$2:$X$ & Dligne") en plaçant ça après le Then
Code:
With Worksheets("TCD ALU").Range("a1:a40")
Dim NLigneDescription As Long
Dim Dligne As Long
Cells.Find(What:="Total général", After:=Range("A1"), LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
NLigneDescription = ActiveCell.Row
Range("A200").Value = NLigneDescription
Dligne = NLigneDescription + 10
Range("A201").Value = Dligne
End With
mais Excel plante lorsque je modifie une cellule dans TCD ALU ou TCD ACIER.
Comment je pourrais faire ça svp ?
Merci énormément d'avance, vous m'avez déjà permis d'avancer pas mal dans d'autres topics