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 :

Etablir un plan de maintenance en fonction de la périodicité des évènements


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2015
    Messages : 46
    Points : 30
    Points
    30
    Par défaut
    Salut à tous,

    J'ai déjà fait un post il y a peu et j'ai pu résoudre mon problème. J'espère que pour celui là, le cas sera le même !

    Je dois établir un plan de maintenance sur 2 ans où j'ai la périodicité hebdomadaire de chaque évènement.
    Dans la feuille "Table_Composant", j'ai fait la liste de tous les composants et je leur ai attribué une périodicité hebdomadaire pour chaque opération T1, T2, T3 de maintenance (exemple : T1=4, T2=12; T3=24).
    Dans la feuille "Table_Maintenance", j'ai mis la référence de chaque composant et je voudrais que lorsque l'on met la périodicité de maintenance d'un composant "Table_Composant", alors se génère dans "Table_Maintenance" comme un emploi du temps où les maintenance T1, T2 et T3 apparaissent et ça pendant 2 ans soit 2*52 semaines. Pendant 2*52 semaines afin de pouvoir anticiper sur les prochaines grosses opérations de maintenance qui nécessiteraient un approvisionnement en pièces.

    je vous remercie d'avance et je pense pas que la tache soit si facile que ça malheureusement... Enfin elle ne l'ai pas pour moi ^^
    karl

    Pour que vous puissiez voir un peu mieux de quoi je parle, j'ai joins mon fichier excel.
    C'est dans la feuille "Table_Maintenance" que je souhaite générer automatique l'ensemble de ces maintenances T1, T2... Je les ai pour l'instant rempli une à une à la main.
    J'espère que vous allez pouvoir m'aider.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 766
    Points : 28 625
    Points
    28 625
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une petite illustration des listes de données et/ou une explication détaillée de l'organisation de celle-ci avec une exemple de ce que tu attends aura plus de chances d'obtenir une réponse que de balancer des classeurs à télécharger que beaucoup d'entre-nous ne veulent pas ouvrir.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2015
    Messages : 46
    Points : 30
    Points
    30
    Par défaut
    Merci de ta réponse. Je vais essayer d'être assez clair de manière écrite pour l'explication.

    Feuille "F1" :


    Cologne A : Ref composant (A1, A2, A3,..., An)
    Cologne B : 1ère périodicité T1 (en semaine)
    Cologne C : 2ème périodicité T2 (en semaine)
    Cologne D : 3ème périodicité T3 (en semaine)

    Feuille "F2" :

    Colone A : Ref composant (A1, A2, A3,..., An)
    le reste des colonnes seraient les semaines de l'année (S1, S2, ...S52) et cela pendant 2 ans (2*52 semaines). Ce serait donc une lecture horizontale et je voudrais qu'en fonction des périodes T1, T2 et T3 de la feuille "F1", un plan hebdomadaire se génère automatique.

    Je vous joins un fichier simple illustrant mon souhait.
    ILLUSTRATION2.xlsx

    Merci d'avance

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 766
    Points : 28 625
    Points
    28 625
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Que rentres tu dans les colonnes B, C et D de la feuille nommée [F1], un n° de semaine ?
    Si c'est le cas, comment définir l'année de cette semaine ?
    Il faudrait être plus précis.
    Je rappelle que je n'ouvre pas les classeurs car ce n'est pas l'idée que je me fais d'un forum d'entre-aide où il me semble que tout le monde doit en profiter en lecture et pas en allant télécharger les questions et les réponses.
    J'ouvre les classeurs de mes clients qui me paient pour cela mais sûrement pas quand j'accorde une aide bénévolement
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2015
    Messages : 46
    Points : 30
    Points
    30
    Par défaut
    D'accord pour les fichiers, je n'avais pas vu cela sous cet angle là...
    Dans les trois colonnes B, C et D de la feuille "F1", ce sont des nombres de semaines. C a d que toutes les x semaines, nous avons T1...
    Par exemple si pour le premier composant (Ref: A1) colonne A de "F1", T1=1, T2=4 et T3=12 alors T1 se réalise alors toutes les semaines, T2 toutes les 4 semaines et T3 toutes les 12 semaines.
    Du coup en générant automatiquement à partir des périodicité T1, T2, T3 de "F1", je devrais obtenir sur la feuille "F2" ceci :

    Semaine 1 2 3 4 5 6 7 8 9 10 11 12 13 14
    A1 T1 T1 T1 T2 T1 T1 T1 T2 T1 T1 T1 T3 T1 T1

    je l'ai fait jusqu’à la 15ème semaine faute de place sinon en réalité c'est pour 2x52 semaines.
    L'année reste indicative c'est à dire "année_1", "année_2"...

    PS : je n'avais pas vu qu'il était possible de faire ce genre d'illustration :S

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 766
    Points : 28 625
    Points
    28 625
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    C'est en effet un peu plus clair mais il reste des questions.
    Dans les trois colonnes B, C et D de la feuille "F1", ce sont des nombres de semaines. C a d que toutes les x semaines, nous avons T1...
    Dans la feuille nommée [F1] il reste un élément manquant, la date de départ. En effet pour pouvoir calculer par exemple toutes les 4 semaines, on doit connaître la date à partir de laquelle on doit calculer les différentes dates pour T1
    Dans la feuille nommée [F2], il manque aussi l'année correspondant à la semaine présentée en première ligne.

    Autre question, que se passe-t'il lorsqu'il y a une collision avec 1 ou plusieurs temps T. Si T1 doit avoir lieu toutes les 4 semaines et que T2 doit s'effectuer toutes les 12 semaines. Que fait t'on la 12ème semaine T1+T2 ou T2 ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2015
    Messages : 46
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    En effet il manque cet élément (date de mise en service) dans la feuille "F1", tout comme l'année feuille "F2".
    Pour les évènements T1, T2 et T3, c'est la loi du "plus fort". Si T1 et T2 coïncident, c'est T2 que l'on retient et idem pour T3 face T1 et/ou T2. Si les 3 se superposent alors on retient seulement T3.
    Voici les deux tableaux :

    Feuille "F1"

    Ref T1 T2 T3
    A1 1 4 12

    Feuille "F2"

    Annee 2015 2015 2015 2015 2015 2015 v2015 2015 2015 2015 2015 2015 2015 2015 2015 2015
    Ref Date_Mise_Service Semaine 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
    A1 01/01/2015 T1 T1 T1 T2 T1 T1 T1 T2 T1 T1 T1 T3 T1 T1 T1 T2

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 766
    Points : 28 625
    Points
    28 625
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Même si cela ne change rien au niveau de la recherche, il me semblait sans doute plus approprié de placer la date de mise en service dans la feuille nommée [F1] qui contient la liste de données de base alors que l'autre feuille doit plutôt être considérée comme un tableau de bord.

    Reste encore une interrogation. Ne faudrait-il pas faire un tableau avec semaines glissantes où la première colonne contiendrait la semaine en cours, soit pour aujourd'hui la semaine 40 de l'année 2015. Sans quoi que se passera t'il dans les années qui suivent ?
    La formule contenue alors dans 1ère cellule de la feuille F2 où se trouve les n° de semaine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =NO.SEMAINE(AUJOURDHUI();21)
    Formule à adapter pour prendre en compte le lundi de la semaine du jour courant.
    Ensuite il suffit d'ajouter de faire une incrémentation de 7 jours sur les 104 cellules qui suivent (2 années).
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2015
    Messages : 46
    Points : 30
    Points
    30
    Par défaut
    Je suis d'accord avec toi concernant cette semaine glissante mais je pensais pas que cette simple formule faisait l'affaire.
    Par contre si la première colonne est celle de la semaine en cours avec toutes les taches associées (T1, T2 ou T3), alors il ne faudrait pas passer au taches suivantes si elles n'ont pas été réalisées. Si elles n'ont pas été réalisées alors les taches de la semaine 40 se décalent à la semaine 41 et le reste des taches de l'année décalent aussi d'une semaine.

  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 766
    Points : 28 625
    Points
    28 625
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Par contre si la première colonne est celle de la semaine en cours avec toutes les taches associées (T1, T2 ou T3), alors il ne faudrait pas passer au taches suivantes si elles n'ont pas été réalisées. Si elles n'ont pas été réalisées alors les taches de la semaine 40 se décalent à la semaine 41 et le reste des taches de l'année décalent aussi d'une semaine.
    Plus tu réponds, plus les questions fusent. Je crois que tu devrais prendre le temps pour faire une bonne analyse de tes besoins sinon, tu vas droit dans le mur.
    Le tableau de bord avec seulement une feuille de données ne suffit pas. Il faudrait en plus avoir une liste de données avec les tâches réalisées.
    Bref, je pense que cela sort d'une simple question sur une discussion.
    Tu dois commencer par faire ton analyse établir l'équivalent d'un cahier des charges et ensuite ouvrir autant de discussion qu'il n'y a de problème à résoudre.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  11. #11
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Personnellement, je dirais que tout cela est plutôt inutile

    Juste penser qu'une suite d'événements va être absolument constante et immuable durant 2 ans, cela s'approche du mirage (et pas l'avion).

    Il doit y avoir à quelque part dans cette boîte-là un patron "illuminé" qui croit en la pensée magique.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2015
    Messages : 46
    Points : 30
    Points
    30
    Par défaut
    Salut à tous,

    je reviens vers vous car j'ai réussi à avoir ce que je souhaitais et je le partage, histoire de clôturer la conversation
    Je me suis penché dessus et avec l'aide d'un ami voici ce que nous obtenons (et ça marche !) :

    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
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    If MsgBox("Etes-vous certain de vouloir mettre à jour l'ensemble des composants ?", vbYesNo, "Demande de confirmation") = vbYes Then
     
        'Compter le nombre de composants
        stp = False
        i = 0
        n = 3
        While Not stp = True
            If Cells(n, 1) <> "" Then
                i = i + 1
            Else
                stp = True
            End If
            n = n + 1
        Wend
     
        Set Plage = Range("E3", "DE" & (2 + i))
     
        Plage.Clear
     
        'Mettre à jour pour chaque composant son plan de maintenance sur 2 ans
        stp = False
        n = 3
        While Not stp = True
            If Cells(n, 1) <> "" Then
     
                'identifier le num du composant
                numcomp = Cells(n, 3)
                'identifier le type de péridicite
                per = Sheets("Table_Composant").Cells(numcomp + 1, 7)
                If per = "C" Then
                    d = 7
                    k = 1
                Else
                    d = 1
                    k = 24
                End If
                'Mettre en mémoire les periodicite
                t1 = Sheets("Table_Composant").Cells(numcomp + 1, 8)
                t2 = Sheets("Table_Composant").Cells(numcomp + 1, 9)
                t3 = Sheets("Table_Composant").Cells(numcomp + 1, 10)
                t4 = Sheets("Table_Composant").Cells(numcomp + 1, 11)
                t5 = Sheets("Table_Composant").Cells(numcomp + 1, 12)
                'Remplir la ligne maintenance
                For j = 5 To 109
     
                    If t1 <> "-" Then
                        'vérifier date mise en service > date de semaine et commencer après une périodicité
                        If (((Cells(2, j) - Cells(n, 4)) / d) * k) >= 1 Then
                            'comparer les dates
                            If (((Cells(2, j) - Cells(n, 4)) / d) * k) Mod t1 = 0 Then
                                Cells(n, j) = "T1"
                            End If
                        End If
                    End If
                    If t2 <> "-" Then
                        If (((Cells(2, j) - Cells(n, 4)) / d) * k) >= 1 Then
                            If (((Cells(2, j) - Cells(n, 4)) / d) * k) Mod t2 = 0 Then
                                Cells(n, j) = "T2"
                            End If
                        End If
                    End If
                    If t3 <> "-" Then
                        If (((Cells(2, j) - Cells(n, 4)) / d) * k) >= 1 Then
                            If (((Cells(2, j) - Cells(n, 4)) / d) * k) Mod t3 = 0 Then
                                Cells(n, j) = "T3"
                            End If
                        End If
                    End If
                    If t4 <> "-" Then
                        If (((Cells(2, j) - Cells(n, 4)) / d) * k) >= 1 Then
                            If (((Cells(2, j) - Cells(n, 4)) / d) * k) Mod t4 = 0 Then
                                Cells(n, j) = "T4"
                            End If
                        End If
                    End If
                    If t5 <> "-" Then
                        If (((Cells(2, j) - Cells(n, 4)) / d) * k) >= 1 Then
                            If (((Cells(2, j) - Cells(n, 4)) / d) * k) Mod t5 = 0 Then
                                Cells(n, j) = "T5"
                            End If
                        End If
                    End If
                Next j
     
            Else
                stp = True
            End If
     
            n = n + 1
     
            If (((Cells(2, j) - Cells(2, 5)) / 7)) = Cells(1, 4) Then
                Cells(3, j).Select
            End If
        Wend
     
     
        MsgBox ("Mise à jour réalisée" & Chr(10) & Chr(10) & ("Nombre de composants = " & i))
     
     
     
    End If
     
    End Sub
    Cela pourrait paraitre inutile de prévoir sur 2 ans quelque chose de constant... Tout dépend de ce que l'on fait. Dans notre cas, nous cherchons et répartir au mieux la charge de travail et surtout éviter les superpositions d'opérations conséquentes (nos opé peuvent prendre 3 semaines...)

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/05/2014, 16h34
  2. Impossible de mettre a jour les plans de maintenance
    Par sqlakf76 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/11/2006, 18h06
  3. Pbs avec plans de maintenance sous l'agent SQL
    Par sheira dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 29/09/2005, 06h16
  4. Plan de maintenance
    Par simon76 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 01/09/2005, 17h45
  5. [debutant]Plan de maintenance sous sql serveur 2000
    Par christophebmx dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/05/2005, 12h18

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