Bonjour,
Je travaille actuellement sur l'insertion d'un tableau sous outlook,
Pour l'instant mon code VBA me permet de copier un tableau selon un range spécifique, (par exemple de la cellule D13 à Q18)
J'aimerai que la sélection copier ne prenne que le tableau rempli, et s'arrête jusqu'à la dernière ligne non vide.
Sachant que mon range prend plusieurs colonne à la fois,
Voici mon code:
Sub tableau()
Dim mail As Variant
Dim categ As Variant
Dim ligne
Dim rng As Range
categ = Range("D7").Value
ligne = Range("D13").End(xlDown).Row
If categ = "Beverage" Then mail = Worksheets("Clients_bev").Range("I7").Value Else mail = Worksheets("Clients_food").Range("I7").Value
' on récupère la plage du tableau
If categ = "Beverage" Then Set rng = Range("D13:" & ligne & ", K13:" & ligne & ", P13:" & ligne)
C'est la ligne en couleur qui pose problème...
J'insère ensuite le tableau via la fonction suivante et je l'ajoute au mail via la fonction RangetoHTML(rng)
Function RangetoHTML(ByVal rng As Range)
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook
TempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
rng.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=12
.Cells(1).PasteSpecial Paste:=-4122
.Cells(1).Select
Application.CutCopyMode = False
On Error Resume Next
.DrawingObjects.Visible = True
.DrawingObjects.Delete
.Columns.AutoFit
.Rows.AutoFit
On Error GoTo 0
End With
With TempWB.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=TempFile, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.ReadAll
ts.Close
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
"align=left x:publishsource=")
TempWB.Close savechanges:=False
Kill TempFile
Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
End Function
Merci d'avance pour votre aide