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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2014
    Messages : 41
    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 ?

  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
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    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.

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    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
    Membre averti
    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2014
    Messages : 41
    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.

  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
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Franck,

    Le point d'arrêt est sur le paste. J'allais réagir par rapport à cela sur le message de Jacques qui laisse supposer que le problème est entre le paste et l'export, mais il se situe selon moi sur la création de l'objet Chart, puisque c'est l'arrêt juste avant le paste qui permet que l'image soit bonne (Je n'avais pas encore testé la dernière proposition de Patrick)

    [EDIT]
    Mais comme la boucle dans la solution de Patrick est après le paste, je ne sais plus trop quoi penser...
    "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...
    ---------------

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Billets dans le blog
    8
    Par défaut re
    re
    rien ne vous empleche de refaire avec l'ancienne methode maintenant que l'on sait ou ca plante
    peut etre entre 2 add,paste,delete un do/loop sur le chart.count voir meme .pictures.count du chart
    ca ne modifie en rien visiblement la velocité sur 2007 et 2010
    les deux methodes fonctionnent
    reste que cette version 1 chart me plait bien elle fonctionne sur 2007 2010 2016
    parcontre que les choses soit claires j'ai ai trouver ou ca plante mais pas pourquoi (memoire ,procc,etc...)peut etre meme memoire graphique bref je n'en ai aucune idée
    franck il n'y avais aucune critique je te disais simplement de faire le test dans une boucle assez lourde comme ca tu peux voir si le copy/paste a des ratés
    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

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Billets dans le blog
    8
    Par défaut re
    re
    non non c'est moi c'est pas 21/22 mais 20/21 pardon
    ca fatigue les enigmes
    ca se joue a des milliemes de de miliemes de secondes
    pour en avoir confirmation vous pouvez faire simplement un do/loop avec incrementation d'une variable ( ne pas oublier le doevents sinon bloquant) until variable =
    perso je prefere toujours les boucles d'attente basée sur les objects eux meme quand c'est possible
    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
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour Pierre
    puisque c'est l'arrêt juste avant le paste qui permet que l'image soit bonne
    Cela ne permet pas de conclure avec certitude.
    Cet arrêt peut fort bien avoir interrompu les autres messages Windows. Et le prochain message système WM_PAINT, reçu du fait du Paste, peut alors être compris sans entrave ni ambiguïté.
    Bien malin celui qui serait capable de décortiquer un mécanisme dont il ne connaît pas les rouages décidés. Tout peut arriver et être assez vicieusement trompeur.

  11. #11
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    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...
    ---------------

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    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

  13. #13
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    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...
    ---------------

  14. #14
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    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 : 1513
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

  15. #15
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    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.

  16. #16
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    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

  17. #17
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    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

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

  19. #19
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    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...
    ---------------

  20. #20
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    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...
    ---------------

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 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