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 SubCette 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 SubSeulement, 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 Withmais 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 😉
 
	 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		