Execution macro rester sur un onglet

pierrequimousse

XLDnaute Junior
Bonjour à tous,

une petite question par rapport à l'execution d'une macro, j'aimerais que pendant que la macro s'execute je reste sur la page intitulée "BL".

D'après mes recherches il semble qu'il faille supprimer tout les "select" du code mais je ne vois pas bien comment faire en pratique...

voici mon code :

Sub envoi_Feuille()
répertoireAppli = ActiveWorkbook.Path ' Penser à Outils/Références/Outlook à rajouter
Sheets("BL").Copy ' crée un classeur avec la feuille résultats
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs répertoireAppli & "\" & Feuil2.[E2].Value & ".xls"
ActiveWindow.Close
'--- Envoi par mail
Dim olapp As Outlook.Application
Sheets("MAIL et Base").Select
Range("E11").Select
'LE PROBLEME DOIT ETRE ICI

Do While Not IsEmpty(ActiveCell)
Dim msg As MailItem
Set olapp = New Outlook.Application
Set msg = olapp.CreateItem(olMailItem)
msg.To = ActiveCell.Value
msg.Subject = Range("E2").Value
msg.Body = Range("E5").Value & Chr(13) & Chr(13) & Range("E8").Value & Chr(13) & Chr(13)
msg.Attachments.Add Source:=répertoireAppli & "\" & Feuil2.[E2].Value & ".xls"
msg.Send
ActiveCell.Offset(1, 0).Select
Loop
Sheets("BL").Select 'J'ai fait ça pour revenir au bon onglet mais je préfèrerais que l'on reste sur cet ongle tout le temps que prend la macro
End Sub

Merci d'avance pour votre aide,

Pierre, apprenti VBA
 

mromain

XLDnaute Barbatruc
Re : Execution macro rester sur un onglet

bonjour pierrequimousse,

tu peux désactiver l'affichage d'excel durant ta macro en rejoutant
Code:
Application.ScreenUpdating = False
en début de macro, et
Code:
Application.ScreenUpdating = True
en fin de macro.


sinon, j'ai essayé d'enlever les "Select" de ta macro, mais je ne peux pas la tester...
Code:
Sub envoi_Feuille()
répertoireAppli = ActiveWorkbook.Path ' Penser à Outils/Références/Outlook à rajouter
Sheets("BL").Copy ' crée un classeur avec la feuille résultats
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs répertoireAppli & "\" & Feuil2.[E2].Value & ".xls"
ActiveWindow.Close
'--- Envoi par mail
Dim olapp As Outlook.Application
With Sheets("MAIL et Base")
    Do While Not IsEmpty(ActiveCell)
    Dim msg As MailItem
    Set olapp = New Outlook.Application
    Set msg = olapp.CreateItem(olMailItem)
    msg.To = .Range("E11").Value
    msg.Subject = .Range("E2").Value
    msg.Body = .Range("E5").Value & Chr(13) & Chr(13) & .Range("E8").Value & Chr(13) & Chr(13)
    msg.Attachments.Add Source:=répertoireAppli & "\" & Feuil2.[E2].Value & ".xls"
    msg.Send
    Loop
End With

End Sub

a+
 

pierrequimousse

XLDnaute Junior
Re : Execution macro rester sur un onglet

Salut Romain, merci d'abord pour ta réactivité !

Alors le Application.ScreenUpdating = False, je n'ai pas l'impression que ça fonctionne, je l'ai peut être mal placé ??? j'ai aussi essayé de le mettre juste en dessous de "Sub envoi_feuille", pareil, ma macro se termine toujours sur l'onglet "MAIL et base" qui est un onglet que l'utilisateur du fichier n'est pas censé manipuler, c'est pourquoi je veux le cacher !!!

Sub envoi_Feuille()

Application.ScreenUpdating = False
répertoireAppli = ActiveWorkbook.Path ' Penser à Outils/Références/Outlook à rajouter
Sheets("BL").Copy ' crée un classeur avec la feuille résultats
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs répertoireAppli & "\" & Feuil2.[E2].Value & ".xls", FileFormat:=-4143
ActiveWindow.Close
'--- Envoi par mail
Application.ScreenUpdating = False
Dim olapp As Outlook.Application
Sheets("MAIL et Base").Select
Range("E11").Select
Do While Not IsEmpty(ActiveCell)
Dim msg As MailItem
Set olapp = New Outlook.Application
Set msg = olapp.CreateItem(olMailItem)
msg.To = ActiveCell.Value
msg.Subject = Range("E2").Value
msg.Body = Range("E5").Value & Chr(13) & Chr(13) & Range("E8").Value & Chr(13) & Chr(13)
msg.Attachments.Add Source:=répertoireAppli & "\" & Feuil2.[E2].Value & ".xls"
msg.Send
ActiveCell.Offset(1, 0).Select
Loop
Application.ScreenUpdating = True
End Sub


Sinon la macro sans les "select" ne fonctionne pas, et j'avoue ne pas être assez expérimenté en vba pour trouver l'origine du problème... :confused:

Merci pour ton aide !!

Pierre
 

Cousinhub

XLDnaute Barbatruc
Re : Execution macro rester sur un onglet

Bonjour,

non testé... :eek:

Code:
Sub envoi_Feuille()
Dim msg As MailItem
Dim Cel As Range
Application.ScreenUpdating = False
répertoireAppli = ActiveWorkbook.Path ' Penser à Outils/Références/Outlook à rajouter
Sheets("BL").Copy ' crée un classeur avec la feuille résultats
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs répertoireAppli & "\" & Feuil2.[E2].Value & ".xls"
ActiveWindow.Close
'--- Envoi par mail
Dim olapp As Outlook.Application
With Sheets("MAIL et Base")
    For Each Cel In .Range("E11:E" & .[E65000].End(xlUp).Row)
        Set olapp = New Outlook.Application
        Set msg = olapp.CreateItem(olMailItem)
        msg.To = Cel.Value
        msg.Subject = .Range("E2").Value
        msg.Body = .Range("E5").Value & Chr(13) & Chr(13) & .Range("E8").Value & Chr(13) & Chr(13)
        msg.Attachments.Add Source:=répertoireAppli & "\" & Feuil2.[E2].Value & ".xls"
        msg.Send
    Next Cel
End With
End Sub
 

mromain

XLDnaute Barbatruc
Re : Execution macro rester sur un onglet

re,

en fait,
Code:
[COLOR=Red][B]With Sheets("MAIL et Base")[/B][/COLOR]
    val1 = [B][COLOR=Red].[/COLOR][/B]Range("A1")
    val2 = [B][COLOR=Red].[/COLOR][/B]Range("A2")
    val3 = [B][COLOR=Red].[/COLOR][/B]Range("A3")
    val4 = [B][COLOR=Red].[/COLOR][/B]Range("A4")
[B][COLOR=Red]End With[/COLOR][/B]
est l'équivalent de
Code:
val1 = Sheets("MAIL et Base").Range("A1")
val2 = Sheets("MAIL et Base").Range("A2")
val3 = Sheets("MAIL et Base").Range("A3")
val4 = Sheets("MAIL et Base").Range("A4")
a+
 

Discussions similaires