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 :

Export sous forme d'image [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2014
    Messages : 41
    Points : 39
    Points
    39
    Par défaut Export sous forme d'image
    Bonjour,
    Je suis sous Excel 2016 et VBA 7.1 et cette solution qui marchait très bien sous Excel-2010 ne fonctionne plus.
    En fait, elle fonctionne en mode pas à pas d'exécution de la macro mais pas en mode d’exécution normal.
    Le problème se situe entre les lignes .Paste et .Export :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      With Chart1
                    .Paste
                    .Export Chemin & NomImage, "jpg"
                End With
    En pas à pas le Paste s'exécute et l'image sauvegardée est bonne, en mode exécution, le Paste ne s'exécute pas et l'image sauvegardée est vide.
    Ajouter un DoEvents ou un Sleep entre les deux n'y fait rien...
    Quelqu'un a t-il une idée ?
    Passionné d'anciennes automobiles, j'ai créé un site dédié qui est loin d'être terminé : https://www.anciennes-automobiles.fr

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par PhilippeF75 Voir le message
    Bonjour,

    Je viens de constater le problème. Effectivement, le collage ne passe pas en automatique alors que le pas à pas fonctionne. J'ai essayé de changer plusieurs paramètres sans succès. La recherche continue (sans garantie).

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    La description du problème donne à penser que la méthode Export intervient alors que la méthode Paste n'a pas terminé totalement son travail graphique.
    Utiliser Sleep ne servirait à rien, puisque Cela aurait pour effet d'interrompre tout travail
    Application.Wait interrompt l'exécution de la macro, mais je ne sais pas si interrompt également tout le reste.
    Un seul Doevents risque d'être trop "court"

    Je n'ai pas office 2016 mais proposerais volontiers :
    - soit des doevents en boucle
    - soit l'utilisation de application.Ontime pour déclencher un peu plus tard une procédure distincte ne contenant que la méthode export

    "proposerais volontiers", mais à mon grand regret car aucune de ces propositions n'est totalement orthodoxe.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    la gestion d'attente du bitmap dans le clipboard ne peut se faire vraiment correctement que par une api dans un do loop
    c'est l'api IsClipboardFormatAvailable
    declaration 32 bit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Declare Function IsClipboardFormatAvailable Lib "User32" (ByVal wFormat As Integer) As Long
    le format attendu c'est 2 en hex c'est "&H2"
    boucle d'attente
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'on va boucler dans que le contenu du clipboard n'est pas BITMAP soit (2)
        Do: DoEvents: hPicAvail = IsClipboardFormatAvailable(2): Loop While hPicAvail = 0

    pour le format metafile c'est "14"
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2014
    Messages : 41
    Points : 39
    Points
    39
    Par défaut
    Merci pour vos réponses.
    Je viens d'essayer la solution de PatrickToulon.
    Malheureusement, la boucle est infinie car le Paste ne se fait toujours pas...
    Donc le problème est légèrement en amont.
    Passionné d'anciennes automobiles, j'ai créé un site dédié qui est loin d'être terminé : https://www.anciennes-automobiles.fr

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par PhilippeF75 Voir le message
    J'ai aussi testé la solution de Patrick, sans résultat également. Le debug.print hPicAvail donne 1.

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    @philippe
    Je suis sous Excel 2016 et VBA 7.1
    il te faut faire la declaration en consequence bien evidement j'ai donné la declaration 32 bit vba 6

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Private Declare PtrSafe Function IsClipboardFormatAvailable Lib "user32" (ByVal wFormat As Long) As Long
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #8
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 946
    Points
    55 946
    Billets dans le blog
    131
    Par défaut
    Ne fonctionne pas chez moi non plus...

    [EDIT] le pouce rouge n'y change rien... [/EDIT]
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    milles excuse a tous le".copypicture envoit dans le clipboard au format metafile c'est donc bien 14 comme je l'ai sugeré plus haut

    perso j'utilise copy avec xlscreen ou xlbitmat donc le format bitmap attendu dans le clipboard
    pour en revenir ici
    voici un exemple tester sur windows 7 64 bits et excel 2007 32 bits
    je vide le clipboard entre chaque copie pour tester vraiment le do/loop de l'api IsClipboardFormatAvailable
    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
    Private Declare Function IsClipboardFormatAvailable Lib "user32" (ByVal wFormat As Integer) As Long
    Sub exporte_image()
        Dim Plage1 As Range
        Dim Plage2 As Range
        Dim chart1 As Object
        Dim chart2 As Object
        With Sheets("Feuil1")
            mesplage = Array("A2:K68", "A69:K180")
            For i = 0 To UBound(mesplage)
                Set Plage = .Range(mesplage(i))
                Debug.Print IsClipboardFormatAvailable(2)
                With CreateObject("htmlfile").parentwindow.clipboardData.clearData("Text"): End With    'on vide le clipboard entre chaque copie pour tester vraiment le available
                Plage.CopyPicture
                Debug.Print IsClipboardFormatAvailable(14)    ' CopyPicture atterit  dans  le clipboard  en  metafile
                Set chart1 = .ChartObjects.Add(Plage.Left, Plage.Top, Plage.Width, Plage.Height).Chart
                Do: DoEvents: hPicAvail = IsClipboardFormatAvailable(14): Loop While hPicAvail = 0    'Or (Timer - T) > 1000
                Debug.Print IsClipboardFormatAvailable(14)    ' CopyPicture atterit  dans  le clipboard  en  metafile
                chart1.Paste
                chart1.Export Environ("userprofile") & "\Desktop\image_" & i & ".jpg", "jpg"
                .ChartObjects.Delete
            Next
     
        End With
    End Sub
    encore une fois milles excuses
    perso j'utiliserais copypîcture seulement si j'utiliserais olecreatepictureindirect avec le guid complet de data (0) a data(8) pour sauver le Hpic en jpg
    copier en xlbitmap est suffisant ou xlscreen si il y est sensé avoir des shapes a prendre avec dans la capture

    ps; debrouillez vous pour la decaration 64 bit vba 7 perso je ne peux pas tester chez moi 2007 et 2010 32 bits

    pour info
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Plage.CopyPicture xlBitmap '
    on a les valeurs ,les object presents au niveau de la page,MAIS!! pas le gridline
    et le do /loop c'est avec 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Do: DoEvents: hPicAvail = IsClipboardFormatAvailable(14): Loop While hPicAvail = 0    'Or (Timer - T) > 1000
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plage.copypicture xlscreen
    on a a tout (les shapes ,tout objects,gridline ,etc...)meme si la fentre application est reduite
    et le do/loop c'est 2 aussi (bitmap)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Do: DoEvents: hPicAvail = IsClipboardFormatAvailable(14): Loop While hPicAvail = 0    'Or (Timer - T) > 1000
    pour info aussi si utilisation de sendkey(touchesnapshot) c'est bitmap aussi(pour une capture de userform par exemple
    voila
    j'espere qu'avec tout ca je suis pardonné sinon tant pis
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #10
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 946
    Points
    55 946
    Billets dans le blog
    131
    Par défaut
    Ca ne fonctionne pas non plus avec 14... (j'avais testé puisque tu le mentionnais dans ton post)
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    vraiment bisarre ca
    demo avec debug
    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
     
    Private Declare Function IsClipboardFormatAvailable Lib "user32" (ByVal wFormat As Integer) As Long
    Sub exporte_image()
        Dim Plage1 As Range
        Dim Plage2 As Range
        Dim chart1 As Object
        Dim chart2 As Object
        With Sheets("Feuil1")
            mesplage = Array("A2:K68", "A69:K180")
            For i = 0 To UBound(mesplage)
                Debug.Print "copie de la plage(" & i & ")"
                Set Plage = .Range(mesplage(i))
                With CreateObject("htmlfile").parentwindow.clipboardData.clearData("Text"): End With    'on vide le clipboard entre chaque copie pour tester vraiment le available
                Debug.Print "contenu  du  clipboard avant copie =""" & CreateObject("htmlfile").parentwindow.clipboardData.GetData("Text") & """"
                Debug.Print "avant copi format attendu est 14 0 pour faux 1 pour vrai donc il est à " & IsClipboardFormatAvailable(14)
                Plage.CopyPicture
                Set chart1 = .ChartObjects.Add(Plage.Left, Plage.Top, Plage.Width, Plage.Height).Chart
                Do: DoEvents: hPicAvail = IsClipboardFormatAvailable(14): Loop While hPicAvail = 0    'Or (Timer - T) > 1000
                Debug.Print "contenu format (14) apres do/loop = " & IsClipboardFormatAvailable(14)    ' CopyPicture atterit  dans  le clipboard  en  metafile
                chart1.Paste
                chart1.Export Environ("userprofile") & "\Desktop\image_" & i & ".jpg", "jpg"
                .ChartObjects.Delete
            Next
     
        End With
    End Sub
    resultat
    Nom : Capture.JPG
Affichages : 1364
Taille : 175,8 Ko
    j'invente pas pourtant
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  12. #12
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 946
    Points
    55 946
    Billets dans le blog
    131
    Par défaut
    Patrick,

    Ton test dit que le clipboard contenait bien un truc de type 14. Ca ne dit pas que le fichier image a été produit correctement et que c'est une image conforme à la plage souhaitée.

    Voici probablement pourquoi ça ne fonctionne pas. Regarde le premier message de la discussion. Tu y verras un lien vers une discussion parlant d'une solution donnée par Eric sur la version 2010. Le demandeur dit explicitement que cette solution ne fonctionne pas sur 2016. Et toi, tu viens avec une version XL2007. Comment veux-tu que tes tests soient pertinents? Il y a de fortes chances pour que ça ne passe pas la barre 2007=>2016 si ça ne passe pas la barre 2010=>2016, non?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  13. #13
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Pour rappel :
    Je suis sous Excel 2016 et VBA 7.1 et cette solution qui marchait très bien sous Excel-2010 ne fonctionne plus.
    En fait, elle fonctionne en mode pas à pas d'exécution de la macro mais pas en mode d’exécution normal.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  14. #14
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    si elle passe en pas a pas alors voir si l'api est toujours prise en compte en vba 7 ou voir declaration pour "#if VBA7 versionapi 1 ELSE version api 2 END IF " en haut de module

    je testerais demain avec le pc du pitchoun il a W10 et 2016 je verrais bien
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  15. #15
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    Ton test dit que le clipboard contenait bien un truc de type 14. Ca ne dit pas que le fichier image a été produit correctement et que c'est une image conforme à la plage souhaitée.
    mon test n'est pas fait pour tester un fichier produit mais le format de données dans le clipboard apres copypicture et do/loop c'est tout

    etant donné que je le vide avant copypicture ce qui est dans le clipboard apres do/loop ne peut etre que les metadonnées image de la plage format (14)
    je testerais demain avec le portable du petit
    je vais faire une recherche vba 7 avec cet api je suis curieux
    moi qui voulais passer a 2016 199€ pour etre emm... non merci
    rassure moi il existe bien en 32 bits au moins

    toute page confondues dans ma recherche amennent a ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #If VBA7 And Win64 Then
        Private Declare PtrSafe Function IsClipboardFormatAvailable Lib "user32.dll" (ByVal wFormat As Long) As Long
    #Else
        Private Declare Function IsClipboardFormatAvailable Lib "user32.dll" (ByVal wFormat As Long) As Long
    #End If
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2014
    Messages : 41
    Points : 39
    Points
    39
    Par défaut
    Bonsoir à tous (chez moi, c'est encore le soir...)
    Je vois que ça agite bien ce sujet !
    Précision : je suis sous Excel 2016 et VBA 7.1 en 32 bits sous Windows 10 (64 bits).
    Passionné d'anciennes automobiles, j'ai créé un site dédié qui est loin d'être terminé : https://www.anciennes-automobiles.fr

  17. #17
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    Bonjour Patrick,

    J'ai testé ton code du post #11 avec la même configuration que Philippe.

    Le code plante à la deuxième image.

    Pièce jointe 371361

    Pièce jointe 371365

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    copie de la plage(0)
    contenu  du  clipboard avant copie =""
    avant copie format attendu est 14 0 pour faux 1 pour vrai donc il est à 0
    contenu format (14) apres do/loop = 1
    copie de la plage(1)
    contenu  du  clipboard avant copie =""
    avant copie format attendu est 14 0 pour faux 1 pour vrai donc il est à 0
    contenu format (14) apres do/loop = 1

  18. #18
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 946
    Points
    55 946
    Billets dans le blog
    131
    Par défaut
    Patrick,

    La solution demandée n'est pas de savoir ce qu'il y a dans le clipboard (on s'en fout, en fait), la solution demandée est d'obtenir un fichier image qui est la représentation fidèle de la plage souhaitée.

    Tout test qui n'aboutirait pas à ce résultat est invalide. Par contre, teste la solution de la toute première discussion (celle mise en lien dans le premier message de cette discussion-ci) en 2007, sans boucle, api et compagnie. Obtiens-tu une un fichier image correct? Si oui, ça permettrait de savoir que 2007 travaille comme 2010, et donc que le problème est ultérieur à 2010. Il serait alors intéressant de tester en 2013 pour essayer de voir à partir de quand ça pose problème (bien que plusieurs facteurs puissent entrer en ligne de compte).

    Mais quoi qu'il en soit, en 2016, ça ne fonctionne plus (pas de fichier image fidèle), et c'est bien cela qui doit être résolu (obtention de ladite image), et pas des tests sur des api qui vérifient que... Et je ne pense pas que ce soit l'appel de la fonction de l'api qui soit en cause.

    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  19. #19
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Essayez en "activant" le Chart :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Chart1
       .Paste
       .Activate
       .Export Chemin & NomImage, "jpg"
    End With
    ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Chart1
       .Activate
       .Paste
       .Export Chemin & NomImage, "jpg"
    End With
    Second essai : préciser les noms des paramètres nommés utilisés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Chart1
       .Paste
       .Activate
    End With
    ActiveChart.Export Filename:=Chemin & NomImage, FilterName:="jpg"
    Cordialement,
    Franck

  20. #20
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    Citation Envoyé par Pierre Fauconnier Voir le message
    Patrick,

    La solution demandée n'est pas de savoir ce qu'il y a dans le clipboard (on s'en fout, en fait), la solution demandée est d'obtenir un fichier image qui est la représentation fidèle de la plage souhaitée.

    Tout test qui n'aboutirait pas à ce résultat est invalide. Par contre, teste la solution de la toute première discussion (celle mise en lien dans le premier message de cette discussion-ci) en 2007, sans boucle, api et compagnie. Obtiens-tu une un fichier image correct? Si oui, ça permettrait de savoir que 2007 travaille comme 2010, et donc que le problème est ultérieur à 2010. Il serait alors intéressant de tester en 2013 pour essayer de voir à partir de quand ça pose problème (bien que plusieurs facteurs puissent entrer en ligne de compte).

    Mais quoi qu'il en soit, en 2016, ça ne fonctionne plus (pas de fichier image fidèle), et c'est bien cela qui doit être résolu (obtention de ladite image), et pas des tests sur des api qui vérifient que... Et je ne pense pas que ce soit l'appel de la fonction de l'api qui soit en cause.

    j'avais deja testé tout au debut :elle fonctionne sauf que l'auteur du post 1 dans le lien a oublié de deleter le 2 chart

    @eric si ca plante au 2d c'est deja plus significatif ca voudrais dire que il y a un temps requis aussi pour le delete du 1 er chart et la creation du 2d
    l'ors du plantage dans le debug est que l'on est bon ?
    essayer un doevents juste avant next mais bon si c'est ce que je crois on a un serieux soucis de memoire alloué

    peut etre aussi essayer avec un seul chart
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [WD-2007] Exporter une équation sous forme d'image depuis Word
    Par citizen87 dans le forum Word
    Réponses: 2
    Dernier message: 30/11/2011, 10h06
  2. [Tableaux] Exporter un tableau sous forme d'image
    Par debutanteVB.NET dans le forum Langage
    Réponses: 2
    Dernier message: 27/10/2008, 11h35
  3. Affichage lien sous forme d'image
    Par neoboy dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 24/01/2008, 15h57
  4. Récupérer la valeur d'un submit sous forme d'image
    Par Jim_Nastiq dans le forum Langage
    Réponses: 6
    Dernier message: 28/04/2006, 10h12
  5. Export sous forme d'INSERT SQL
    Par Kraken dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 04/09/2003, 11h40

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