Insertion de variables dans un range multiples - VBA

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

Bonjour,

Pour une plage par exemple en A (de la ligne 10 à 100), on écrit pas "A10:100" mais bien "A10:A100". Il te manque donc des lettres dans ta ligne en rouge.

Bjr,

Ne mets pas non plus de guillemets entre chaque zone !

Je pense que c'est ce que tu as fait.

exemple :

Sub test()
Dim ici As Range
Set ici = Range("A1:A2,D1:D2")
ici.Select
End Sub

sinon tu n'auras pas la même chose !

Bonjour à tous les deux,

Oui je suis d'accord mais là je souhaite insérer ma variable ligne, qui est la dernière ligne non vide,

Je veux par exemple que le range prenne de la case D13 à ma variable ligne + de la F13 à la ligne,

Désolé si je m'exprime mal

Bonjour à tous les deux,

Oui je suis d'accord mais là je souhaite insérer ma variable ligne, qui est la dernière ligne non vide,

Je veux par exemple que le range prenne de la case D13 à ma variable ligne + de la F13 à la ligne,

Désolé si je m'exprime mal

Par exemple, pour la première plage, qu'est ce qui t’empêches d'écrire :

"D13:D" & ligne
'Au lieu de :
"D13:" & ligne

donc comme le dit Pedro

set rng = Range("D13:D" & ligne & ",K13:K" & ligne & ",P13:P" & ligne)

exemple

Sub test()
ligne = 18
Dim rng As Range
Set rng = Range("D13:D" & ligne & ",K13:K" & ligne & ",P13:P" & ligne)
rng.Select
End Sub

Merci beaucoup à vous deux

C'est Pedro qui a tout fait !

Rechercher des sujets similaires à "insertion variables range multiples vba"