Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 :


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 !!!



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...

Merci pour ton aide !!

Pierre
 

mromain

XLDnaute Barbatruc
Re : Execution macro rester sur un onglet

re,

étrange pour le screenupdating???
par contre, n'ayant pas Outlook sur mon poste, je ne peux pas t'aider plus, désolé...
quelqu'un passera par là

a+
 

Cousinhub

XLDnaute Barbatruc
Re : Execution macro rester sur un onglet

Bonjour,

non testé...

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
 

pierrequimousse

XLDnaute Junior
Re : Execution macro rester sur un onglet

Bonjour Bhbh,

Ton code fonctionne bien, merci beaucoup !! Si je comprends bien la comande "with" permet de sélectionner la page sans l'ouvrir "physiquement" ?

Encore merci à vous bhbh et mromain !

Cordialement,

Pierre
 

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…