Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Salut patricktoulon ,
quand cela plante dans le volet sélection je n'ai qu'un graphique (le diagramme de départ) et à l'intérieur on dirait qu'un graphique a été ajouté.
ca y est j'ai compris en fait ca arrive quant la selection est un chart
VB:
Public Function Capture(Obj, Optional Lpath As String = "", Optional ForRibbon As Boolean = False)
Dim ipic As IPicture, hCopy As LongPtr, tIID As GUID, PictStructure As PictDesc, x#, ret As LongPtr, Avail&, WinOrScreen&
Call OpenClipboard(0)
'==============================
Application.ScreenUpdating = False
Cells(1, 1).Select
'============================'
Salut,
Le code de Capture est très fragile pour toutes les versions d'Excel. Dans les versions récentes d’Excel (Office 2019–2025), plusieurs points de ce code cessent de fonctionner correctement : gestion du presse‑papiers, API Windows, délais trop courts, et surtout la copie des graphiques Excel qui ne se comporte plus comme avant.
Nullosse
?????????????????
je l'ai tester sur 365 entreprise la version excel la plus chiante par définition et elle marche bien sur 2013 32 et 2016 64 aussi
les delay me semble t il passe par IsClipboardFormatAvailable
avant de capturer on vide et on attend que le clip soit bien vide return 0
VB:
EmptyClipboard
CloseClipboard
ActiveWindow.VisibleRange.Cells(1).Select
Avail = 1
Do While Avail > 0
Avail = IsClipboardFormatAvailable(&H2)
DoEvents
Loop
apres le copypicture 2 boucles d'attentes
une sur le isavailable return 1 et l'autre sur le getclipboarddata return du handle bitmap
Code:
Do While Avail = 0
Avail = IsClipboardFormatAvailable(&H2)
DoEvents
Loop
OpenClipboard 0&
x = Timer
Do While (hCopy = 0)
hCopy = CopyImage(GetClipboardData(&H2), 0, 0, 0, &H4)
If Timer - x > 1 Then Exit Do
Loop
CloseClipboard
d'ailleurs la 2d est inutile a partir du moment ou isavailablformate est sorti de la boucle 1
donc je vois pas ou ca peut ^tre short le delay
ces attentes contrairement a un wait xxx ne sont pas harbitraires elle s'appuie sur la presence du bitmap dans le clip
tes soucis c'est ailleurs qu'il faut chercher
Donc on a essayé en long ,en longPtr rien y fait
Chez moi ca fonctionne sur 2013 32 bit 2016 64 et je l'ai testé au travail sur 2021
Conclusion c'est vraiment chez toi que ça divague
Salut,
finalement, j'avais la même de El Chorizo du post #10 , et pourtant je suis en Excel 2021 64 bits windows 11. Si tu n'as pas d'erreur à ton boulot avec un Excel 2021 patricktoulon, je soupçonne qu'il soit en 32 bits. Le problème vient de cette ligne :
VB:
' Convertir le GUID IPicture depuis la chaîne
ret = IIDFromString(StrConv(IPictureIID, vbUnicode), tIID)
ret est défini en Long et IIDFromString :
Code:
Declare PtrSafe Function IIDFromString Lib "ole32" (ByVal lpsz As String, ByRef lpiid As GUID) As LongPtr
avec du 32 bits ça passe mais pas avec du 64 bits (pas apparemment avec ton excel 2016 64 bits). On mettant :
Code:
Dim ret As LongPtr
je n'ai plus d'erreur et le complément fonctionne.
L'erreur que j'avais signalée dans mes messages précédents était bien dû au fait que j'avais sélectionné le chart avant d'utiliser le complément.
Nullosse
a ben oui bien sur pourquoi je n'y ai pas pensé, je l'avais corrigé déjà dans une autre mais pas dans la insquare
Bravo pour ta perspicacité
ravi aussi que çà fonctionne
je vais changer ça de suite
Merci @nullosse
au fait pour deselecter le chart met plutot ceci ca evite le scroll automatique si tu n'es pas en top 0 pour la ligne 1 ActiveWindow.VisibleRange.Cells(1).Select
ça sélectionne la première cellule a gauche de la grille visible
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD