Problème de variable- MACRO VBA

Bonjour,
Je rencontre un problème avec ma macro.
Mon fichier Excel est composé de deux onglets, le premier est "Réunion de perf" et le second "Mail".
Ma macro fonctionne parfaitement quand je suis dans l'onglet "Mail" mais me met une erreur quand je suis dans "Réunion de perf".
Je pense que j'ai une erreur dans les variables mais je ne trouve pas quoi exactement.
Merci pour votre aide.

Sub Envoyer_ODJ()

'
'Déclaration de la variable

Dim MaFeuille As Worksheet
Dim Reu As Worksheet
Dim NbLigne As Integer

'Affectation des variables
Set MaFeuille = Sheets("Mail")
Set Reu = Sheets("Réunion de perf")

'Desactivation du raffaichissement de l'écran
Application.ScreenUpdating = False

'On calcule le nombre de ligne à prendre
NbLigne = MaFeuille.Range("A" & Application.Rows.Count).End(xlUp).Row

'On selectionne la plage à copier
MaFeuille.Range("A11:I31" & NbLigne).Select

'Avec l'object Mail
ActiveWorkbook.EnvelopeVisible = True
With Selection.Parent.MailEnvelope
With .Item
.To = MaFeuille.Range("B8").Value
.Subject = MaFeuille.Range("B7").Value
.Send

End With
End With

MsgBox "Votre Email a bien été envoyé.", vbInformation + vbOKOnly, "CONFIRMATION ENVOI MAIL"

Application.ScreenUpdating = True

Range("A1").Select

End Sub

Bonjour,

le souci vient de cette ligne de code:

MaFeuille.Range("A11:I31" & NbLigne).Select

Même si on précise la feuille de la plage à sélectionner, Excel ne peut pas sélectionner une plage qui n'est pas dans la feuille active, ça renverra une erreur, il faut donc d'abord sélectionner la feuille "Mail" puis sélectionner la plage.

donc:

MaFeuille.Select

Sinon à voir si on peut passer par autre chose que de la sélection en faisant comme ça:

'Avec l'object Mail
ActiveWorkbook.EnvelopeVisible = True
With MaFeuille.Range("A11:I31" & NbLigne).Parent.MailEnvelope
With .Item
.To = MaFeuille.Range("B8").Value
.Subject = MaFeuille.Range("B7").Value
.Send

End With
End With

En remplaçant Selection directement par la plage qu'on voulait sélectionner.

Bonjour elie50260, le forum,

Peut-être ainsi....sans .select ?

'
Dim maplage As Range
'
Set malage = MaFeuille.Range("A11:I31" & NbLigne)
'
With maplage.Parent.MailEnvelope
'

[EDIT] : Bonjour Ausecour , trop rapide , mais je vois qu'on est raccord

Cordialement,

Bonjour à tous les deux,

Merci beaucoup !! Merci Ausecours pour ton aide car j'ai compris mon erreur et je pourrais donc désormais faire attention à ce détail la prochaine fois ! :)

Rechercher des sujets similaires à "probleme variable macro vba"