arthur0201
Messages postés55Date d'inscriptionsamedi 19 mars 2005StatutMembreDernière intervention19 octobre 2006
-
30 sept. 2006 à 20:14
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
2 oct. 2006 à 00:38
Bonjour tous le monde,
Voilà ce que j'aimerai faire au travers mon userform déjà créer:
-G un bouton(CommandButton1) qui lorsqu'on renseigne le code du salarié dans ma liste déroulante(ComboBox4 a 2 colonnes, le code est dans la première colonne); je voudrais que s'affiche la feuille excel correspondante au code selectionné.
Par exemple, quand on met dans mon combobox le code s3, la feuille excel s3 doit s'afficher...
-Je voudrais faire la même chose avec le code de différents chantiers, mais la difficultée (je pense ) c que les feuille excel correspondante se trouve dans un autre fichier excel...Est ce possible?(Sinon tant pis je mettrai toute les feuille dans le meme fichier si sa rentre...)
Merci à tous pour votre aide
A voir également:
Visualiser différente résultat d'excel grace à un userform?
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 30 sept. 2006 à 22:57
Si je me fie au fichier que tu m'as envoyé,
Dim Feuille As String
Feuille = ComboBox1.List(ComboBox1.ListIndex, 0) ' soit S1, S2,...
Workbooks("Saisi feuille de temps.xls").Sheets(Feuille).Activate
Et si tu veux pouvoir travailler sur la feuille pendant que le Userform
est visible (en premier plan), celui-ci doit être ouvert en vbModeless,
plutôt que vbModal
arthur0201
Messages postés55Date d'inscriptionsamedi 19 mars 2005StatutMembreDernière intervention19 octobre 2006 30 sept. 2006 à 23:40
Pour les salariés sa marche impec merci!
(petite question:pourquoi vbModeless c quoi la différence?)
-Sinon pour afficher les chantiers qui sont dans l'autre fichier excel(SUIVI CHANTIER.xls), j'ai quand meme essayé ce que tu m'as donné et je 'ai adapté comme celà:
Private Sub CommandButton1_Click()
Sub X()
Dim Classeur As Window, Trouvé As Boolean
For Each Classeur In Windows
If Classeur.Caption = "SUIVI CHANTIER" Then
Trouvé = True
Exit For
End If
Next
If Not Trouvé Then
MsgBox "Il faut ouvrir le classeur «SUIVI CHANTIER.xls» pour poursuivre"
Exit Sub
End If
Dim Feuille As String
Feuille = ComboBox4.List(ComboBox4.ListIndex, 0)
Workbooks("SUIVI CHANTIER").Sheets("Feuille").Activate
End Sub
Mais quand je le lance il me marque : "Erreur de compilation: End Sub attendu"
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 2 oct. 2006 à 00:38
Si tu regardes dans l'aide pour Modeless, tu verras probablement la différence d'avec Modal.
En fait, ouvert en Modal, un Userform empêche toute action sur les
feuilles tant qu'il est ouvert, un peu comme un MsgBox. En modeless, tu
peux travailler sur les feuilles, même si le UserForm est en avant-plan.
arthur0201
Messages postés55Date d'inscriptionsamedi 19 mars 2005StatutMembreDernière intervention19 octobre 2006 30 sept. 2006 à 21:09
En fait MPi devrait m'aider mais il m'a dit qu'il ne s'occuper que des problème de cette section pour l'instant et comme je ne sais pas comment oter l'autre j'ai été forcer de poster 2 fois...faut pas m'en vouloir
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 30 sept. 2006 à 21:33
Je ne sais pas exactement ce que tu cherches à faire, mais tu
devrais t'assurer d'une part que l'autre programme est bien ouvert en
parcourant la liste des programmes déjà ouverts dans Excel. Sinon, tu
envoies un message de l'ouvrir.
Voici comment je procéderais. Il s'agit de renommer le nom du classeur et de la feuille.
Sub X()
Dim Classeur As Window, Trouvé As Boolean
'Lire la liste des classeurs ouverts
For Each Classeur In Windows
If Classeur.Caption = "Classeur2" Then
Trouvé = True
Exit For
End If
Next
'S'il n'a pas été trouvé
If Not Trouvé Then
MsgBox "Il faut ouvrir le classeur «Classeur2.xls» pour poursuivre"
arthur0201
Messages postés55Date d'inscriptionsamedi 19 mars 2005StatutMembreDernière intervention19 octobre 2006 30 sept. 2006 à 22:20
Et pour simplement afficher la feuille excel du salarié concerné(elle sont noté S1,S2,S3,etc... dans le fichier que je vous ai transmis)?
Est ce que c'est la commande workbook(Workbooks("Classeur2").Sheets("Feuil2").Activate)?
Au pire le soucis de l'autre fichier c pas grave , je transfererai l'ensemble de mes feuille excel dans le meme fichier.
Ce que je cherche a faire en fait, c que quand on veut savoir combien de temps à travailler une personne, on le voye d'un seul clique...Idem pour savoir le temps que l'on passe sur un chantier...(et pour ne pas trop compliquer je voulais juste que quand on valide sa affiche la bonne feuille, ensuite on regarde le total en bas du tableau de chaque salariés).
arthur0201
Messages postés55Date d'inscriptionsamedi 19 mars 2005StatutMembreDernière intervention19 octobre 2006 1 oct. 2006 à 09:25
Merci sa marche!
Juste une deux petites questions et j'arrête de vous embéter (c promis!):
-Comment faire quand on ferme l'userform, pour le relancer sans avoir a fermer et ré-ouvrir le fichier excel complet? Existe il une touche magique?
-Sinon, pourquoi mon userforn ne peut pas etre réduit dans la barre de tâches? N'est-il pas possible lorsque je clique sur mes boutons "Afficher" qu'il se mette en arrière plan?
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 1 oct. 2006 à 16:27
Dans ton cas, l'UserForm s'ouvre avec Workbook_Open() donc à l'ouverture du classeur.
Soit tu l'ouvres d'une autre façon, une fois le classeur ouvert,
soit tu peux le cacher pendant l'exécution de la session (UserForm1.Hide) et tu le réaffiches au besoin(UserForm1.Show)
À ce moment, plutôt que de fermer avec le X en haut à droite ou Unload
dans le code, tu peux mettre un bouton sur l'Userform qui lance le Hide
et pour le réafficher, à toi de voir comment tu veux procéder. Ça
pourrait être au changement de feuille (WorkSheet_Activate) ou un
popupmenu (click droit sur une cellule) ou un bouton sur chaque
feuille...
Sache toutefois que l'événement Initialize du UserForm ne sera exécuté
que la première fois. À l'ouverture, le Userform n'est pas "loadé",
donc l'événement Initialize est exécuté, même si Load n'est pas
mentionné explicitement. Donc, la première fois que tu utilises .Show,
l'événement Load sera appelé et Initialize par le même fait.
Si, par la suite, tu fais Hide puis Show, le code ne passera plus par Initialize.
arthur0201
Messages postés55Date d'inscriptionsamedi 19 mars 2005StatutMembreDernière intervention19 octobre 2006 1 oct. 2006 à 19:35
Le bouton Hide me conviendrait plus...je vais essayé de suite! Par contrele popmenu m'interesserai aussi ... Mais est qu'il faudra être sur une cellule précise ou sa peut etre sur n'importe qu'elle cellule?(ce que je préférerai)
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 1 oct. 2006 à 21:12
Ça peut être sur n'importe quelle cellule ou seulement certaines cellules, au choix.
Mais c'est moins simple à gérer qu'un simple bouton...
Tu dois initialiser le menu au départ, lui affecter une fonction/sub,
le "détruire" lorsque nécessaire pour ne pas qu'il soit disponible dans
certaines feuilles ou certains programmes, afin d'éviter les erreurs et
plantages...
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 1 oct. 2006 à 22:08
Je pense que le mieux serait que tu démarres un nouveau post dans cette même section.
Pour éviter de tout mêler et de rendre la recherche plus facile pour les autres personnes.