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 :

insertion ligne dans macro


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
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2010
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 240
    Par défaut insertion ligne dans macro
    Bonjour,

    je cherche à faire en sorte que ma userform soit un peu dynamique.

    à l'aide de la commande suivante,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    j = ActiveWorkbook.VBProject.VBComponents(support.Name).CodeModule.CountOfLines
    ActiveWorkbook.VBProject.VBComponents(support.Name).CodeModule.InsertLines j + 1, "Sub " & .Name & "_click()"
    ActiveWorkbook.VBProject.VBComponents(support.Name).CodeModule.InsertLines j + 2, "support." & .Name & ".caption = support." & .Name & ".caption +1"
    ActiveWorkbook.VBProject.VBComponents(support.Name).CodeModule.InsertLines j + 3, "End Sub"
    je cherche à faire en sorte que quand je click sur un label crée en dynamique cela met met la valeur +1

    en temps normal, ça ne pose pas de souci mais la quand je clique sur le label rien ne se passe.

    et donc, ma question est pourquoi?^^

  2. #2
    Membre expérimenté
    Inscrit en
    Juillet 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 239
    Par défaut
    Bonjour ,

    En gros dans ton code , tu inserres dans tes modules , la procédure suivante :

    Sub .Name_click()
    support.Name.caption = support.Name.caption
    End Sub

    1er point : A mon avis c'est , une procédure .clik qui doit être classée dans les propriétés du control Labelx

    2 : 'support ': Dans le code , c'est du texte , c'est pas un objet

    Pour une construction dynamique d'un label , tu peux essayer une construction de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
          M_label1 = ActiveSheet.OLEObjects.Add(ClassType:="Forms.label.1", Left:= 45, Top:=80, Width:= 150, Height:=40).name
    '( je te laisse ajuster  les dimensions) et ensuite faire :  
    ActiveSheet.OLEObjects (  M_label1 ).caption = " Ma valeur titre"

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2010
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 240
    Par défaut
    salut et merci à toi de passer du temps sur mon probleme.

    la fonction que je veux est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub label1_click()
    Me.label1.Caption = Me.label1.Caption + 1
    End Sub
    la difference avec ce que tu as marqué est le +1

    ce code fonctionne très bien si je l'assigne à un bouton.

    mais quand je cherche à le faire au clique ça ne fonctionne pas

    Sais tu me donner une définition de OLOEobjects?

  4. #4
    Membre expérimenté
    Inscrit en
    Juillet 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 239
    Par défaut
    1) label1_click , désigne un object et dans mon exemple M_label1 correspond ( = du texte , méthode .Name ) la Construction "M_label1" & _click ne sera pas conforme.

    Sur un label , on ne peut pas implémenter une fonction click.
    Ce qu'il faut faire , si tu veux garder l'effet Label Texte , c'est supperposer un bouton derrière le label .

    Sur un bouton , on peut implémenter une fonction click et avec une syntaxe permettant la construction dynamique de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
     M_Bouton1 = ActiveSheet.Buttons.Add(Left:= 40, Top :=  80), Width:=Width_B, Height:=Height_B).name
     
     ActiveSheet.Buttons(M_Bouton1).Text = "       ":      ActiveSheet.Shapes(M_Bouton1).OnAction = "nom_macro"
     
    'Dans les modules , n'a pas besoin de rajouter de ligne, il suffit de placer la procédure
     
    public sub nom_macro
     
    Me.label1.Caption = Me.label1.Caption + 1
     
    end sub

Discussions similaires

  1. [XL-2007] Insertion ligne dans un tableau par rapport à un fichier d'origine
    Par XceSs dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/01/2011, 14h05
  2. Insertion ligne dans datagridview
    Par cath2123 dans le forum VB.NET
    Réponses: 3
    Dernier message: 05/10/2010, 09h39
  3. [WD15] Insertion ligne dans une combo table
    Par thierrybatlle dans le forum WinDev
    Réponses: 1
    Dernier message: 15/09/2010, 11h17
  4. Insertion ligne dans un JXTreeTable
    Par dibelup dans le forum Composants
    Réponses: 1
    Dernier message: 12/05/2009, 11h34
  5. insertion ligne dans un champ text (textarea)
    Par awabi dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/11/2008, 19h16

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