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 :

Me.Controls.Remove "nomdutruc" & variable // Ca ne fonctionne pas ! [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Agent Administratif
    Inscrit en
    Mars 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Agent Administratif
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Me.Controls.Remove "nomdutruc" & variable // Ca ne fonctionne pas !
    Bonjour à tous

    question rapide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Controls.Remove "MonLabel" & resultat
    MonLabel c'est le bon nom
    resultat c'est le bon nom de variable

    au final le nom du label c'est MonLabel2 à MonLabel7, (testé via chkbox)
    La ligne ne fonctionne pas et me dis "argument non valide"
    Erreur d'execution '-2147024809 (80070057)'

    Quand je fais quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    i=2
    Do while i <= 7
    Me.Controls.Remove "MonLabel" 
    ....
    Cela fonctionne, si j'enlève les numéro, tous les label s'appellent "MonLabel" et tous sont supprimé.

    J'aimerais faire fonctionner ma ligne avec les "MonLabel2" 3, 4 .... pour pouvoir ensuite adapter ma macro de façon à ce que je puisse supprimer le label que je veux.

    Merci D'avance

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Agent Administratif
    Inscrit en
    Mars 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Agent Administratif
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 11
    Points : 7
    Points
    7
    Par défaut cest bon
    Désolé de la perte de temps c'est bon j'ai trouvé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub SupprList_Click()
            Dim resultat As Single
            resultat = InputBox("File moi un num entre 2 et 7", "Titre")
            Me.Controls.Remove "MonLabel" & resultat
    End Sub
    J'avais oublié le
    Je l'ai pas vraiment oublié, je me suis dis que ça marcherait quand même

    Merci quand même à tous et bonne fin d'aprem

  3. #3
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 084
    Points : 9 872
    Points
    9 872
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    les Label sont crées comment ?

    Si c'est lors de la conception du userform, la methode remove ne fonctionne pas.

    Il nous faut + de détails :

    - comment sont crées les labels
    - pourquoi les supprimer
    - quelle(s) condition(s) pour qu'ils soient "à supprimer"
    - c'est une vraie suppression, ou alors ne plus les voir sur le userform


    EDIT : mon message ne sert plus à rien ... si ce n'est à te donner les bases pour que le forum puisse t'aider correctement ...

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Agent Administratif
    Inscrit en
    Mars 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Agent Administratif
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Merci
    Bonjour Joe

    Merci pour ta réponse,

    Je pensais avoir donné assez d'informations, je me suis trompé.
    Merci pour ton aide je ne referais pas la même erreur la prochaine fois, du moins j'essayerais.
    Je me suis également dis "Je ne vais pas trop en mettre pour pas poluer", ça partait d'une bonne intention ^^

    Voila comment je crée les label,

    C'est le module de classe :

    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
    Sub OperationLabel(numero)
    b = Sheets("data").Range("A" & numero).Value
            Set Testlabel = UserForm2.Controls.Add("Forms.label.1")
     
            With Testlabel
                .Name = "MonLabel" & numero
                .Caption = b
                .left = 45
                .top = 70 + (24 * numero)
                .Width = 250
                .Height = 22
                .BorderStyle = 1
            End With
    End Sub
     
    Sub OperationSuppr(numero)
    Set Suppr = UserForm2.Controls.Add("Forms.CommandButton.1")
           With Suppr
                .Name = "MonSuppr" & a
                .Object.Caption = "SUPPRIMER"
                .left = 315
                .top = 70 + (24 * a)
                .Width = 50
                .Height = 22
          End With
    End Sub

    Et là c'est le "module" du userform :

    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
    Public a As Integer
    Public Derligne As Integer
     
    Sub CreaListe2_Click()
    Sheets("data").Activate
    Derligne = ActiveSheet.Cells(65536, 1).End(xlUp).Row
    Derligne = Derligne
     
    Dim b As String
    Dim LabelTest As New ClasseLabel
    Dim SupprTest As New ClasseLabel
    For a = 2 To 7
    LabelTest.OperationLabel (a)
    SupprTest.OperationSuppr (a)
    Next a
    End Sub
     
    Private Sub SupprList_Click()
            Dim resultat As Single
            resultat = InputBox("un num entre 2 et 7 ", "Titre")
            Me.Controls.Remove "MonLabel" & resultat
    End Sub

    Ce qui me gène avec le Private Sub SupprList_Click()
    c'est que je doit désigner via le inputbox quel label je doit supprimé
    Les boutons MonSuppr que je crée, un pour chaque label, positionné côte à côte (quand le .top et .left fonctionnent), j'aimerais pouvoir leur cliquer dessus pour que ça supprime les labels et eux même.
    Par exemple concret :
    MonLabel2 (un peu d'espace) Bouton MonSuppr2
    MonLabel3 (un peu d'espace) Bouton MonSuppr3
    MonLabel4 (un peu d'espace) Bouton MonSuppr4
    MonLabel5 (un peu d'espace) Bouton MonSuppr5

    Hop je clique sur le bouton MonSuppr4 et là mon userform devient en affichage :
    MonLabel2 (un peu d'espace) Bouton MonSuppr2
    MonLabel3 (un peu d'espace) Bouton MonSuppr3
    MonLabel5 (un peu d'espace) Bouton MonSuppr5

    Comme ça l'utilisateur peut gérer lui même quel label il veut garder ou non, à terme, la suppression du label entrainera la suppression d'une cellule dans une feuille, puis une autre macro prendra le relais, elle regardera ce qui reste comme cellule et fera son job

    Merci encore

    Julien !

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Agent Administratif
    Inscrit en
    Mars 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Agent Administratif
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Presque
    Salut à tous !

    J'ai presque réussi à terminer mon code, il me manque plus que la dernière ligne droite.

    Voici ce que j'ai actuellement dans mon module de classe :

    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
    Public WithEvents TestLabel As msforms.label
    
    Sub TestLabel_click()
    UserForm2.Controls.Remove ("forms.label.1")
    End Sub
    
    
    Sub OperationLabel(numero)
    b = Sheets("data").Range("A" & numero).Value
            Set TestLabel = UserForm2.Controls.Add("Forms.Label.1")
    
            With TestLabel
                .Name = "MonLabel" & numero
                .Caption = b
                .left = 45
                .top = 70 + (24 * numero)
                .Width = 250
                .Height = 22
                .BorderStyle = 1
            End With
    End Sub
    Et voici ce que j'ai dans mon module standard :
    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
    Dim a As Integer
    Dim Derligne As Integer
    Dim b As Integer
    Dim LabelCollect As Collection
    Dim Labeltest As label
    
    
    Sub CreaListe2_Click()
    b = 1
    Set LabelCollect = New Collection
    Sheets("data").Activate
    Derligne = ActiveSheet.Cells(65536, 1).End(xlUp).Row
    For a = 2 To 7
    LabelCollect.Add New ClasseLabel
    Set LabelCollect(b).TestLabel = Labeltest
    LabelCollect(b).OperationLabel (a)
    b = b + 1
    Next a
    End Sub
    Le dernier développement que je n'arrive pas à faire concerne la ligne rouge.
    Quand je mets une msgbox à la place de cette ligne j'ai bien un message qui s'affiche quand je clique sur mon label.
    Quand je mets quelque chose pour remove le label quand je lui clique dessus j'ai des erreurs. J'ai fais plein de test en espérant ne pas obtenir d'erreur, mais j'en ai encore plus, toutes différentes les une par rapport aux autres.
    J'ai surement un prob de syntaxe, mais je suis pas assez fort pour comprendre, pareille pour la POO, j'ai développé le code en suivant des tutos et des exemple, mais je ne le comprends pas entièrement.

    SVP aidez moi pour cette ligne en rouge, après je marque le topic comme résolue ^^
    ps : j'ai mis en vert la ligne de mon code que j'ai du mal à comprendre, si quelqu'un se sent partant pour m'expliquer ce que le code "pense" à ce moment là.

    Merci d'avance

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Agent Administratif
    Inscrit en
    Mars 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Agent Administratif
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Victory for the devs
    C'est bon j'ai finis par faire fonctionner la ligne rouge du post juste au dessus.
    J'ai remplacé ma macro Testlabel_click par cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub TestLabel_click()
    Dim nom As String
    nom = TestLabel.Name
    UserForm2.Controls.Remove nom
    End Sub
    par ailleurs je ne comprends toujours pas cette ligne de mon module standard :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set LabelCollect(b).TestLabel = Labeltest
    C'est la ligne 15 du post au dessus (la ligne verte)
    Si quelqu'un peut me l'expliquer c'est génial mais je ferme d'ores et déja ce topic.

    Juste en dessous le code complet, ce qui fourni un exemple de création de label par macro, puis de suppressions de ces label par un simple clique sur eux :

    Module de classe :
    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
    Public WithEvents TestLabel As msforms.label
     
    Sub TestLabel_click()
    Dim nom As String
    nom = TestLabel.Name
    UserForm2.Controls.Remove nom
    End Sub
     
     
    Sub OperationLabel(numero)
    b = Sheets("data").Range("A" & numero).Value
            Set TestLabel = UserForm2.Controls.Add("Forms.Label.1")
     
            With TestLabel
                .Name = "MonLabel" & numero
                .Caption = b
                .left = 45
                .top = 70 + (24 * numero)
                .Width = 250
                .Height = 22
                .BorderStyle = 1
            End With
    End Sub

    Module standard :

    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
    Dim a As Integer
    Dim Derligne As Integer
    Dim b As Integer
    Dim LabelCollect As Collection
    Dim Labeltest As label
     
     
    Sub CreaListe2_Click()
    b = 1
    Set LabelCollect = New Collection
    Sheets("data").Activate
    Derligne = ActiveSheet.Cells(65536, 1).End(xlUp).Row
    For a = 2 To 7
    LabelCollect.Add New ClasseLabel
    Set LabelCollect(b).TestLabel = Labeltest
    LabelCollect(b).OperationLabel (a)
    b = b + 1
    Next a
    End Sub

    Merci encore à tous et bonne journée

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/06/2013, 16h37
  2. Variable environnement (ne fonctionne pas)
    Par drumspirit dans le forum Windows 7
    Réponses: 4
    Dernier message: 13/03/2012, 07h31
  3. [VBA-E] Variable qui ne fonctionne pas systématiquement
    Par spileo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/02/2007, 08h50

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