Précédent   Forum du club des développeurs et IT Pro > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 01/04/2006, 14h56   #1
zouille
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 146
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 146
Points : 12
Points : 12
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
zouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 15h14   #2
bbil
Responsable Visual Basic

 
Avatar de bbil
 
Inscription : juin 2003
Messages : 12 349
Détails du profil
Informations personnelles :
Âge : 46
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 12 349
Points : 22 851
Points : 22 851
Envoyer un message via Skype™ à bbil
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..
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 15h27   #3
zouille
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 146
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 146
Points : 12
Points : 12
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
zouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 15h36   #4
bbil
Responsable Visual Basic

 
Avatar de bbil
 
Inscription : juin 2003
Messages : 12 349
Détails du profil
Informations personnelles :
Âge : 46
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 12 349
Points : 22 851
Points : 22 851
Envoyer un message via Skype™ à bbil
si tu ve pouvoir appeller la procédure Confirm ... d'un autre UserForm... enléve le Private..
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 15h50   #5
zouille
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 146
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 146
Points : 12
Points : 12
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
zouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 15h57   #6
bbil
Responsable Visual Basic

 
Avatar de bbil
 
Inscription : juin 2003
Messages : 12 349
Détails du profil
Informations personnelles :
Âge : 46
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 12 349
Points : 22 851
Points : 22 851
Envoyer un message via Skype™ à bbil
enléve ... dans mon exemple cela servait à activer un bouton sur ta form... ( préalablement désactiver par : .Enabled = false)
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 16h16   #7
zouille
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 146
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 146
Points : 12
Points : 12
ok
merci a toi ca marche
zouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2006, 12h24   #8
zouille
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 146
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 146
Points : 12
Points : 12
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 !!!)
zouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2006, 12h36   #9
bbil
Responsable Visual Basic

 
Avatar de bbil
 
Inscription : juin 2003
Messages : 12 349
Détails du profil
Informations personnelles :
Âge : 46
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 12 349
Points : 22 851
Points : 22 851
Envoyer un message via Skype™ à bbil
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...
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2006, 13h25   #10
zouille
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 146
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 146
Points : 12
Points : 12
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
zouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2006, 13h47   #11
bbil
Responsable Visual Basic

 
Avatar de bbil
 
Inscription : juin 2003
Messages : 12 349
Détails du profil
Informations personnelles :
Âge : 46
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 12 349
Points : 22 851
Points : 22 851
Envoyer un message via Skype™ à bbil
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
...
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2006, 14h20   #12
zouille
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 146
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 146
Points : 12
Points : 12
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:
Citation:
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 :

Citation:
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
zouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2006, 16h24   #13
bbil
Responsable Visual Basic

 
Avatar de bbil
 
Inscription : juin 2003
Messages : 12 349
Détails du profil
Informations personnelles :
Âge : 46
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 12 349
Points : 22 851
Points : 22 851
Envoyer un message via Skype™ à bbil
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:
Citation:
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 :
Citation:
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]

bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2006, 20h42   #14
zouille
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 146
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 146
Points : 12
Points : 12
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
zouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2006, 21h15   #15
bbil
Responsable Visual Basic

 
Avatar de bbil
 
Inscription : juin 2003
Messages : 12 349
Détails du profil
Informations personnelles :
Âge : 46
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 12 349
Points : 22 851
Points : 22 851
Envoyer un message via Skype™ à bbil
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...
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2006, 18h06   #16
zouille
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 146
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 146
Points : 12
Points : 12
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
zouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2006, 19h35   #17
zouille
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 146
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 146
Points : 12
Points : 12
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
zouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 16h26.


 
 
 
 
Partenaires

Hébergement Web