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 :

copie/supression de shapes bug


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 3
    Par défaut copie/supression de shapes bug
    Bonjour,

    j'ai réalisé une macro dont l'objectif est de copier une plage de cellule comprenant des cellules de calculs, des images et des listes déroulantes, d'une feuille vers une autre feuille.
    La plage de cellule en question possède des listes déroulantes (données> validation>liste). la copie se passe bien lorsque je n'utilise pas une des listes déroulantes. Lorsque que je modifie le texte d'une cellule en choisissant un autre élément de la liste, et que je lance ma macro de copie vers l'autre feuille là ca bug à ce niveau du code (en rouge) :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Set plagerech = Sheets(FICHE_CALCUL).Range(cimage & ld_module & ":" & cimage & lf_module)
       
        For Each obj In ActiveSheet.Shapes
            
    Worksheets(FICHE_CALCUL).Activate Set plageimg = Range(obj.TopLeftCell.Address) If Not Intersect(plageimg, plagerech) Is Nothing Then 'Verifie si le shape est dans la plage de cellules cible obj.Copy Sheets("PRESENTATION").Range(cimage_pres & ld_pres).PasteSpecial End If
    Next obj


    Il n'arrive pas a copier le shape qui ne semble plus reconnu.

    Si par contre j'enregistre mon fichier excel, et que je lance la macro là ca marche bien...

    je vous avoue que je ne comprend pas pourquoi... en quoi l'enregistrement joue t il sur la reconnaissance des shape, en quoi la modification d'un élément d'une liste de selection peut provoquer un probleme dans la copie ou supression d'un shape ?


    Merci pour votre aide !

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour et bienvenue sur le forum,

    Ci-dessous une solution éventuelle.

    Les objets seront copiés seulement si ceux-ci sont complètement intégrés dans la plage de cellules sélectionnée et sont repositionnés exactement au même endroit sur la feuille 2
    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
    27
    28
    29
    30
    31
    32
    33
    34
    Sub Copie_Object()
    Application.ScreenUpdating = False
    Dim plage As Range, Shp As Shape
    Dim Lshp As Single, Tshp As Single, Wshp As Single, Hshp As Single, Xshp As Single, Yshp As Single
    Dim Lp As Single, Tp As Single, Wp As Single, Hp As Single, Xp As Single, Yp As Single
     
    Set plage = Selection
    Lp = plage.Left
    Tp = plage.Top
    Wp = plage.Width
    Hp = plage.Height
    Xp = Lp + Wp
    Yp = Tp + Hp
     
    For Each Shp In ActiveSheet.Shapes
        Lshp = Shp.Left
        Tshp = Shp.Top
        Wshp = Shp.Width
        Hshp = Shp.Height
        Xshp = Lshp + Wshp
        Yshp = Tshp + Hshp
        If Tshp >= Tp And Lshp >= Lp And Xshp <= Xp And Yshp <= Yp Then
            Shp.Copy
            With Sheets(2)
                .Paste
                .Shapes(.Shapes.Count).Name = Shp.Name
                .Shapes(Shp.Name).Left = Lshp
                .Shapes(Shp.Name).Top = Tshp
            End With
        End If
    Next
     
    Application.ScreenUpdating = True
    End Sub

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 3
    Par défaut
    Merci bien !
    Comme ca ca fonctionne très bien.

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

Discussions similaires

  1. [AC-2007] bug supression d'enregistrement automatique
    Par alex77140 dans le forum IHM
    Réponses: 5
    Dernier message: 29/07/2009, 10h24
  2. Bug lors de la copie de feuilles
    Par Kaaluu dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/04/2009, 13h20
  3. [E07] - Mauvaise qualité copie d'écran (Bug ?)
    Par Larion dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/03/2009, 15h02
  4. copie d'un objet shape sur une form
    Par JockdiL dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/09/2008, 19h33

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