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

Macros et VBA Excel Discussion :

Serie des processus [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 34
    Points : 31
    Points
    31
    Par défaut Serie des processus
    Bonjour,
    (Mon ordinateur est tellement bon que ça fait 3 fois que j'écris ce message).
    Alors j'ai presque aucune connaissance en VBA. J'ai déjà réalisé un processus qui récupérait des valeurs pour les mettre en fonction des entrée dans une feuille spécifique puis rentrait des valeurs pour récupérer des sorties. Bref c'était gentil...

    Là, on m'a demandé un processus où je m'en sors pas trop...
    Alors j'ai un fichier excel où j'ai pour chaque équipe une feuille.
    Dans chaque feuille et par colonne il y a: un nom, un matricule, un nom de projet, une description rapide du projet, le nombre d'heure et autres.

    En gros je dois créer un processus pour facilier la vie du chef d'équipe, qui doit lui rentrer ses heures en fonction des autres membre de l'équipe. Si l'équipe a pris la moitié du temps sur un projet, le chef aussi.

    Donc j'avais pensé à faire
    1 Recupérer le nom du manager avec un menu déroulant
    2 En fonction du nom du manager je défini la section
    3 Il va alors pour chaque projets, récupérer le total d'heures travaillés dessus
    4 Calculer la ponderation suivante: Nombre d'heure travaillé sur le projet/ Nombre d'heure travaillé total
    5 Ecrire pour chaque projet sur une ligne "Projet,Nombre d'heure travaillé, Pondération".


    1 et 2 j'y arrive. Mais la suite surtout 3 j'ai du mal. Donc je voulais savoir si des gens pouvaient m'aider.
    J'ai trouvé des questions similaires mais ça sort uniquement la valeur de la colonne. J'aimerai surtout sortir cette valeur pour l'écrire mais aussi récupérer les heures totalisés sur l'étude...


    Alors je sais pas si vous pouvez m'aider ou donner des pistes mais ça sera avec plaisir... Je deviens un peu fou là.
    exemple_bis.xlsx



    J'ai déjà ça:
    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
    28
    29
    30
    31
    32
    33
    34
    35
     
    Option Explicit
     
    Sub Test()
    Dim dl As Long
    With ActiveSheet
       dl = .Range("A" & .Rows.Count).End(xlUp).Row
    End With
    Creer_Liste_SansDoublons Range("A2:A" & dl)
     
    End Sub
     
     
     
    Sub Creer_Liste_SansDoublons(Plage As Range)
    Dim Cell As Range
    Dim Un As Collection, i As Long
    Dim ssdoublon()
    Set Un = New Collection
    On Error Resume Next
     
    For Each Cell In Plage
       If Cell <> "" Then Un.Add Cell, CStr(Cell)
    Next Cell
     
    On Error GoTo 0
     
    For i = 1 To Un.Count
       ReDim Preserve ssdoublon(i - 1)
       ssdoublon(i - 1) = Un.Item(i)
    Next i
    For i = 0 To UBound(ssdoublon)
    Next i
    Set Un = Nothing
    End Sub

    Je crois savoir que que je peux sortir qu'une sortie avec ma fonction... Alors je me demandais si l'inserer au reste du programme afin de garder la liste des projets était à faire ?
    Comme ça, après je dois "chercher" les lignes où le nom de mon projet est présent pour pendre les heurres et pour les sommer...

  2. #2
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonsoir Akre, bonsoir le forum,

    Ton fichier exemple ne contient aucun code (1 et 2 j'y arrive.) ?! Mais surtout ne reflète pas ta problématique :


    1 Recupérer le nom du manager avec un menu déroulant / pas d'étiquette "Nom du manager" dans ton tableau...
    2 En fonction du nom du manager je défini la section / pas d'indication de "Section" dans ton tableau
    3 Il va alors pour chaque projets, récupérer le total d'heures travaillés dessus / pas d'indication de "projet" dans ton tableau
    4 Calculer la ponderation suivante: Nombre d'heure travaillé sur le projet/ Nombre d'heure travaillé total / ?
    5 Ecrire pour chaque projet sur une ligne "Projet,Nombre d'heure travaillé, Pondération". / où ?

    je doute que tu reçoives de l'aide avec des explications si peu claires...

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 34
    Points : 31
    Points
    31
    Par défaut
    Pardon si j'ai manqué de clarté.

    Alors pour 1 et 2, je pensais récupérer la liste des chefs de section avec la liste des membres de chaques équpipes, pour les mettre dans un feuille à part.
    De cette façon sur l'interface je proposerai les noms des chefs avec un menu déroulant et à partir de la liste des chefs sur la feuille.
    Après quand le nom du chefs sera choisi je pourrai lui associer l'équipe (donc personne, donc projet). De plus, chaque section aura sa propre feuille dans le fichier excel. Donc j'aurai plus qu'à me focaliser dessus...

    Donc imaginons j'ai Michel, Jean et Lucie (respectons la loi ) comme chef des équipes A B et C.
    Je lui propose sur un menu Michel,Jean et Lucie. Il choisit Jean alors je travaille uniquement sur B, donc sur la feuille lié à cette équipe, qui contient la feuille que je ai mis en PJ. (ça je sais faire).
    Après j'aimerai (c'est la que je sais pas trop faire) récupérer tous les projets (colonne D "Element OTP") associé au nombre d'heure travaillé dessus par tous les membres de la section. Donc ça implique de sortir tous la liste des projets étudié par l'équipe. Pour chaque projet, chercher le nombre d'heures total travaillé.
    Après il suffit de faire A/B
    Avec A: Nombre total d'heure travaillé sur un projet par tout une équipe
    et B: Nombre total d'heure travaillé sur tous les projets (en gros nombre d'heure total écrit - les heures des vacances).

    Mettons j'ai projet Kiwi,Banane et Pomme et l'équipe consititué de Jack,Wily et Jane (je me dépasse là)

    Nom Projet Heures
    Jack Kiwi 5
    Jack Kiwi 8
    Jack Pomme 7
    Jack Pomme 5
    Wily Banane 4
    Wily Banane 3
    Wily Banane 2
    Wily Vac 8
    Jane Kiwi 8
    Jane Kiwi 2
    Jane Pomme 6

    Du coup après je cherche à avoir comme sortie sur une feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Projet Heure d'etude Pondération
    Kiwi 23 0.54
    Pomme 18 0.43
    Banane 9 0.21
    Heure total à travailler (hors vac): 42
    Donc mon 1 ne sera pas dans le script. Il sera déterminé avec les menus déroutlants.
    En fonction du nom du chef choisi, la feuille de la section associé au chef sera étudié (j'avais déjà fait un truc du genre sur mon unique script VBA).
    Par contre le reste j'arrive pas... J'ai trouvé sur le forum (merci d'ailleurs) des fonctions qui se rapprochait. Je les ai assimilé mais j'arrive pas à continuer.
    Je vois pas comment extraire la liste de ces projets, puis pour chaque événement de cette liste "chercher" les lignes où sur la colonne D se trouve cette élément pour sortir la valeur de la colonne F (les heures). Puis après sommer et écrire la sortie je pense y arriver.

    Donc peut-être mon début est totalement faux. Je code pas mal pour me faciliter la vie même si pas trop ma mission et ma grande passion. Mais la VBA j'ai vraiment du mal...
    Bref si on peut m'aider, me conseiller, m'expliquer des trucs je veux bien. J'écume les tutos mais j'ai pas l'impression d'avancer pour autant.


    (Dans le document en PJ: Element d'OTP recept est la colonne des projets (colonne D), Colonne F les heures).
    Bon j'espère avoir été plus clair...

    EDIT:
    Au final,j'ai réussis ! Je mets le script (il doit pas être jolie)
    Du coup si vous avez des conseils je suis prenant


    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
    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
     
    Option Explicit
     
    Sub Test()
     
    'Declaration des variables
    Dim dl As Long
    Dim Section As String
     
    Dim CellActive As Range
    Dim Celltowrite As Range
    Dim Cell_test As Range
     
    Dim FSource As Worksheet
    Dim FCible As Worksheet
     
    Dim Cell As Range
    Dim Un As Collection, i As Long, n_ligne As Long, a As Long
    Dim Sum As Long
    Dim ssdoublon()
    Dim Plage As Range
    Dim Heure As Long
     
    'On récupère les valeurs données par l'opérateur
    'Feuille Source
    Set FSource = Worksheets("Cmd")
    Section = FSource.Range("B2").Value
     
    'On va rentrer les valeurs données
    'Feuille Cible
        Set FCible = Worksheets(Section)
     
     
     
    With ActiveSheet
       dl = FCible.Range("D" & .Rows.Count).End(xlUp).Row
    End With
    Set Plage = FCible.Range("D2:D" & dl)
    Set Un = New Collection
    On Error Resume Next
     
    'On parcourt la plage de donnée
    For Each Cell In Plage
       If Cell <> "" Then Un.Add Cell, CStr(Cell) 'Si la valeur est différent des autres on la prends sinon on passe
    Next Cell
     
    On Error GoTo 0
     
    For i = 1 To Un.Count
       ReDim Preserve ssdoublon(i - 1)
       ssdoublon(i - 1) = Un.Item(i)
     
     
      Next i
    Heure = 0 'on inialise
    For i = 0 To UBound(ssdoublon)
      ' MsgBox ssdoublon(i)
      ' à la place remplis ta listbox
     
     'On ecrit le projet sur notre ligne de sortie
    n_ligne = 1
    'Set Celltowrite = FSource.Cells(n_ligne, 1)
    FSource.Cells(n_ligne + i, 5) = ssdoublon(i)
     
    Sum = 0 'on initalise
    For Each Cell In Plage
    If Cell = ssdoublon(i) Then Sum = Sum + Cell.Offset(0, 2).Value 'Si le projet est le bon on récupère son heure
    Next Cell
    'On écrit la somme des heures travaillées sur un projet
    FSource.Cells(n_ligne + i, 6) = Sum
    'On somme les heures (pour avoir la somme des heures totales)
    Heure = Heure + Sum
     
    Next i
    'On écrit la somme des heures travaillées
    FSource.Cells(n_ligne + i, 6) = Heure
     
     
    For a = 0 To i
    FSource.Cells(n_ligne + a, 7) = FSource.Cells(n_ligne + a, 6) / Heure
    Next a
     
    For a = 0 To i - 1
    FSource.Cells(n_ligne + a, 8) = FSource.Cells(n_ligne + a, 7) * FSource.Cells(2, 3)
    Next a
     
     
    Set Un = Nothing
     
     
     
    End Sub

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

Discussions similaires

  1. [C#] Configuration du niveau de priorite des processus
    Par stephdiplo150 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 22/04/2007, 23h29
  2. faire un petit menu qui lance des processus
    Par tomsoyer dans le forum Linux
    Réponses: 4
    Dernier message: 30/11/2004, 18h37
  3. lancer des processus
    Par dylan dans le forum Général Python
    Réponses: 2
    Dernier message: 10/06/2004, 14h02
  4. [langage] fonctionnement des Processus
    Par GMI3 dans le forum Langage
    Réponses: 3
    Dernier message: 19/09/2003, 11h12
  5. Réponses: 2
    Dernier message: 04/10/2002, 09h13

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