IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Simplifier une macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 17
    Par défaut Simplifier une macro
    Bonjour a tous,
    J'ai grâce à plusieurs aides développé cette macro, le probleme est qu'elle est trop lourde et je suis sûr que la moitié n'est pas utile. Quelqu'un peut-il m'aider à la simplifier svp (car j'ai certain beug de lancement d'outlook et je me demande si ce n'est pas du au volume de la macro...). Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Sub test_lien_PDF() 'Devis
    With ActiveSheet.PageSetup
        .Orientation = xlLandscape
     
    Worksheets("Demande de réparation").ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:="C:\Users\TECH\Desktop\enregistrement PDF.pdf", _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
     
            If .Orientation = xlLandscape Then
     
            .Orientation = xlPortrait
            End If
     
            .Orientation = xlLandscape
            End With
     
    Dim OutApp As Object
        Dim OutMail As Object
        Dim strbody As String
        Dim olFormatHTML As String
        FileAttach = "C:\Users\TECH\Desktop\enregistrement PDF.pdf" _
     
        Set OutApp = CreateObject("Outlook.Application")
        OutApp.Session.Logon
        Set OutMail = OutApp.CreateItem(0)
         strbody = "Information sur la mise à jour"
        On Error Resume Next
            With OutMail
                Select Case Sheets("Demande de réparation").Range("C3") ' <= la valeur à tester
       Case Is = "Test"
          .To = "Test@hotmail.fr"
                .Bcc = ""
                .Subject = "Demande de réparation"
                .BodyFormat = olFormatHTML
              .HTMLBody = "Bonjour, <BR><BR>Ce message vous informe que     " & Worksheets("Demande de réparation").Cells(3, "C") & "      a enregistré la pièce      " & Worksheets("Fiche de réparation").Cells(2, "I") & "       dans le fichier réparation materiel .<BR><BR>" _
                & "<A href=" & """" & "\\Nom_serveur\Repertoire\nom_ficihier.xls" & """" & "></A>" & Chr(10) & "<BR><BR>Cordialement"
                .Attachments.Add Réparation_matériel_test2
                .Attachments.Add (FileAttach)
                .OriginatorDeliveryReportRequested = False
                .ReadReceiptRequested = False
                .Display
     
     
            End With
                On Error GoTo 0
     
            Set OutMail = Nothing
            Set OutApp = Nothing
    End Sub

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    With ActiveSheet.PageSetup
        .Orientation = xlLandscape
     '...
            If .Orientation = xlLandscape Then
            .Orientation = xlPortrait
            End If
            .Orientation = xlLandscape
    End With
    Je traduis en français :
    • Orienter la page en paysage.
    • Si la page est orientée en paysage, alors l'orienter en portrait.
    • Orienter la page en paysage.

    Tu es d'accord, que dans tous les cas la page sera orientée en paysage à la fin, non ? La première ligne suffit.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select Case Sheets("Demande de réparation").Range("C3") ' <= la valeur à tester
       Case Is = "Test"
    '...
    Il manque le End Select. D'autre part, il n'est pas vraiment intéressant de faire un Select Case pour une seule condition. Utilise plutôt une condition If.

    A quoi te sert le On Error Resume Next ? En général, ce n'est pas bon signe d'utiliser ceci, il vaut mieux essayer "d'attraper" les erreurs et les gérer plutôt que de les cacher par un On Error Resume Next. D'ailleurs, si tu l'enlèves et que tu lances ta macro, cela te permettra de repérer si, en effet, il y a des erreurs dans ta macro : et si oui, lesquelles et où. Cela te permettra de mieux les gérer.

    Il y a peut-être d'autres simplifications à faire, mais je suis moins à l'aise avec le reste de ton code, alors je laisse d'autres personnes tenter leurs chances

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 17
    Par défaut
    Merci riaolle,

    Pour l’orientation je suis d'accord que ça ne sert pas...
    En revanche pour Le select case de l'adresse mail je n'ai pas une mais 15 conditions donc pas le choix ... ( je ne voulais juste pas afficher les adresses mail j'ai donc simplifié...).
    Pour le on erreur pas la moindre idée je le supprime et je te dis si ça marche toujours.

    Merci beaucoup pour les points que tu as souligné .

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 17
    Par défaut
    J'ai bien une erreur ^^

    "incompatibilité de type" à ce niveau .BodyFormat = olFormatHTML

  5. #5
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    olFormatHTML est une constante de BodyFormat prédéfinie, il ne faut donc pas le définir comme une variable. Enlève ta ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim olFormatHTML As String
    Pour la suite, je peux pas trop t'aider, parce que je connais pas trop les fonctions que tu utilises, mais d'autres personnes passeront par là

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 17
    Par défaut
    une dernière question...

    j'ai ce code pour ouvrir outlook
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     Dim SessionOutlook, myOlApp
       Const Chemin As String = "C:\Program Files\Microsoft Office\Office12\OUTLOOK"
     
        On Error Resume Next
        Set Appli = GetObject(, "Outlook.Application")
     
        If Appli Is Nothing Then
        SessionOutlook = Shell(Chemin, 1)
    Else
                myOlApp.Quit
                SessionOutlook = Shell(Chemin, 1)
        End If
    il fonctionne mais affiche outlook sur l’écran comment faire pour juste l’avoir en barre de tache en bas ( ou encore mieux qu'il fonctionne en arrière plan et donc qu'on ne le voit pas du tout???

Discussions similaires

  1. [XL-2007] Simplifier une macro
    Par INFINITY100 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/05/2015, 17h06
  2. Simplifier une macro
    Par chito79000 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 06/05/2015, 11h22
  3. [XL-2007] Je cherche à simplifier une macro
    Par INFINITY100 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/05/2015, 04h55
  4. [XL-2010] Simplifier une macro
    Par Ardiden31 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 14/04/2015, 14h14
  5. {VBA Excel} Simplifier une macro avec une copie
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/06/2007, 14h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo