Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 17 sur 17
  1. #1
    Candidat au titre de Membre du Club
    Inscrit en
    décembre 2005
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : décembre 2005
    Messages : 160
    Points : 13
    Points
    13

    Par défaut [VBA-E] executer code d'un userform depuis un autre

    salut a vous
    voila , j'ai dans mon userform1 ,un CommandButton qui m'ouvre un userform_mdp me demandant un MDP pour confirmer mon choix.

    j'aimerais que si le mdp est correct continué l'action ans le userfome1 mais ca marche pas : coment faire ?

    j'ai essayer ca :


    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub CommandButton1_Click()
    If TextBox1 = "ok" Then
    'confirm.UserForm1 pour lancer l'action confirm du userform1
    mdp.Hide
    Else
    MsgBox "Mot de passe faux"
    TextBox1 = ""
    End If
    End Sub
    voila sinon comment avoir automatiquement le curseur dans le textbox1 pour ecrire un nouveau mdp si erreur , car ca efface bien le mdp faux mais n'active pas le listbox ,

    merci a tous

  2. #2
    Responsable Visual Basic

    Avatar de bbil
    Profil pro
    Inscrit en
    juin 2003
    Messages
    12 907
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Ariège (Midi Pyrénées)

    Informations forums :
    Inscription : juin 2003
    Messages : 12 907
    Points : 21 902
    Points
    21 902

    Par défaut

    pas trés clair sur tes intentions...

    de quel listbox parle tu ...?

    pour rendre le focus à un text box tu as :


    sinon depuis ta fenêtre mot de passe tu peu activer des contrôle de ta premiére fenêtre...

    Code :
    1
    2
    3
    4
    5
    6
    7
    Private Sub CommandButton1_Click()
     If TextBox1 = "MonMotDepase" Then
        UserForm1.TextBox2.Enabled = True
      Else
     MsgBox "Mot de passe inccorect.."
      End If
    End Sub
    bon c'est un peu rudimentaire ... mais ... cela dépend de la sécurité .. désiré pour ton mot depasse..

  3. #3
    Candidat au titre de Membre du Club
    Inscrit en
    décembre 2005
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : décembre 2005
    Messages : 160
    Points : 13
    Points
    13

    Par défaut

    salut
    merci a toi, pour setfocus , c'est ok par contre pour le reste je m'explique:

    j'ai un userform "travaux" dans lequel j'effectue des modifications qui sont valider par un bouton "valid" : cette action se fait en 2 parties du moment ou je clique sur ce bouton :

    1- ouverture d un userform "mdp"pour demande de mot de passe.
    2- si mot de passe ok : fermeture de ce userform "mdp" et execution de la commande "modif" du userform "travaux"

    le probleme est dans la 2eme partie , quand le mdp est bon , je n'arrive pas a faire executer la commande : "Private Sub confirm()" du userform "travaux " qui elle effectue les modif demandé

    merci a toi

  4. #4
    Responsable Visual Basic

    Avatar de bbil
    Profil pro
    Inscrit en
    juin 2003
    Messages
    12 907
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Ariège (Midi Pyrénées)

    Informations forums :
    Inscription : juin 2003
    Messages : 12 907
    Points : 21 902
    Points
    21 902

    Par défaut

    si tu ve pouvoir appeller la procédure Confirm ... d'un autre UserForm... enléve le Private..

  5. #5
    Candidat au titre de Membre du Club
    Inscrit en
    décembre 2005
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : décembre 2005
    Messages : 160
    Points : 13
    Points
    13

    Par défaut

    Citation Envoyé par bbil
    si tu ve pouvoir appeller la procédure Confirm ... d'un autre UserForm... enléve le Private..
    ok mais il y a qqchose qui plante , donc voici le code du userform MDP
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub CommandButton1_Click()
    If TextBox1 = "ok" Then
    UserForm1.confirm.Enabled = True
    mdp.Hide
    Else
    MsgBox "Mot de passe faux"
    TextBox1 = ""
    TextBox1.SetFocus
    End If
    End Sub
    et celui du userform TRAVAUX
    Code :
    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
     
    Private Sub UserForm_Initialize()
    iniListBox1
    End Sub
    -----------------------------------
    Private Sub valider_Click() ' bouton valider
    mdp.Show
    End Sub
    ---------------------------------
    Sub confirm() ' fonction que j'aimerais lancer si mdp ok
    If OptionButton1.Value = True Then
    Sheets("v43").Range("b2") = "0"
    Else
    If OptionButton2.Value = True Then
    Sheets("v43").Range("b2") = "50"
    Else
    If OptionButton3.Value = True Then
    Sheets("v43").Range("b2") = "100"
    End If
    End If
    End If
    Label2ini
    End Sub
    ---------------------------------------------------------
     
     
    voila , il y a surement plus simple a faire mais je suis novice en VBA
     
    merci a toi

  6. #6
    Responsable Visual Basic

    Avatar de bbil
    Profil pro
    Inscrit en
    juin 2003
    Messages
    12 907
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Ariège (Midi Pyrénées)

    Informations forums :
    Inscription : juin 2003
    Messages : 12 907
    Points : 21 902
    Points
    21 902

    Par défaut

    enléve ... dans mon exemple cela servait à activer un bouton sur ta form... ( préalablement désactiver par : .Enabled = false)

  7. #7
    Candidat au titre de Membre du Club
    Inscrit en
    décembre 2005
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : décembre 2005
    Messages : 160
    Points : 13
    Points
    13

    Par défaut

    ok
    merci a toi ca marche

  8. #8
    Candidat au titre de Membre du Club
    Inscrit en
    décembre 2005
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : décembre 2005
    Messages : 160
    Points : 13
    Points
    13

    Par défaut

    oups je suis alle trop vite
    en fait le tri fonctionne tres bien , par contre qd je selectionne un travail ( qq soit le filtre) il affiche 0% dans les bouton options ( sauf qd je selectionne afficher tout, la les valeur sont bonnes)

    en plus si j'essaie de modifier une valeur, ca ne le fait pas sur la bonne , j'avais travail 6 en 50% si je le passe en termine , c'est le 3 qui change ( travail 6 etait en 3eme position dans le listbox en mode 50%: peut etre un rapport !!!)

  9. #9
    Responsable Visual Basic

    Avatar de bbil
    Profil pro
    Inscrit en
    juin 2003
    Messages
    12 907
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Ariège (Midi Pyrénées)

    Informations forums :
    Inscription : juin 2003
    Messages : 12 907
    Points : 21 902
    Points
    21 902

    Par défaut

    a oui ... je comprends... , pour afficher dans bouton option ... on utilise le numéro de ligne dans listbox.. qui doit correspondre au numéro de ligne dans fichier excel ... , c'est la même chose pour écrire dans fichier excel... ..

    une solution serai de modifier ta la fonction initlistbox... , de rajouter une colonne cachée (largeur=0) dans la listbox ... colonne dans laquelle on stockerai le numéro de ligne correspondant dans feuille excel...

    ensuite lors de la relecture ou de l'écriture ,l'on se sert de la valeur contenu dans cette colonne .. pour déterminer la ligne de la feuille excel.. correspondange...

    bon je vais manger ... dis moi si cette idée te plait et si tu est arrivé à en faire quelque chose...

  10. #10
    Candidat au titre de Membre du Club
    Inscrit en
    décembre 2005
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : décembre 2005
    Messages : 160
    Points : 13
    Points
    13

    Par défaut

    ok , l'idee semble bonne , de toutes facon je ne vois pas comment faire autrement

    Par contre , la c'est pas gagne pour mettre ca en place , surtout vu mes connaissances, mais on va essayer

    merci a toi

  11. #11
    Responsable Visual Basic

    Avatar de bbil
    Profil pro
    Inscrit en
    juin 2003
    Messages
    12 907
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Ariège (Midi Pyrénées)

    Informations forums :
    Inscription : juin 2003
    Messages : 12 907
    Points : 21 902
    Points
    21 902

    Par défaut

    lol j'avais pas vu que le numéro de ligne été déjà dans ta list box
    Code :
      ListBox1.List(ListBox1.ListCount - 1, 1) = a.Row
    ... tu peu donc l'utiliser par exemple :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub ListBox1_Click() 'selection d'une tache
     Dim iAdv As Integer
     Dim iL As Integer 'Ligne en cours dans fichier excel..
     iL = ListBox1.List(, 1)
     
      Label1 = sh.Cells(iL, 1) 'Recupére travail sélectionné
      iAdv = sh.Cells(iL, 2) 'Recupére avancement
      Select Case iAdv
    ...

  12. #12
    Candidat au titre de Membre du Club
    Inscrit en
    décembre 2005
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : décembre 2005
    Messages : 160
    Points : 13
    Points
    13

    Par défaut

    bon , c'est un essai non concluant
    voici ce que j'ai fait :
    http://lazouille83.free.fr/divers/travaux.xls

    j'ai du oublie qqchose, ou une erreur dans mon code listbox , car je ne vois pas ce que tu entend par:
    lol j'avais pas vu que le numéro de ligne été déjà dans ta list box
    Code:
    ListBox1.List(ListBox1.ListCount - 1, 1) = a.Row
    sinon , pour ton aide sur le dernier post ( comment adapter code pour les different onglet du multi page), dois-je modifie le nom des boutonet autre :

    Public sh As Worksheet

    tu remplace dans l'userform tous les Sheets("v43") par sh...
    et avant l'ouverture de l'userform tu affecte la bonne feuille à la variable

    Code:

    set Userform1.sh = Sheets("v43")
    Userform1.show
    merci a toi

  13. #13
    Responsable Visual Basic

    Avatar de bbil
    Profil pro
    Inscrit en
    juin 2003
    Messages
    12 907
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Ariège (Midi Pyrénées)

    Informations forums :
    Inscription : juin 2003
    Messages : 12 907
    Points : 21 902
    Points
    21 902

    Par défaut

    Citation Envoyé par zouille
    bon , c'est un essai non concluant
    voici ce que j'ai fait :
    http://lazouille83.free.fr/divers/travaux.xls

    j'ai du oublie qqchose, ou une erreur dans mon code listbox , car je ne vois pas ce que tu entend par:
    lol j'avais pas vu que le numéro de ligne été déjà dans ta list box
    Code:
    ListBox1.List(ListBox1.ListCount - 1, 1) = a.Row
    ben la ligne cité est déjà dans ta procédure inilistbox1.... donc le numéro de ligne est déja en deuxiéme colonne ... il te suffit de l'utiliser comme
    comme dans l'exemple que je t'ai donné...
    Code :
    1
    2
    3
    Dim iL As Integer 'Ligne en cours dans fichier excel..
     iL = ListBox1.List(, 1)
    ...



    Citation Envoyé par zouille
    sinon , pour ton aide sur le dernier post ( comment adapter code pour les different onglet du multi page), dois-je modifie le nom des boutonet autre :
    Public sh As Worksheet

    tu remplace dans l'userform tous les Sheets("v43") par sh...
    et avant l'ouverture de l'userform tu affecte la bonne feuille à la variable

    Code:

    set Userform1.sh = Sheets("v43")
    Userform1.show
    merci a toi
    oui relis le post... tu "vide" tous les onglets (expté le v43..)... tu déplace tous les contrôles du V43 hors de la page, pour qu'ils soit visible quelque soit l'ongle sélectionné ...
    puis utilise la procédure Page_Change.. que je t'ai transmisse dans ce post pour affecter la bonne feuille excel à la variable Sh...

    http://www.developpez.net/forums/vie...81073&start=15
    [/url]


  14. #14
    Candidat au titre de Membre du Club
    Inscrit en
    décembre 2005
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : décembre 2005
    Messages : 160
    Points : 13
    Points
    13

    Par défaut

    bon , pour le multipage c'est bon , ca fonctionne
    j'ai remarque que les objet en dehors des frame ne s'affiche pas qd je les met en dessous du multipage ( bouton et barre de progression) : C'est normale ???

    Par contre toujours 2 problemes
    1- qd un filtre est active , il y a toujours ce probleme de ligne , la modif ne se fait pas sur le travail selectionne ( sinon ok qd tout affiché)

    2-la barre de progression ne fonctionne pas bien, pourtant j'ai modifié sheet("v43") par sh. il y a bien evolution de cette barre qd je fait un changement mais pas qd je change d'onglet


    merci a toi

  15. #15
    Responsable Visual Basic

    Avatar de bbil
    Profil pro
    Inscrit en
    juin 2003
    Messages
    12 907
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Ariège (Midi Pyrénées)

    Informations forums :
    Inscription : juin 2003
    Messages : 12 907
    Points : 21 902
    Points
    21 902

    Par défaut

    Citation Envoyé par zouille
    bon , pour le multipage c'est bon , ca fonctionne
    j'ai remarque que les objet en dehors des frame ne s'affiche pas qd je les met en dessous du multipage ( bouton et barre de progression) : C'est normale ???

    Par contre toujours 2 problemes
    1- qd un filtre est active , il y a toujours ce probleme de ligne , la modif ne se fait pas sur le travail selectionne ( sinon ok qd tout affiché)

    2-la barre de progression ne fonctionne pas bien, pourtant j'ai modifié sheet("v43") par sh. il y a bien evolution de cette barre qd je fait un changement mais pas qd je change d'onglet


    merci a toi
    1 - tu as bien modifié toutes les lignes ou tu utilisé ListBox1.ListIndex ... pour connaitre .. le numéro de ligne dans fichier excel? par exemple majAdv...
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub MajAdv() 'modification des options avancement
      If ListBox1.ListIndex >= 0 Then
        Dim iL As Integer 'Ligne en cours dans fichier excel..
       iL = ListBox1.List(, 1)
        If Opt0 Then sh.Cells(iL, 2) = 0
        'If Opt25 Then sh.Range("A2").Offset(ListBox1.ListIndex, 1) = 25
        If Opt50 Then sh.Cells(iL, 2) = 50
        'If Opt75 Then sh.Range("A2").Offset(ListBox1.ListIndex, 1) = 75
        If Opt100 Then sh.Cells(iL, 2) = 100
        majbarre
        Label2ini
      End If
    End Sub




    2.il faut que dans change page tu appelle la majbarre...

  16. #16
    Candidat au titre de Membre du Club
    Inscrit en
    décembre 2005
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : décembre 2005
    Messages : 160
    Points : 13
    Points
    13

    Par défaut

    ok
    merci a toi
    j'avais fait une erreur dans une ligne, ca marche super bien

    Par contre , est il possible de faire en sorte que des bouton porte le nom du text dans une cellule car :
    dans un autre userform j'ai 100 bouton , et j'aimerais que chaque bouton est le nom de A1 a A100 avec une couleur en fonction du %age ( colonne B) ( 0--> rouge - 50 --> jaune - 100 --> vert)

    et qd je clique dessus, ca m'ouvre une description ( qui est dans collone C) dans un msgbox

    j'ai reussi , plus ou moins pour un bouton , mais c'est pour faire la variablefonction du bouton qui me pose probleme

    merci a toi :
    ps : j'ai poster un sujet sur ce prob

  17. #17
    Candidat au titre de Membre du Club
    Inscrit en
    décembre 2005
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : décembre 2005
    Messages : 160
    Points : 13
    Points
    13

    Par défaut

    donc voila , j'ai essayer ca pour les couleur
    Code :
    1
    2
    3
    4
     
    If Sheets("bord").Range("b2") = 0 Then CommandButton1.BackColor = &HFF&
    If Sheets("bord").Range("b2") = 50 Then CommandButton1.BackColor = &HFFFF&
    If Sheets("bord").Range("b2") = 100 Then CommandButton1.BackColor = &HC000&
    et ca pour les msgbox
    Code :
    1
    2
     
    MsgBox (Sheets("bord").Range("c2"))
    mais comment automatise ca pour les 100 boutons ?
    et comment donne le nom des bouton fonction du nom dans la colonne A

    merci

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •