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 !
Comme le titre le dit, j'ai ceci qui est censé faire une image d'une plage, l'exporter et la supprimer après qui fonctionne nickel sur Office 2010 mais qui ne fonctionne pas avec Office 2007 ??
Code:
With Sheets("Feuil1")
.Range("A1:Q19").CopyPicture
.Paste
With .ChartObjects.Add(0, 0, 670, 360).Chart
.Paste
.Export chemin
End With
.ChartObjects(.ChartObjects.Count).Delete
.Shapes(.Shapes.Count).Delete
End With
La macro crée bien l'image, fait l'export, mais ne supprime pas l'image après l'export avec le Delete ??
Une idée pour y remédier ?
Cela dit, je pousse mon coup de gueule :
Décidemment c'est vraiment n'importe quoi ce qu'ils ont fait chez Microsoft, compatibilité entre les diverses versions, NUL 😡😡
Les mecs pas foutus de faire quelque chose qui respecte un peu plus les (modeste pour ma part) programmeurs que nous sommes.
Perso je vois de plus en plus de mes classeurs qui ne tournent plus comme il le faudrait sous tel ou tel version d'Office...
Non parce qu'à un moment donné Bill, entre les nouvelles versions et les maj... M...E Bill !
On dirait que Microsoft te fait te fâcher tout vert 😉
Je viens de tester ton code sur 2007 avec succès, pas de version 2010 sous la main
Code:
Sub a()
With Sheets("Feuil1")
.Range("A1:Q19").CopyPicture
.Paste
With .ChartObjects.Add(0, 0, 670, 360).Chart
.Paste
.Export "c:\temp\a.jpg"
End With
.ChartObjects(.ChartObjects.Count).Delete
.Shapes(.Shapes.Count).Delete
End With
End Sub
Je m'aperçois aussi que le mot clé Chr n'est pas accepté par 2007 ? J'ai donc commencé (à tort) par remplacer tous les Chr(13) qui me servaient pour les retours à la ligne, par vbCrLf (plus d'une centaine, sympa 😛) , mais il y a les TextBox qui ont presque tous cette ligne -> If InStr("0123456789,", Chr(KeyAscii)) = 0 Then KeyAscii = 0 et boum erreur... Grr !
Je regarde du côté des Références et là pleins de références qui sont sur mon pc avec 2010 ne figurent pas dans la liste des références sur mon portable avec 2010... Je crois que sur mon portable avec 2007, j'avais une référence manquante, je l'ai décochée et après c'était bon, mais je crois j'en suis même pas sur.
Si je continue la liste des problèmes, j'ai sur une feuille des images (Contrôles ActiveX) Image1, Image2, etc..., il me dit que la variable Image1 n'est pas déclarée 😕 pas une variable c'est des contrôles !?
Je continue... ? Apparemment les [A1], il y a erreur faut remplacer par Range("A1"), j'arrive pas à y croire !
Vous dis pas le bordel que ça met dans mon projet 😡😡
Si tu as des références manquantes, ça plombe tout. Les fonctions de bases de VBA (Len, Chr,...) ne fonctionnent plus et ça plante un peu n'importe où
Il faut avant tout que tu décoches les références manquantes, que tu coches leurs équivalent en 2007 si tu en as besoin dans ton projet, et seulement ensuite que tu corriges ton code, sinon tu vas corriger du code qui fonctionne correctement en 2007 avec les bonnes références
Pour assurer une meilleure compatibilité des références, le mieux est... de se passer de références 🙄 (quand c'est possible)
de nombreux objets peuvent être utilisés avec CreateObject plutôt que par une référence
CreateObject ne nécessite de cocher aucune référence
tu as des références vers quels objets ?
Mais franchement je ne suis pas sûr de sur quels objets elles font références... 🙄
Pourrais-tu me montrer un ou deux exemples stp...
Sur une feuille : Quelques contrôles ActiveX "Image".
Dans l'Usf des : CommandButton, Image, TextBox, 1 WebBrowser, Label, mais je pense notamment aux 3 ListView, ce sont elles qui ont posés problème lors de la fameuse maj du 14 avril...
Les références ne sont pas seulement là pour les contrôles, (ne pas confondre les soucis de la mise à jour particulière de ces derniers jours avec tes problèmes de références "classiques") dans le lien en bas de ma signature, mon outil contient une Listview et un treeview et je crois qu'il n'y avait pas de soucis d'une version à l'autre (sauf versions 64 bits...)
Donc tu as le choix, soit tu fait une version 2010 et une version 2007, dans la version 2007 tu coches les références Office/Outlook 12 et en 2010 Office/Outlook 14, mais ça demande de maintenir les 2 versions.
Soit tu essayes de te passer des références qui font appels à des objets (pas aux contrôles, a priori), mais ça demande de reprendre le code
Par exemple, pour créer un objet Word :
Avec la référence Word cochée ça donne un truc du genre
Code:
Sub test()
Dim WordApp As Word.Application
Set WordApp = New Word.Application
WordApp.Visible = True
WordApp.Documents.Add
WordApp.Documents.Add
WordApp.Windows.Arrange arrangestyle:=wdTiled
End Sub
L'intérêt quand tu code c'est que tu as l'autocompletion des méthodes, les constantes, etc...
Sans la référence cochée, ça donne ça
Code:
Sub test2()
Dim WordApp As Object
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True
WordApp.Documents.Add
WordApp.Documents.Add
WordApp.Windows.Arrange arrangestyle:=0
End Sub
il faut remplacer les contantes Word par leur valeur (ici wdTiled = 0)
- 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