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 :

[VBA-E] modifier une userform [Trucs & Astuces]


Sujet :

Macros et VBA Excel

  1. #21
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Cette ligne crée "Userform1", qui, à mon avis, existe déjà.
    (C'est bien ce que tu voulais dire, Ousk?)
    Donc, supprime rageusement cette ligne qui n'a rien à faire ici, et tout ira mieux.

  2. #22
    Membre éprouvé Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Par défaut
    meric pour l'info
    mais hélas je n'arrive toujours pas à faire tourner la macro

  3. #23
    Membre éprouvé Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Par défaut
    oui c'est le code de silky en fait que j'ai essayé, et qui me donne le message d'erreur en question

  4. #24
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Et tu as bien enlevé la ligne qu' Ouskel'n'or t'a indiquée?

  5. #25
    Membre éprouvé Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Par défaut
    ok, le code de silky remarche (comprend pas pourquoi il a pas marché pendant une demiheure, g redémarré excel et ça marche a nouveau)
    quant à mes changements pour ajouter plusieurs checkbox à partir d'une boucle, ça ne marche toujours pas.. (g bien enlevé la ligne en question)

  6. #26
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Est-ce que tu veux nous remettre ton code actuel, et le descriptif de l'erreur, et la ligne mise en cause?

  7. #27
    Membre éprouvé Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Par défaut
    voici les deux codes, celui de silky et le mien, le premier marche, le mien pas, bouhouhouuuuu

    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 truc()
     
    Dim Usf As VBComponent
    Dim Obj As MSForms.CheckBox
     
    Set Usf = ThisWorkbook.VBProject.VBComponents("UserForm1")
    Set Obj = Usf.Designer.Controls.Add("forms.CheckBox.1")
     
    With Obj
    .Left = 30: .Top = 40: .Width = 60: .Height = 20
    End With
     
    VBA.UserForms.Add (Usf.Name)
    UserForms(0).Show
     
    End Sub
    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
     
    Sub chose()
     
    Dim Usf As VBComponent
    Dim Obj() As MSForms.CheckBox
     
    NbPers = 9
     
    ReDim Obj(NbPers)
     
    Set Usf = ThisWorkbook.VBProject.VBComponents("UserForm1")
     
    For i = 1 To NbPers
       Set Obj(i) = Usf.Designer.Controls.Add("forms.CheckBox.1")
       With Obj(i)
       .Left = 30: .Top = 40 + 20 * i: .Width = 60: .Height = 20
       End With
     
    Next
     
    UserForm1.Show
     
    End Sub

  8. #28
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Et l'erreur, c'est toujours celle du début, avec i = 1, sur la ligne Set obj(i)... ?

  9. #29
    Membre éprouvé Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Par défaut
    oui, c'est toujours pour i=1
    Je me demande si c'est pas une histoire d'appellation de userform
    Vu que ma userform1 existe déjà, puis-je supprimer la ligne "set usf..." et directement faire un truc genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Obj(i) = userform1.Controls.Add("forms.CheckBox.1")
    haaa
    j'avais essayé, ça marchait pas et là ça a l'air de marcher
    je vérifie si ça marche bien, puis je vous dis ça[/code]

  10. #30
    Membre éprouvé Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Par défaut
    mais suis-je donc un âne, du coup, la userform1 n'est mise en forme que pour le temps de l'exécution de la macro et redevient vierge ensuite pfff

  11. #31
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Ha ben là, tu reviens à la question que j'ai posée à Silky quand il a donné son code: est-ce qu'il ne faut pas enregistrer le fichier Excel?

  12. #32
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Et cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VBA.UserForms.Add (Usf.Name)
    Tu ne l'as mets pas ? Pourtant, à moi, elle me paraissait utile... après la boucle... Mais bah !


    En outre, pour une question de nettoyage, je mettrais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       Set Obj(i) = Usf.Designer.Controls.Add("forms.CheckBox.1") 
       With Obj(i) 
       .Left = 30: .Top = 40 + 20 * i: .Width = 60: .Height = 20 
       End With 
       Set Obj(i) = Nothing
    sinon je me demanderais toujours de que sont devenus mes Obj(i) une fois la procédure terminée
    Mais j'en sais rien... Je n'ai rien testé et je parle peut-être dans le vide...


    NB - Si ta form existe sur ton fichier, prends-en un tout neuf parce que si ta form existe déjà et que "par hasard" elle s'appelle déjà userform1, tu vas avoir une erreur... T'as une erreur ?

  13. #33
    Membre éprouvé Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Par défaut
    ben disons qu'en exécutant le code de silky, après l'exécution de la macro, on regarde la userform et les modif apparaissent
    en enlevant la ligne "set usf...", mon code marche mais, après l'exécution de la macro, les modifs n'apparaissent pas (elles apparaissent seulement pendant l'exécution de la macro sur "userform1.show")

  14. #34
    Expert confirmé

    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
    Par défaut
    bonjour à tous

    tu peux tester cette adaptation

    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
    Dim NbPers As Byte, i As Byte
    Dim Usf As VBComponent
    Dim Obj As MSForms.CheckBox
     
    NbPers = 9
     
    Set Usf = ThisWorkbook.VBProject.VBComponents("UserForm1")
     
    For i = 1 To NbPers
       Set Obj = Usf.Designer.Controls.Add("forms.CheckBox.1")
       With Obj
       .Left = 30: .Top = 40 + 20 * i: .Width = 60: .Height = 20
       End With
    Next
     
    VBA.UserForms.Add (Usf.Name)
    UserForms(0).Show


    cher Megaxel , je ne comprend pas ta remarque sur l'enregistrement du classeur



    bone soiree
    michel

  15. #35
    Membre éprouvé Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Par défaut
    je venais d'arriver à un résultat similaire qui marchait bien. Je me creusait les méninges pour savoir comment réinitialiser la userform ensuite (j'arrive pas à supprimer les checkbox)
    ma demande peut paraitre contradictoire vu que je voulais justement les garder, ces checkbox. Disons que la userform va rester la même 9 fois sur 10, mais de temps en temps peut être amenée à être modifiée, et donc il faudrait supprimer ces checkbox. Tu me suis ? merci pour ton aide

    Rhaah je touche au but, mais pas encore !

  16. #36
    Membre éprouvé Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Par défaut
    yahoooo
    quand on en a besoin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set Usf = ThisWorkbook.VBProject.VBComponents("UserForm1")
    Usf.Designer.Clear
    et hop !

    je continue puis je vous montre quand ça ressemble un peu à qqch

    Merci ouskel'n'or, mais ça me plaisait pas trop de juste les rendre invisible, ptêt elles seraient restées des années cachées comme ça, ces pauvres checkbox !

    Vincent (de passage à l'ileverte ya 2 jours)

  17. #37
    Membre éprouvé Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Par défaut
    bonjour,

    bon, ce cri de joie d'hier n'a été qu'une fausse joie.
    Ces deux lignes du pour effacer les contrôles de la userform1 marchent, en test, mais quand on lance la macro à partir d'un bouton de la feuille ça ne marche pas ??
    comprend pas...
    voici le début de mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub CommandButton1_Click()
     
    Dim usf As VBComponent
     
    Set usf = ThisWorkbook.VBProject.VBComponents("UserForm1")
    usf.Designer.Clear
    la userform1 existe pourtant...

  18. #38
    Membre éprouvé Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Par défaut
    je me perds dans l'aide de vba, mais je pense que ça a quelquechose à voir avec le concept de fenêtre de conception auquel je ne comprend pas gd chose...

  19. #39
    Membre éprouvé Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Par défaut
    bon je me suis lancé sur un fichier plus simple
    j'ai un commandbutton sur ma feuille 1 et c'est tout
    Cette macro marche une fois sur deux. Pourquoi ???

    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
    Private Sub CommandButton1_Click()
     
    Dim bidule As VBComponent
     
    Set bidule = ThisWorkbook.VBProject.VBComponents("UserForm1")
     
    bidule.DesignerWindow.Close
     
    bidule.Designer.Clear
    Set prout = bidule.Designer.Controls.Add("forms.label.1")
    With prout
        .Left = 20
        .Top = 10
        .Width = 130
        .Height = 20
        .Caption = "boum"
    End With
     
    VBA.UserForms.Add (bidule.Name)
    Call apparition
     
    End Sub
    Sub apparition()
     
    UserForm1.Show
     
    End Sub

  20. #40
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub SupprimerUnModules()
            NomModule = "MaFormAmoi"
            NomFichier = "Classeur1"
            With Workbooks(NomFichier)
                .VBComponents.Remove .VBComponents(NomModule)
            End with
     End Sub
    A+

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. [VBA-W] Atteindre une userform par un object
    Par tazamorte dans le forum VBA Word
    Réponses: 6
    Dernier message: 05/04/2007, 17h16
  2. [VBA-E] modifier une zone d'impression
    Par LeXo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/02/2007, 22h53
  3. VBA Excel, modifier une lettre type dans word
    Par morgan47 dans le forum VBA Word
    Réponses: 2
    Dernier message: 26/06/2006, 21h02
  4. [VBA E] Bloquer une USERFORM en consultation
    Par vanessaferraz dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/06/2006, 12h16
  5. [VBA-E] Dupliquer une userform
    Par cwain dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/04/2006, 12h11

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