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 :

Pb avec copyPicture.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 129
    Par défaut Pb avec copyPicture.
    Bonjour à tous,

    Tout d’abord, meilleurs vœux pour cette nouvelle année.

    Pour bien la débuter, j’ai un souci avec une macro et plus particulièrement avec la fonction Plage.CopyPicture

    En effet, je cherche à envoyer par mail quotidiennement des résultats à des agences: le mail marche nickel sauf que tous les 5-6 envois la macro plante avec La méthode CopyPicture de la classe Range a échoué...

    J'ai beau vider le presse papier, ajouter une tempo: rien n'y fait.
    Pire en pas à pas la macro remarche...

    Voici la partie du code en question:
    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
            Set Plage = Sheets("Recap par site").Range("A1:K" & ligne_max)
            'Workbooks.Add:
            'nom = ActiveWorkbook.Name
            'Windows(nom).Activate
            'newHour = Hour(Now())
            'newMinute = Minute(Now())
            'newSecond = Second(Now()) + 10
            'waitTime = TimeSerial(newHour, newMinute, newSecond)
            'Application.Wait waitTime
            'Plage.CopyPicture: Workbooks(nom).activesheet.Paste
            Workbooks.Add: Plage.CopyPicture: activesheet.Paste
            With activesheet.ChartObjects.Add(0, 0, Selection.Width, Selection.Height).Chart
                .Paste
                .Export "U:\suivi.gif", "GIF"
            End With
            ActiveWorkbook.Close False
            Application.CutCopyMode = False
            Call ViderPressePapier
    Merci de vos lumières
    A+
    Alex

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Essaies comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Set Plage = ThisWorkbook.Worksheets("Recap par site").Range("A1:K" & Ligne_Max)
     
    With Workbooks.Add(1)
        With .Worksheets(1).ChartObjects.Add(0, 0, Plage.Width, Plage.Height).Chart
            Plage.CopyPicture
            .Paste
            .Export "C:\Users\user\Desktop\suivi.gif", "GIF"
        End With
        .Close False
    End With
     
    Set Plage = Nothing
    Application.CutCopyMode = False
    Call ViderPressePapier

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 129
    Par défaut
    Merci pour ta réactivité mais hélas ça ne marche pas non plus...
    En effet, j'ai exactement le même problème...

    Et dès que je fais F8, ça marche tout en replantant au mail d'après avec le même message.

    As tu une autre idée ?

    Merci d'avance

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Non je n'ai pas d'autre idée sauf que j'avais testé le code de ma précédente réponse sans pour autant rencontrer de problème particulier.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 129
    Par défaut
    Je viens de retester à nouveau et à la 5e occurrence, la macro plante de nouveau.

    Connais tu un autre moyen d'afficher dans un mail Outlook un tableau Excel défini par une plage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Recap par site").Range("A1:K" & ligne_max)
    En effet, je sais attaché un pdf mais pour la lecture, il serait mieux d'avoir le tableau directement dans le mail

    Merci d'avance
    Alex

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 129
    Par défaut
    J'ai essayé de remodifier le code en "remontant" la purge du presse papier comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            Call ViderPressePapier
            Plage.CopyPicture
            With Workbooks.Add(1)
                With .Worksheets(1).ChartObjects.Add(0, 0, Plage.Width, Plage.Height).Chart
                    .Paste
                    .Export "U:\suivi.gif", "GIF"
                End With
                .Close False
            End With
     
            Set Plage = Nothing
            Application.CutCopyMode = False
    Sachant que viderpressepapier est défini comme tel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub ViderPressePapier()
    Dim Cible As DataObject
    Set Cible = New DataObject
    Cible.SetText ""
    Cible.PutInClipboard
    Set Cible = Nothing
    End Sub

Discussions similaires

  1. Pb avec chart.copypicture
    Par tamtam64 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 09/06/2015, 02h38
  2. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 10/08/2002, 23h52
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  4. [Kylix] Runtime error 230 avec INDY
    Par Anonymous dans le forum EDI
    Réponses: 2
    Dernier message: 23/03/2002, 11h51
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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