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

VBA Project Discussion :

Fermeture de msp par une macro [PR-2010]


Sujet :

VBA Project

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 13
    Points : 19
    Points
    19
    Par défaut Fermeture de msp par une macro
    bonsoir a tous!

    est ce quelqu'un a déjà fermé des fichiers ouverts msp avec une macro (bien sur, affectée à un bouton).

    si oui, avec quel code?

    NB : je sais qu'en cliquant sur le croix rouge mon problème sera résolu mais je veux utiliser cette macro dans pour atteindre d'autre objectif.

    merci d'avance

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2010
    Messages : 116
    Points : 98
    Points
    98
    Par défaut
    Citation Envoyé par ngredith Voir le message
    bonsoir a tous!

    est ce quelqu'un a déjà fermé des fichiers ouverts msp avec une macro (bien sur, affectée à un bouton).

    si oui, avec quel code?

    NB : je sais qu'en cliquant sur le croix rouge mon problème sera résolu mais je veux utiliser cette macro dans pour atteindre d'autre objectif.

    merci d'avance
    Salut,

    Oui c'est assez simple.

    Mais peux tu détailler un peu plus ce que tu veux.
    Exemples : "j'ai 3 fichiers ouvert je veux en fermer un", "jai 3 fichiers ouvert je veux fermer les 2 sur lequels je ne suis pas "actif"", "je veux ouvrir un fichier, effectuer des traitements, puis le fermer", etc, etc..

    Je pourrai ainsi mieux t'aider.

    Cdlt,

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 13
    Points : 19
    Points
    19
    Par défaut fermeture de fichier ouvert
    exemple :
    Jai trois fichiers ouvert A, B, et C.
    quand je clique pour fermer A, je dois fermer B et C avant.

    pour cela, je dois définir une procédure Before_Close ; ca c'est fait

    je veux maintenant le code pour fermer plusieurs fichiers ouvert afin de pouvoir l'insérer dans ma procédure "Before_Close ".

    cordialement!

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2010
    Messages : 116
    Points : 98
    Points
    98
    Par défaut
    Citation Envoyé par ngredith Voir le message
    exemple :
    Jai trois fichiers ouvert A, B, et C.
    quand je clique pour fermer A, je dois fermer B et C avant.

    pour cela, je dois définir une procédure Before_Close ; ca c'est fait

    je veux maintenant le code pour fermer plusieurs fichiers ouvert afin de pouvoir l'insérer dans ma procédure "Before_Close ".

    cordialement!
    Voici la procédure :

    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
    Sub close_projets()
     
        Dim p As Project
        Dim retour As String
     
        For Each p In MSProject.Projects
     
            p.Activate
     
            retour = MsgBox("Voulez-vous fermer : " & p.Name & "?", vbYesNo, "Fermeture")
     
            If retour = vbYes And MSProject.Projects.Count > 1 Then
     
                'C'est oui on ferme
                FileCloseEx pjSave
     
            'Si plus de projet, on ferme MSProject
            ElseIf retour = vbYes And MSProject.Projects.Count = 1 Then
     
                MSProject.Quit pjSave
     
            End If
     
        Next
     
    End Sub
    Tu pourra ainsi adapter celle-ci en fonction de tes besoins.
    Je t'invite à poster ta solution finale et marquer ton post résolu

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 13
    Points : 19
    Points
    19
    Par défaut
    merci jeanjean6!

    je teste et je te fait signe

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 13
    Points : 19
    Points
    19
    Par défaut fermeture
    bonjour a tous!
    desolé jeanjean6 pour la longue absence, je testais le code en y apportant quelques modifications.
    mais jai toujours un souci a la fermeture :
    ce code renvoi le message "msbox" mais il ferme quand meme le fichier dans lequel je l'ai definit, je ne sais pas 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
    Private Sub Project_BeforeClose(ByVal pj1 As Project)
     
    If (pj1 Is Nothing) Then
    End If
     
    If MSProject.Projects.Count > 1 Then
         If MsgBox("FERMER LES PROJETS AVANT DE FERMER LE RESERVOIR", vbOKCancel) = vbOK Then
            Cancel = True
            GoTo fn
         End If
    ' Cancel = True
    End If
    fn:
    End Sub
    help me!

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2010
    Messages : 116
    Points : 98
    Points
    98
    Par défaut
    Je ne comprends pas très bien ce que tu veux faire avec ton extrait de code.

  8. #8
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 13
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par jeanjean6 Voir le message
    Je ne comprends pas très bien ce que tu veux faire avec ton extrait de code.
    salut!

    en fait j'ai mis sur pied un réservoir de ressource (fichier msp qui contient toutes les ressources de l'entreprise). ce réservoir est partagé en réseau afin que tous les responsable puissent y puiser les ressources pour leurs projets(sur msp).

    pour l'utiliser, il faut se lier au réservoir. si a la fermeture, le lien n'a pas été rompu, a la prochaine ouverture du réservoir, il peut être ouvert en lecture seule ; ce que je veux éviter.

    pour y parvenir j'ai veillé a ce que lors de la fermeture d'un projet, la rupture soit effective. mais cette action est vaine si l'utilisateur ferme d'abords le réservoir. donc je veux empêcher la fermeture du réservoir tant qu'il y a plus d'un (fichier ouvert>1) fichier ouvert.

    j'espère que j'ai été explicite....

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2010
    Messages : 116
    Points : 98
    Points
    98
    Par défaut
    Citation Envoyé par ngredith Voir le message
    salut!

    en fait j'ai mis sur pied un réservoir de ressource (fichier msp qui contient toutes les ressources de l'entreprise). ce réservoir est partagé en réseau afin que tous les responsable puissent y puiser les ressources pour leurs projets(sur msp).

    pour l'utiliser, il faut se lier au réservoir. si a la fermeture, le lien n'a pas été rompu, a la prochaine ouverture du réservoir, il peut être ouvert en lecture seule ; ce que je veux éviter.

    pour y parvenir j'ai veillé a ce que lors de la fermeture d'un projet, la rupture soit effective. mais cette action est vaine si l'utilisateur ferme d'abords le réservoir. donc je veux empêcher la fermeture du réservoir tant qu'il y a plus d'un (fichier ouvert>1) fichier ouvert.

    j'espère que j'ai été explicite....
    Salut,
    j'ai compris ce que tu voulais faire merci.

    Mais tu risques de rencontrer des problèmes avec cette architecture :
    Si tu romps les liens, tu risques de rencontrer des incohérences au niveau de l'utilisation de tes ressources.

    J'ai plusieurs question pour essayer de t'aider :

    -Est-ce que ton "réservoir" utilise un seul et unique nom de fichier où il peut être amené à changer ?

    -Est-ce que ton "réservoir" peut être utilisé en même tps par plusieurs utilisateurs y compris en lecture seul ?

    -Peux tu poster le code qui permet de rompre les liens du projet ?

  10. #10
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 13
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par jeanjean6 Voir le message
    -Est-ce que ton "réservoir" utilise un seul et unique nom de fichier où il peut être amené à changer ?
    oui il utilise un seul et unique nom

    Citation Envoyé par jeanjean6 Voir le message
    -Est-ce que ton "réservoir" peut être utilisé en même tps par plusieurs utilisateurs y compris en lecture seul ?
    il peut être utilisé par plusieurs utilisateurs, dans ce cas, certains l'utiliserons en lecture seule. mais mes responsables et moi comptons éviter cela ; c'est à dire si une personne utilise le réservoir, les autres devront attendre avant de l'utiliser à leur tour. l'utilisation du réservoir étant un évènement ponctuel, ca ne devrait pas poser de problème

    [QUOTE=jeanjean6;7325813-Peux tu poster le code qui permet de rompre les liens du projet ?[/QUOTE]

    le code est très simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Project_BeforeClose(ByVal pj As Project)
     
    ResourceSharing share:=False
     
    End Sub

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2010
    Messages : 116
    Points : 98
    Points
    98
    Par défaut
    Je ne suis pas sure que ce soit la meilleure solution mais voici ce que tu peux faire :

    Dans ton fichier "réservoir" tu mets :

    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 Project_BeforeClose(ByVal pj1 As Project)
     
    Dim p As Project
     
     
        For Each p In MSProject.Projects
     
            p.Activate
     p.ResourceSharing share:=False
     
            If MSProject.Projects.Count > 1 Then
     
     
                'C'est oui on ferme
                FileCloseEx pjSave
     
            'Si plus de projet, on ferme MSProject
            ElseIf MSProject.Projects.Count = 1 Then
     
                MSProject.Quit pjSave
     
            End If
     
        Next
     
    End Sub
    Cela permet de forcer la fermeture des autres fichiers (avec sauvegarde automatique) dans le cas où on ferme en premier le fichier de ressource, tout en "cassant les liens.

  12. #12
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 13
    Points : 19
    Points
    19
    Par défaut
    j'ai testé mais a la ligne 16 il dit

    "erreur d'execution 1100"
    la methode n'est disponible dans cette situation

  13. #13
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 13
    Points : 19
    Points
    19
    Par défaut
    bonjour a tous!
    j'ai enfin trouvé la solution à mon problème ce matin, comme une révélation, ... avec les 2 code ci-après :

    Dans ThisProject(Global.MPT)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Project_BeforeSave(ByVal pj As Project)
     
    Dim actif As String
    actif = ActiveProject.Name
     
    If actif = "MON RESERVOIR" Then
       GoTo alt
    End If
    ResourceSharing share:=False
    alt:
    End Sub
    et Dans ThisProject(MON RESERVOIR)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Project_BeforeClose(ByVal pj As Project)
    Dim p As Project
     
    If MSProject.Projects.Count > 1 Then
       For Each p In MSProject.Projects
          p.Activate
          FileSave
       Next
    Else
       Application.DisplayAlerts = False
       MSProject.Quit pjSave
    End If
     
    End Sub
    merci a jeanjean6

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. non prise en compte d'une formule remplie par une macro
    Par mardona dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/06/2007, 15h08
  2. Imprimer un graph par une macro
    Par man_coef dans le forum Général VBA
    Réponses: 2
    Dernier message: 10/10/2006, 11h28
  3. Réponses: 3
    Dernier message: 14/04/2006, 10h43
  4. lancer une sub par une macro
    Par ganizate dans le forum Access
    Réponses: 2
    Dernier message: 04/04/2006, 15h01
  5. [Excel] Utiliser une application externe par une macro
    Par thierry2.dlp dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2005, 22h07

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