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 :

Pb selection - shapes - range


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 55
    Points : 38
    Points
    38
    Par défaut Pb selection - shapes - range
    Bonjour.
    J'ai un certain nombre d'objets graphiques (des Shapes) dont je dispose du nom.
    Mon but est d'écrire une macro qui puisse les grouper en un seul objet.

    Le souci, c'est que selon les fois, il n'y aura pas le même nombre d'objets.
    Pour être plus clair, mes objets graphiques s'appellent "Mvt1" , "Mvt2" , "Mvt3", etc ...
    Le problème c'est qu'il peut y en avoir un nombre indéterminé.

    Bref, donc pour les grouper , voici ce que je faisais, et qui ne marche malheureusement pas vu que ça me déclenche des erreurs :

    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
    Private Sub grouperObjets()
        Dim selec As Range
        Dim i As Integer
     
        Set selec = Worksheets("Feuil1").Shapes("Mvt1") ' Erreur : Types incompatibles
     
        For i = 2 To nbMouvements()
            If nomExiste("Mvt" & i, "Feuil1") = True Then
                Set selec = Union(selec, Worksheets("Feuil1").Shapes("Mvt" & i)) ' Erreur : Types incompatibles
            End If
       Next i
       selec.Select
       Selection.Group
       Selection.ShapeRange.Name = "GroupeMouvements"
       End If
     
    End Sub
    Merci d'avance à quiconque pourrait m'aider

  2. #2
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Un objet Range fait référence à une cellule ou à une plage de cellule. Alors qu'un objet Shape peut être n'importe quoi qui se trouve par dessus une feuille de calcul. Ce peut être soit un graphe, soit une image, soit une forme automatique...

    Tu dois donc déclarer ta variable en tant que Shape.


  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 55
    Points : 38
    Points
    38
    Par défaut
    J'ai changé la déclaration de selec en mettant as Shape.

    En effet la première erreur disparait.

    Malheureusement la deuxième reste toujours, au niveau de la ligne

    Set selec = Union ( ............... )

    pcq dans le Union ( .... ) il attend des Range comme paramètre
    que faire ?

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir

    Tu peux utiliser cette syntaxe

    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
    Sub GroupementShapes_Conditionnel()
        Dim Sh As Shape
        Dim Tableau() As String
        Dim i As Integer
     
        For Each Sh In ActiveSheet.Shapes
            If Left(Sh.Name, 3) = "Mvt" Then
                i = i + 1
                ReDim Preserve Tableau(i)
                Tableau(i) = Sh.Name
            End If
        Next
     
        Set Sh = ActiveSheet.Shapes.Range(Tableau).Group
        Sh.Name = "NomGroupe"
    End Sub


    bon week end
    michel

Discussions similaires

  1. méthode select class range échoué
    Par PLH81 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 25/08/2014, 17h03
  2. [XL-2007] Manipulation de Groupe TextBox - Shape Range
    Par linodev dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/11/2013, 17h11
  3. [e-00][debutant]probleme dans la selection de ranges
    Par cladsam dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/02/2009, 16h54
  4. [VBA-E] Erreur methode select classe range
    Par kdestine dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 17/09/2007, 11h05
  5. [VBA-E] incompatibité de type dans selection de rangées
    Par lucarno dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/05/2007, 08h01

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