Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Project
Project Forum d'entraide sur Microsoft Project (planification et gestion de projet)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/04/2011, 15h53   #1
Invité de passage
 
Étudiant
Inscription : mars 2011
Messages : 12
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2011
Messages : 12
Points : 3
Points : 3
Par défaut Insertion de tâche d'excel vers Project

Tout d'abord bonjour à tous,

voilà je me tourne vers vous car j'ai un petit problème.
En effet, je souhaiterai exporter des tâches depuis Excel vers Project. Je sais qu'ils existent l'extraction automatique depuis Project ou même que je peux faire un enregistrement de l'opération pour avoir le code qui est généré (chose que je fais aujourd'hui), mais le problème n'est pas là.

Je m'explique :

Je possède un fichier Excel qui est rempli par des Chefs de projets, avec des informations tels que le périmètre sur lequel ils actuent, leurs noms, le noms de la ressource désirée, la date souhaitée de réalisation et j'en passe.
J'ai donc commencé à développer un script qui me permet depuis project de comparer mon fichier excel avec le contenu de mon project en se basant sur un numéro chrono (numéro d'arriver de la tâche) qui est biensur présent dans mon excel ainsi que dans mon project.
Si lors du parcours, je retrouve le même numéro de chrono je passe au suivant, lorsque je ne trouve pas de numéro chrono identique aux deux fichiers, je récupère la valeur de l'ID du champs périmètre afin de pouvoir copier ma tâche sous le bon périmètre. Et là je rencontre un problème, mon script ne me place pas mes tâches créées sous le bon périmètre. Et c'est là que j'aurais besoin d'un petit coup de pouce
Je voudrais donc que lorsqu'un numéro chrono n'existe pas, celui-ci en regardant dans le fichier excel voit dans quel périmètre on se trouve, copie ma tâche excel et me la colle sous le bon champs (périmètre donc) dans mon fichier Project , et là je n'arrive à rien :s.
J'ai pu constaté que mon script fonctionne lors de l'insertion d'une première tâche, mais suite à cette insertion, celui-ci chamboule la position des périmètres et donc lors d'une seconde insertion, il a retenu l'ancienne place (donc ID) de mon champs périmètre et m'insère donc ma tâche au mauvais endroit.

J'espère que je me suis fais comprendre :s, si ce n'est pas le cas veuillez me le dire, j'essayerai de reformuler le tout

Vous trouverez en pièce jointe mon fichier excel ainsi que mon project. C'est un fichier test donc le contenu des cellules a été modifié et non pas vraiment de sens .

Bien cordialement,

Miguel
Fichiers attachés
Type de fichier : zip Script forum.zip (54,9 Ko, 3 affichages)
Miguel973 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 10h05   #2
Invité de passage
 
Étudiant
Inscription : mars 2011
Messages : 12
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2011
Messages : 12
Points : 3
Points : 3
Par défaut Problème résolu

Bonjour à tous,

juste pour vous dire que je clos mon sujet étant donné que j'ai trouvé la solution à mon problème ^^

Bien cordialement,

Miguel

P.S : pour ceux que ça aideraient, voici le code qui répond à mon problème.
Je suis passé par une fonction

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
'Déclaration de mes variables publiques
Public IDMigration As Integer
Public IDBuild As Integer
Public IDRun As Integer
 
Sub ImportTachesExcel()
'Constantes
COL = 5
 
'Variables
Dim CurrentID As Long
Dim cpt As Integer
Dim cpt2 As Integer
Dim chrono As Integer
Dim Rubrique As String
Dim pathxls As String
Dim trouvé As Boolean
Dim Xlobj As Object
Dim Xlsht As Object
Dim i As Integer
Dim vrow As Integer
Dim Position
 
'Traitement de l'erreur
On Error Resume Next
'Instanciation des variables
pathxls = "" 'mettre le chemin du fichier excel
 
'Recheche de l'ID de chaque rubrique : Build, Migration, Run
refreshid
 
'Creation de l'objet Excel
Set Xlobj = CreateObject("Excel.Application")
'Ouverture du fichier
Xlobj.workbooks.Open pathxls
 
 
'Scanning des lignes et comparaison avec les taches Project afin d'insérer celles qui ne sont pas présentes
' Pierre de Rosette = Numéro Chrono stocké dans le champ project : Numéro 1
cpt = 2
While Xlobj.Worksheets("Basedonnées").cells(cpt, 1) <> ""
    'Parcours du fichier afin de voir si le chrono est existant dans le project
    chrono = Xlobj.Worksheets("Basedonnées").cells(cpt, 1)
    'Rubrique = UCase(Xlobj.Worksheets("Basedonnées").cells(cpt, 4))
    Rubrique = Xlobj.Worksheets("Basedonnées").cells(cpt, 4)
    trouvé = False
    For cpt2 = 1 To ActiveProject.Tasks.Count
        If chrono = ActiveProject.Tasks(cpt2).Number1 Then
            trouvé = True
        End If
    Next cpt2
    'Traitement si pas trouvé, on insère dans la sous rubrique correspondante (Build, Run, Migration)
    If trouvé = False Then
        'Instanciation de l'ID sous lequel créer la tache
        Select Case Rubrique
            Case "BUILD"
                CurrentID = IDBuild
            Case "Migration"
                CurrentID = IDMigration
            Case "RUN"
                CurrentID = IDRun
        End Select
        'Création de la tache
        ActiveProject.Tasks.Add "my new task", CurrentID + 1
        'ActiveProject.Tasks(idtask).Parent = CurrentID
        'ActiveProject.Tasks(idtask).Ressources.Add Xlobj.Worksheets("Basedonnées").cells(cpt, 9)
        'ActiveProject.Tasks(idtask)
        'Xlobj.Worksheets("Basedonnées").cells(cpt, 5), CurrentID
        'Appel de la fonction pour retrouver les bons id de positionnement
        refreshid
        End If
    cpt = cpt + 1
 
Wend
Xlobj.Quit
Set Xlobj = Nothing
 
 
 
End Sub
 
'Fonction de recherche de l'id avant et après insertion de tâches
Sub refreshid()
On Error Resume Next
Dim cpt As Integer
For cpt = 1 To ActiveProject.Tasks.Count
    Select Case ActiveProject.Tasks(cpt).Name
        Case "Migration"
            IDMigration = ActiveProject.Tasks(cpt).ID
        Case "RUN"
            IDRun = ActiveProject.Tasks(cpt).ID
        Case "BUILD"
            IDBuild = ActiveProject.Tasks(cpt).ID
    End Select
Next cpt
End Sub
Miguel973 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h13.


 
 
 
 
Partenaires

Hébergement Web