Visualiser différente résultat d'excel grace à un userform?

Résolu
arthur0201 Messages postés 55 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 19 octobre 2006 - 30 sept. 2006 à 20:14
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 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

15 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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

Call UserForm2.Show(vbModeless)

MPi
3
arthur0201 Messages postés 55 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 19 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"

Pourtant il se trouve bien à la fin...
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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.

MPi
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 sept. 2006 à 20:41
Inutile de poster plusieurs fois la même question, même avec untitre légèrement différent. Tu n'obtiendras pas pour autant plus de réponses.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
arthur0201 Messages postés 55 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 19 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
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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"

        Exit Sub

    End If

   

    'Autrement, on exécute

    Workbooks("Classeur2").Sheets("Feuil2").Activate

   

End Sub

MPi
0
arthur0201 Messages postés 55 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 19 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).

Merci
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
1 oct. 2006 à 00:25
Enlève la ligne

Sub X()

MPi
0
arthur0201 Messages postés 55 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 19 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?

Merci et bon week-end à tous!
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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.

MPi
0
arthur0201 Messages postés 55 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 19 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)
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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...

MPi
0
arthur0201 Messages postés 55 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 19 octobre 2006
1 oct. 2006 à 21:59
J'aimerai qu'il soit dispos sur chaque page....peux tu m'aider?


Mais si c plus simple... je me contenterai d'un bouton sur chaque feuille excel

(La première solution m'interresait plus car j'ai plus de 100 feuille excel dans mes 2 fichier!)
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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.

MPi
0
arthur0201 Messages postés 55 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 19 octobre 2006
1 oct. 2006 à 22:36
ok
0
Rejoignez-nous