Comment sélectionner des données à partir d'une feuille Excel spécifique

J'ai besoin de sélectionner datatables des cellules sur un appel de feuille Excel 'sheet1'

Cependant, lorsque je navigue vers une feuille différente sur mon document Excel, et je dis simplement que je lance la macro à partir de la page de développeur VBA, elle prend datatables de la feuille sur laquelle je suis, et non pas 'sheet1'.

Voici mon code …

Sub CreateMail() Dim objOutlook As Object Dim objMail As Object Dim rngTo As Range Dim rngBody As Range Set objOutlook = CreateObject("Outlook.Application") Set objMail = objOutlook.CreateItem(0) With ActiveSheet Set rngBody = .Range(.Range("B5"), .Range("D5").End(xlDown)) End With rngBody.Copy With objMail .To = "xxxx" .Subject = "Project Update - " & Range("D2") & " on " & Format(Now(), "dd/mm/yyyy") .display End With SendKeys "^({v})", True On Error GoTo 0 Set OutMail = Nothing Set OutApp = Nothing End Sub 

Quelqu'un peut-il expliquer pourquoi il ne prendra que les valeurs de la cellule à partir de «feuille1» lorsque je serai sur cette feuille.

Vous ActiveSheet reference à ActiveSheet dans votre code, ce qui signifie qu'il se référera à la feuille ouverte dans Excel sur cette ligne:

 With ActiveSheet 

Vous devez faire reference à la feuille dont vous souhaitez get datatables en modifiant ceci pour:

 With Sheets("Sheet1") 

Donc, dans votre code:

 Sub CreateMail() Dim objOutlook As Object Dim objMail As Object Dim rngTo As Range Dim rngBody As Range Set objOutlook = CreateObject("Outlook.Application") Set objMail = objOutlook.CreateItem(0) With Sheets("Sheet1") Set rngBody = .Range(.Range("B5"), .Range("D5").End(xlDown)) End With rngBody.Copy With objMail .To = "xxxx" .Subject = "Project Update - " & Sheets("Sheet1").Range("D2") & " on " & Format(Now(), "dd/mm/yyyy") .display End With SendKeys "^({v})", True On Error GoTo 0 Set OutMail = Nothing Set OutApp = Nothing End Sub