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 :

VBA Probleme avec ActiveSheet.Shapes [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 42
    Par défaut VBA Probleme avec ActiveSheet.Shapes
    Bonjour,

    J'ai fait un code en VBA qui fonctionnent parfaitement sous Excel 2003 mais qui me renvoie une erreur sous Excel 2007.

    Erreur Execution '-2147024809 (80070057)'
    L'élément portant ce nom est introuvable.

    sur le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ActiveSheet.Shapes("Oval 1").Select '<======= Erreur se passe ici
    Selection.Copy
    Range(Colonne & Celldebut).Select
    ActiveSheet.Paste
    Alors que sur Excel 2003 il realise ce bout de code sans soucis.

    Avez vous une idée?

    J'ai trouvé ça sur le site de microsoft mais ca ne m'aide pas beaucoup.

    Lorsque vous essayez d'exécuter une procédure dans Microsoft Office Excel 2007, un message d'erreur qui ressemble à la message d'erreur suivant s'affiche :
    Erreur d'exécution '-2147024809 (80070057)' :
    L'élément avec le nom spécifié est introuvable.
    Cause
    Ce problème se produit car il existe plus d'espaces dans nom de l'article tel qu...
    Ce problème se produit car il existe plus d'espaces dans nom de l'article tel qu'il est utilisé dans la procédure que nom réel de l'article. Par exemple, le code suivant va faire pas référence un article dont le nom réel est « chart 1 ».

    ActiveSheet.Shapes("chart 1").Height = 9

    Ce problème peut se produire lorsque vous essayez d'exécuter une procédure qui a été créée dans Microsoft Office Excel 2003. Un problème est survenu dans Excel 2003 dans lequel plusieurs espaces ont été traités exactement comme un espace. Ce problème a été corrigé dans Excel 2007.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Bonjour,

    D'après l'erreur et les commentaires "made in Microsoft", jette un oeil au nom de ta shape et vérifie qu'il n'y ait pas un espace qui se ballade à la fin et qu'il faille supprimer.

    Dans le cas contraire et au vu de
    Ce problème peut se produire lorsque vous essayez d'exécuter une procédure qui a été créée dans Microsoft Office Excel 2003.
    je dirais qu'il faut recréer le tout dans Excel 2007 histoire de régler le problème. Cela arrive parfois. Bref, nouveau classeur et t'es bon pour du copier/coller.

    A moins que quelqu'un ait une autre idée.

    Bonne chance !

  3. #3
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 42
    Par défaut
    Juste une question toute bete.

    Comment je fais pour modifer le nom de ma Shape ?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Re,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Feuil1").Shapes(Worksheets("Feuil1").Shapes.Count).Name
    Cela te permet de récupérer le nom de tes Shapes et donc de les modifier. Tu peux ainsi faire les vérifications s'imposant.

    De plus, vérifie que ta Shape est bien présente et au bon nom.

    Dis-moi si tu la retrouves, si elle existe et sous quel nom.

  5. #5
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 42
    Par défaut
    Voilà j'ai ecris le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    shapejb = Worksheets("EDT GENERAL").Shapes(Worksheets("EDT GENERAL").Shapes.Count).Name
    MsgBox shapejb & "bravo"
    afin de recuperer le nom de ma shape. Ma Msgbox m'affiche "AutoShape 5bravo"

    Sur un nouveau classeur j'ai essayé de faire la meme chose en enregistrant une macro pour voir le code qu'il me donnerait.
    Ben je n'ai aucun code mise à part "paste".

    Le code que j'avais récuperé je l'avais obtenu en faisant cette opération sur excel 2003.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Combien de Shapes as-tu dans ton classeur ? Une seule ?

    Si tu en as plusieurs fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = 1 to Worksheets("EDT GENERAL").Shapes.Count
        shapejb = Worksheets("EDT GENERAL").Shapes(i).Name
        MsgBox shapejb
        MsgBox i
    Next
    Cela te donnera le nom de TOUTES tes Shapes une par une. Vérifie que tu ne retrouves pas quelque chose ressemblant de près ou de loin à ce que tu recherches.

    J'y ai aussi mis un permettant de voir à quelle Shape tu te situes. Comme cela, si tu n'y arrives pas par le nom, tu feras
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Shapes(X).Select
    où X est le "i" correspondant à ta Shape. Bref, passe par son index et oublie son nom. Quand on a pas envie de se prendre la tête, on ne se la prend pas

    EDIT : tu as dit qu'elle s'appelait "AutoShape 5". Tu peux aussi remplacer "Oval 1" par cela dans ton code. Peut-être que lors de l'ouverture de l'Excel par Excel 2007, toutes les Shapes ont été considérées en "AutoShape" et qu'il a oublié l'enregistrement d'origine. Bref, je ne sais pas trop alors remplace par le nom que tu viens d'obtenir ou par son index comme je te l'ai proposé et oublie ce que tu avais à l'origine.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] VBA Probleme avec une requete parametré
    Par volsan dans le forum VBA Access
    Réponses: 3
    Dernier message: 11/10/2014, 06h17
  2. [XL-2010] VBA probleme avec le formulaire
    Par liannas dans le forum Excel
    Réponses: 0
    Dernier message: 17/11/2012, 19h15
  3. [XL-2010] en VBA problem avec " IF "
    Par laaich dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/07/2011, 22h15
  4. [VBA]Probleme avec treeview
    Par strike57 dans le forum IHM
    Réponses: 6
    Dernier message: 24/04/2007, 12h17
  5. [VBA]probleme avec Selected()
    Par pioupiouafr008 dans le forum IHM
    Réponses: 5
    Dernier message: 23/04/2007, 21h30

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