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 :

Erreur 1004: L'lObjet plageformes doit contenir au moins deux éléments


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 245
    Par défaut Erreur 1004: L'lObjet plageformes doit contenir au moins deux éléments
    Bonjour
    Je veux en cliquant sur la cellule M20 de la feuille "Cours" afficher les icones de la liste des matières. Dans la feuille "Admin" à partir de la ligne 10 il y a en BC les icones, en BD les noms d'icones et en BE le nom du fichier(image). La macro MontreListIcone doit au clic sur la cellule M20 de la feuille Cours(Renommée dans l'éditeur comme Form_Cours) dupliquer la forme nommée IconMenuSample, la regrouper avec l'icone corresponde. Si les explications ne sont pas claires, ci dessous des captures des feuille Cours(surnommée Form_Cours) et Admin et le code. L'erreur se situe au niveau de cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With .Shapes.Range(ShapeArr).Group
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Sub MontreListIcone()
    Dim IconRow As Long, LastIconRow As Long
    Dim ShapeArr() As String
    Dim ShapeGrp As Variant
    LastIconRow = Admin.Range("BE39").End(xlUp).Row
    If LastIconRow < 10 Then Exit Sub
    IconNumb = 1
    With Form_Cours
    On Error Resume Next
    .Shapes("IconMenuGrp").Delete
    On Error GoTo 0
    For IconRow = 10 To LastIconRow
    .Shapes("IconMenuSample").Duplicate.Name = "IconMenu" & IconNumb
    With .Shapes("IconMenu" & IconNumb)
    .TextFrame2.TextRange.Text = "     " & Admin.Range("BD" & IconRow).Value
    If IconNumb <> 1 Then
    .Letf = Form_Cours.Shapes("IconMenu" & IconNumb - 1).Left
    .Top = Form_Cours.Shapes("IconMenu" & IconNumb - 1).Top + Form_Cours.Shapes("IconMenu" & IconNumb - 1).Height
    End If
    End With
    ShapeGrp = ShapeGrp & "IconMenu" & IconNumb & ","
    FilePath = [AppFolder] & "\ClassIcons\" & Admin.Range("BE" & IconRow).Value
    If Dir(FilePath, vbDirectory) = "" Then GoTo skipIcon
    .Pictures.Insert(FilePath).Name = "IconItem" & IconNumb
    With .Shapes("IconItem" & IconNumb)
    .LockAspectRatio = msoCTrue
    .Height = 12
    .Left = Form_Cours.Shapes("IconMenu" & IconNumb).Left + 2
    .Top = Form_Cours.Shapes("IconMenu" & IconNumb).Top + 2
    .Visible = msoCTrue
    End With
    ShapeGrp = ShapeGrp & "IconItem" & IconNumb & ","
    skipIcon:
    IconNumb = IconNumb + 1
    ShapeGrp = Left(ShapeGrp, Len(ShapeGrp) - 1)
    ShapeArr = Split(ShapeGrp, ",")
    With .Shapes.Range(ShapeArr).Group
    .Name = "IconMenuGrp"
    .Left = Form_Cours.Range("M21").Left
    .Top = Form_Cours.Range("M21").Top
    .OnAction = "Class_SelectIcon"
    End With
    Next IconRow
    End With
    End Sub
    Images attachées Images attachées   

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 440
    Par défaut
    Bonjour,

    Vous avez sans doute trouvé la solution depuis, mais voici toujours une suggestion:
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Option Explicit
     
    Sub MontreListIcone()
        Dim IconRow As Long, LastIconRow As Long
        Dim ShapeArr() As String
        Dim ShapeGrp As Variant
        LastIconRow = Admin.Range("BE39").End(xlUp).Row
        If LastIconRow < 10 Then Exit Sub
        iconnumb = 1
        With Form_Cours
            On Error Resume Next
            .Shapes("IconMenuGrp").Delete
            On Error GoTo 0
            For IconRow = 10 To LastIconRow
                .Shapes("IconMenuSample").Duplicate.Name = "IconMenu" & iconnumb
                With .Shapes("IconMenu" & iconnumb)
                    .TextFrame2.TextRange.Text = "     " & Admin.Range("BD" & IconRow).Value
                    If iconnumb <> 1 Then
                        .Letf = Form_Cours.Shapes("IconMenu" & iconnumb - 1).Left
                        .Top = Form_Cours.Shapes("IconMenu" & iconnumb - 1).Top + Form_Cours.Shapes("IconMenu" & iconnumb - 1).Height
                    End If
                End With
                ShapeGrp = ShapeGrp & "IconMenu" & iconnumb & ","
                FilePath = [AppFolder] & "\ClassIcons\" & Admin.Range("BE" & IconRow).Value
                If Dir(FilePath, vbDirectory) = "" Then GoTo skipIcon
                With .Shapes("IconItem" & iconnumb)
                    .LockAspectRatio = msoCTrue
                    .Height = 12
                    .Left = Form_Cours.Shapes("IconMenu" & iconnumb).Left + 2
                    .Top = Form_Cours.Shapes("IconMenu" & iconnumb).Top + 2
                    .Visible = msoCTrue
                End With
                ShapeGrp = ShapeGrp & "IconItem" & iconnumb & ","
    skipIcon:
                iconnumb = iconnumb + 1
                ShapeGrp = Left(ShapeGrp, Len(ShapeGrp) - 1)
                ShapeArr = Split(ShapeGrp, ",")
            Next IconRow
            If iconnumb = 1 Then
                MsgBox "Annulé. L'lObjet plageformes doit contenir au moins deux éléments", , "Anomalie"
            Else
                With .Shapes.Range(ShapeArr).Group
                    .Name = "IconMenuGrp"
                    .Left = Form_Cours.Range("M21").Left
                    .Top = Form_Cours.Range("M21").Top
                    .OnAction = "Class_SelectIcon"
                End With
            End If
        End With
    End Sub
    Cordialement.

  3. #3
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2019
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2019
    Messages : 245
    Par défaut
    Citation Envoyé par EricDgn Voir le message
    Bonjour,

    Vous avez sans doute trouvé la solution depuis, mais voici toujours une suggestion:
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Option Explicit
     
    Sub MontreListIcone()
        Dim IconRow As Long, LastIconRow As Long
        Dim ShapeArr() As String
        Dim ShapeGrp As Variant
        LastIconRow = Admin.Range("BE39").End(xlUp).Row
        If LastIconRow < 10 Then Exit Sub
        iconnumb = 1
        With Form_Cours
            On Error Resume Next
            .Shapes("IconMenuGrp").Delete
            On Error GoTo 0
            For IconRow = 10 To LastIconRow
                .Shapes("IconMenuSample").Duplicate.Name = "IconMenu" & iconnumb
                With .Shapes("IconMenu" & iconnumb)
                    .TextFrame2.TextRange.Text = "     " & Admin.Range("BD" & IconRow).Value
                    If iconnumb <> 1 Then
                        .Letf = Form_Cours.Shapes("IconMenu" & iconnumb - 1).Left
                        .Top = Form_Cours.Shapes("IconMenu" & iconnumb - 1).Top + Form_Cours.Shapes("IconMenu" & iconnumb - 1).Height
                    End If
                End With
                ShapeGrp = ShapeGrp & "IconMenu" & iconnumb & ","
                FilePath = [AppFolder] & "\ClassIcons\" & Admin.Range("BE" & IconRow).Value
                If Dir(FilePath, vbDirectory) = "" Then GoTo skipIcon
                With .Shapes("IconItem" & iconnumb)
                    .LockAspectRatio = msoCTrue
                    .Height = 12
                    .Left = Form_Cours.Shapes("IconMenu" & iconnumb).Left + 2
                    .Top = Form_Cours.Shapes("IconMenu" & iconnumb).Top + 2
                    .Visible = msoCTrue
                End With
                ShapeGrp = ShapeGrp & "IconItem" & iconnumb & ","
    skipIcon:
                iconnumb = iconnumb + 1
                ShapeGrp = Left(ShapeGrp, Len(ShapeGrp) - 1)
                ShapeArr = Split(ShapeGrp, ",")
            Next IconRow
            If iconnumb = 1 Then
                MsgBox "Annulé. L'lObjet plageformes doit contenir au moins deux éléments", , "Anomalie"
            Else
                With .Shapes.Range(ShapeArr).Group
                    .Name = "IconMenuGrp"
                    .Left = Form_Cours.Range("M21").Left
                    .Top = Form_Cours.Range("M21").Top
                    .OnAction = "Class_SelectIcon"
                End With
            End If
        End With
    End Sub
    Cordialement.
    Bonjour
    Votre suggestion marche aussi. Merci beaucoup.

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

Discussions similaires

  1. Doit avoir au moins deux parties de classe
    Par Gluups dans le forum C#
    Réponses: 2
    Dernier message: 04/04/2023, 15h01
  2. Réponses: 4
    Dernier message: 25/06/2013, 11h53
  3. [Excel] Erreur 1004 avec un search
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/12/2005, 13h54
  4. Insérer une image : Erreur 1004
    Par dp_favresa dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 26/10/2005, 14h01
  5. Que doit contenir un dossier de programmation ?
    Par b30ff dans le forum Débats sur le développement - Le Best Of
    Réponses: 11
    Dernier message: 26/06/2004, 19h09

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