Copie de planning

Bonjour,

Je gère des équipes sur des maintenances à réaliser.

Dans ma feuille Excel se trouve pleins d'informations différentes sur les activités à réaliser, que je reporte directement dans une feuille synthèse par macro.

Mais seul une information me manque : le jour de réalisation et le nombre de jour.

En faite j'utilise ce genre de macro :

Sub Essai()

Sheets("Janvier-Juin").Range("G13").Copy

Sheets("Modulaire").Range("BO22").PasteSpecial

Application.CutCopyMode = False

Sheets("Janvier-Juin").Range("D13").Copy

Sheets("Modulaire").Range("C22").PasteSpecial

Application.CutCopyMode = False

Sheets("Janvier-Juin").Range("H13").Copy

Sheets("Modulaire").Range("BO27").PasteSpecial

Application.CutCopyMode = False

Sheets("Janvier-Juin").Range("I13").Copy

Sheets("Modulaire").Range("BO44").PasteSpecial

Application.CutCopyMode = False

End Sub

Cela me permet de créer ma feuille de synthèse.

Pour faire simple, ma feuille Excel se compose en 2 grosse colonnes :

1ère colonne : la liste de toute les activités

2ème colone : c'est un calendrier classé par semaine ou je met en surbrillance les jour ou l'intervention se déroulera.

je voudrais donc reporter cette datte avec le nombre de jour "surbrillancés" dans ma feuille "synthèse" sours forme :

25/12/214 5J (l'activité commence le 25/12-2014 et dure 5jours).

J'espère avoir été claire...

PS : j'ai mis en pièce jointe le planning.

Merci d'avance !

Romain !

41planing-romain.zip (28.50 Ko)

Bonjour,

Personne ne peut m'aider ?

Bonjour,

Il y a donc pas de solution au problème ?

Salut,

Ta demande n’est pas des plus claires. Tu ne fais pas références aux objets Excel. Tu dis : « dans ma feuille », mais tu ne dis pas de quelle feuille tu parles. Tu dis : « j’ai deux colonnes », mais dans tes deux feuilles tu as une quantité de colonnes.

Dans ton bout de code, on voit qu’il y a une feuille ‘Modulaire’, mais on ne sait pas si elle manque dans le fichier fourni ou si elle se trouve dans un autre fichier.

Alors fourni nous s’il te plait un exemple précis de ce que tu désires réaliser, sur la base d’un fichier complété si nécessaire ou d’un deuxième fichier.

A te relire.

Pardon,

je l'avoue, a me relire, ce n'est pas claire...

Alors, j'ai un planning d'un an, couper sur 6 mois réparti sur deux feuilles de calcul : Janvier-Juin et Juin-Décembre.

Les activités à réaliser sont dans le colonne E (activités).

Les cases en bleu dans le planning correspondent au jours de réalisation.

Par exemple, pour le changement de la pompe, elle se fera le 30 décembre 2014 et elle dure 4 jours (4 cases bleu) et cela correspond à la semaine 01 de l'année.

Je voudrai regrouper cette information ainsi que d'autres dans la feuille synthèse.

Pour l'ori, le nom de l'activité, le n°, l'info et la ref (colonne D, E, F, G et H) je me servirais de ce code :

Exemple pour le changement de la pompe, ligne 13 :

Sub Essai()

Sheets("Janvier-Juin").Range("E10").Copy

Sheets("Synthèse").Range("BO22").PasteSpecial

Application.CutCopyMode = False

Sheets("Janvier-Juin").Range("D10").Copy

Sheets("Synthèse").Range("C22").PasteSpecial

Application.CutCopyMode = False

Sheets("Janvier-Juin").Range("F10").Copy

Sheets("Synthèse").Range("BO27").PasteSpecial

Application.CutCopyMode = False

Sheets("Janvier-Juin").Range("G10").Copy

Sheets("Synthèse").Range("BO44").PasteSpecial

Application.CutCopyMode = False

Sheets("Janvier-Juin").Range("H10").Copy

Sheets("Synthèse").Range("GO22").PasteSpecial

Application.CutCopyMode = False

End Sub

Il me reste donc à faire une macro pour la date de réalisation, le nombre de jour et la semaine. (voir exemple changement pompe dans la feuille synthèse).

  • La date de réalisation dans la case BA33 de la feuille synthèse
  • le nombre de jour (nombre de cases bleu) dans le case CC33
  • le numéro de la semaine dans la case V12.
Je ne sais pas si la macro proposé pour la copie des cases est correct, enfaite, pour un meilleur confort, il faudrait que, lorsque je sélectionne l'activité (changement pompe) et que je démarre la macro, alors sa rempli la feuille.

Comme cela pour toute les activités.

J'espère que cela est plus claire..

Re,

Peut-être que je n’ai pas été très clair non plus, alors : Il nous faut absolument un fichier correct !!!!

Je t’ai fait remarquer que ton premier code faisait référence à une feuille ‘Modulaire’ qui n’existait pas. Tu me fournis un nouveau code qui fait référence à une feuille ‘Synthèse’, mais celle-ci n’existe pas non plus

A te relire.

roooh bah merde alors ! Désolé.. la pièce jointe ne s'est pas mise..

Désolé..

19planing-2014.zip (41.81 Ko)

Re,

Je n’ai traité que ta feuille ‘Janvier-Juin’ et j’ai ignoré la feuille ‘Juin-Décembre’. Dans ta ligne 6, j’ai placé des formules invisibles (couleur de police blanche) afin d’avoir des références de dates pour chaque jour.

Sur ta feuille ‘Synthèse’, j’ai effacé la cellule GO22 qui semblait être une erreur (dans ton dernier code, tu as cette référence à la cellule GO22, mais en fait ce renseignement ‘RF’ tu le veux dans la cellule J22 !! Aie, aie, aie !).

Dans ton explorateur VBA, j’ai supprimé les modules 1 et 3 car ils étaient vides, j’ai neutralisé la macro sur ta feuille ‘Janvier-Juin’ et la macro ‘Essai’ dans le module 2 que tu as créée à l’aide de l’enregistreur.

Dans le code de la feuille ‘Janvier-Juin’ j’ai placé une macro événementielle qui se déclenche lors d’un double-clic sur la feuille du même nom. Si le double clic n’a pas lieu dans une cellule de la plage E10:Exxxx ou que la cellule de cette plage est vide, il ne se passe quasi rien, autrement les reports désirés ont lieu et la feuille ‘Synthèse’ est sélectionnée.

J’ai considéré qu’il fallait additionner dans la cellule CC33 de la feuille ‘Synthèse’ le nombre total de cellules bleues de la ligne concernée (fais un essai avec l’activité ‘balai’).

Voici le code proposé :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i As Integer, Drapeau_Date As Boolean, Compteur_Jours As Integer

If Not Application.Intersect(Target, Range("E10:E" & Rows.Count)) Is Nothing Then
    If Target = "" Then Exit Sub
    With Sheets("Synthèse")
        .Range("BA33") = "" 'Seule cellule à vider car il se peut qu'il n'y ait aucun jour prévu pour cette activité, du moins sur le fichier exemple reçu
        .Range("BO22") = Target
        .Range("C22") = Range("D" & Target.Row)
        .Range("J22") = Range("H" & Target.Row)
        .Range("BO27") = Range("F" & Target.Row)
        .Range("BO44") = Range("G" & Target.Row)
        For i = 9 To Columns.Count ' De la colonne I à la dernière colonne
            If Cells(Target.Row, i).Interior.Color = RGB(0, 176, 240) Then
                If Drapeau_Date = False Then
                    Drapeau_Date = True
                    .Range("BA33") = Cells(6, i)
                End If
                Compteur_Jours = Compteur_Jours + 1
            End If
        Next i
        .Range("CC33") = Compteur_Jours & "J"
        .Select
    End With
End If

End Sub

Est-ce un début ?

A te relire.

NB : Je dois quand même te dire que ton fichier n’est pas des mieux construit.

27planing-2014-v1.zip (48.89 Ko)

Bonsoir,

Je te remercie pour ta réponse,

je regarde cela demain, et je te tiens au courant !

Ah petite erreur sur la case J22.. oui effectivement.

Oui, le fichier n'est pas des mieux construit, néanmoins, j'ai du effacé beaucoup de chose, dans l'entreprise où je suis, je dois respecter la confidentialité..

Merci,

Bonne soirée,

A demain.

Re,

Je voulais te faire remarquer que l'ossature du fichier laissait à désirer plus que le contenu. Mais bon, c'était juste une petite remarque - qui se voulait constructive - en passant.

A demain.

Bonjour,

Je n'ai pas encore vraiment regardé dans le détail, afin d'essayer de comprendre le code, mais j'ai juste remarqué qu'il manquait le numéro de semaine correspondant à la date de réalisation de l'activité, j'essaierais de trouver cela, je n'hésiterais pas à revenir pour demander conseil..

Par rapport à l'ossature du fichier, je suis preneur de toute les remarques, afin que je m'améliore dans le création de fichier Excel..

N'hésite pas à me donner des conseils afin que je fasse évoluer cette version et aussi de m'améliorer !

Merci !

Tchio !

Salut,

La macro que je t’ai proposée n’a pas été facile et je partage ton grand enthousiasme quant au résultat obtenu. Je vois que nous avons tous deux gardé intacte notre capacité à nous étonner, nous ne sommes pour le moins pas blasés

Pour le numérotage des semaines, je rencontre de grandes difficultés à cause de tes maudites cellules fusionnées (tu as par exemple fusionné d’une manière parfaitement inutile les lignes 2 et 3 ainsi que par exemple les colonnes I à N dans ces mêmes lignes) et j’ai donc dû me rabattre sur la ligne 6 que j’ai moi-même complétée pour trouver le numéro de semaine. Ceci a alors l’inconvénient que pour les dates des 30 et 31 décembre de l’année précédente, le numérotage des semaines ne se fait pas selon ta logique, mais selon la logique Excel (pour le ‘Changement de pompe’, la semaine 53 est trouvée). Est-ce gênant ?

A te relire.

Bonjour,

Je viens de regarder un peu plus dans le détail le ficher.

Je suis encore sur la macro que tu as réalisée pour essayer de la décrypter.

Il est vrai, je ne t'ai encore remercié, pour le temps que tu a passé à travailler pour moi !

Je ne sais quel niveau de difficulté été de faire ce genre de macro… étant très débutant.

Bref !

Je te remercie pour le travail que tu as, et que tu effectue encore sur mon fichier !

Pour les fusion inutile, je ne sais pourquoi..

A la base, c'est un fichier que j'ai récupéré, je me suis mis à l'améliorer, ajouter ce qu'il me semblé juste pour mon travail, et la je suis sur les macro afin d'optimiser le temps.. .enfin, Tu est sur les macro ^^).

Néanmoins, comment faire ce genre de planning avec plusieurs cases (correspondant au jours) et le numéro de la semaine sans fusionner …?

Tchio !

Re,

Yvouille a écrit :

Ceci a alors l’inconvénient que pour les dates des 30 et 31 décembre de l’année précédente, le numérotage des semaines ne se fait pas selon ta logique, mais selon la logique Excel (pour le ‘Changement de pompe’, la semaine 53 est trouvée). Est-ce gênant ?

On ne peut pas vraiment dire que tu as répondu à ma question. De plus je ne sais pas vraiment si le travail fourni te convient bien ou si tu as encore besoin d'aide.

Tchio77 a écrit :

Néanmoins, comment faire ce genre de planning avec plusieurs cases (correspondant au jours) et le numéro de la semaine sans fusionner …?

Regarde le fichier ci-joint, je te donne un exemple : ton ancienne ligne 3 a été supprimée, les cellules de la plage I2 :N2 ont été séparées et le texte inscrit dans la cellule I2 a été ‘Centré sur plusieurs colonnes’ sous ‘Format/Alignement/Horizontal’.

Cordialement.

Bonjour,

Oui, pour la semaine 53 cela pose problème, surtout pour la fin et début d'année, quand j'ai modifié ce fichier, je n'ai sans doute pas pensée aux années future, pour les dates et les semaines, comme tu l'as dit, j'ai donc fais selon ma logique et non celle d’Excel...

dans la version 3 de mon fichier, je ne savais que l'on pouvait faire cela, si je fais cela pour tout le reste, cela résous peut-être le problème des semaines ?

je vais tâcher de le faire..

Il me reste quand même une petite question, peux-tu me décrypter la macro que tu as réalisé pour moi ?

en effet, il y a des termes que je ne comprends pas..

Cela me permettra de m'améliorer et pour de prochains fichier, faire mieux que ce fichier-là..

Je te remercie de ton aide, du temps que tu passes pour ce fichier, de ta passion pour Excel... :p

Cordialement

Tchio !

Salut,

Mon fichier ‘planing 2014_V3’ ne t’a été présenté que dans le but de te montrer comment l’on peut éviter des cellules fusionnées. Mais quand un fichier est déjà trop avancé, c’est difficile de revenir en arrière au risque de complications inattendues. Par exemple je fais référence dans ma macro à la ligne 6 ; si tu supprimes la ligne 3 fusionnée inutilement, l’ancienne ligne 6 dont j’ai besoin dans ma macro va devenir la ligne 5 et ça ne passera plus ! Donc tant pis pour ton fichier, on va faire avec.

J’ai alors dû trouver une solution autre que celle de faire simplement référence aux dates que j’ai moi-même placées dans la ligne 6 pour déterminer la semaine. Normalement la solution un peu bricolée trouvée devrait te convenir.

C’est toujours difficile de détailler une macro pour une personne dont on ne connait pas le niveau de connaissance ; on ne sait jamais si on en dit trop ou pas assez. Je te propose alors que tu m’indiques plutôt toi les passages pour lesquels tu désires des explications (mais pas plus de 2 ou 3 à la fois, ou on va s’embrouiller). Si jamais tu peux poser tes questions directement dans le code sous forme de commentaire (avec un apostrophe devant ton texte afin qu’il apparaisse en vert dans la macro).

A te relire.

17planing-2014-v4.zip (48.30 Ko)

Bonjour,

Ok, enfaite, j'aurais du, dès le départ, avant de commencer à modifier, macro.. commencer par retravailler la structure du fichier.

Je note ' !

Sinon, le code marche super bien, je suis entrain de l'adapter pour la deuxième feuille "Juin-Décembre"

Évidemment, je suis d'accord, sans connaître le niveau de la personne, pas facile d'adapter le niveau...

Je vais alors te poser quelques questions, afin de comprendre au mieu la macro, sait-on jamais, pouvoir m'en resservir dans d'autres cas..

Commençons juste par les premières lignes :

'Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'If Target.Address(0, 0) = "D13" Then
'    Cancel = True
'    Call Essai
'End If
'End Sub

Je pense que la première ligne gère le double clic sur la cellule où je veux que la copie se fasse,

mais, que vient faire la cellule "D13" dans la deuxième ligne ?

Merci,

Re,

En lisant ta question, je me suis rendu compte que j’ai oublié de te parler d’une chose que j’avais mis en veilleuse, le temps d’avancer avec le reste de ton projet

Il s’agit de cela : comme tes deux feuilles ‘Janvier-Juin’ et ‘Juin-Décembre’ ont la même structure, il aurait peut-être été plus judicieux que je crée le code de manière à ce qu’il fonctionne pour les deux feuilles et non pas seulement pour l’une des deux, ce qui nous oblige maintenant à devoir en créer une sorte de copie pour qu’il fonctionne sur l’autre feuille également. Afin de ne créer qu’un seul code pour deux feuilles, il aurait fallu le placer sous ‘ThisWorkbook’ - et non pas sur le code de la feuille comme je l’ai fait - et adapter un ou deux petits trucs pour que ça fonctionne pour les deux feuilles désirées.

Mais d’un autre côté, je ne comprenais pas pourquoi tu n’avais pas mis l’année entière sur une seule feuille. Avec Excel 2003, on n’avait pas le choix : comme le nombre de colonnes étaient limité à 256, on ne pouvait pas placer les 365 jours de l’année. Mais comme tu indiques dans ton profil que tu travailles avec Excel 2013, j’avais prévu de te demander tôt ou tard si tu ne voulais pas passer toute l’année sur une seule feuille, ce qui me semblerait beaucoup plus logique (que tu scrolles de janvier à juin ou de janvier à décembre, ça revient au même, non ?). J'ai bien entendu pensé que tu avais récupéré ce fichier de je ne sais où - mais d'un utilisateur ne possédant pas de version postérieure à 2003 - raison pour laquelle l'année était ainsi divisée.

Alors, avant de te lancer dans la duplication de ma macro pour la feuille ‘Juin-Décembre’ ou de te lancer dans sa transformation pour qu’elle fonctionne sur les deux feuilles, regarde si tu ne veux pas balancer l’année entière sur une seule feuille (dans ce cas, tu dois enregistrer au préalable ton fichier .xls au format .xlsm).

Deux mots quand même sur le bout de macro que tu as mis dans ton dernier fil : il s’agissait d’une ancienne macro qu’il y avait sur le fichier que tu nous as présenté et que j’ai neutralisée en y plaçant des apostrophes devant (le texte devient vert), dans le seul but de te montrer les macros que je trouvais inutiles. La macro que j’ai mise en remplacement est également une macro événementielle (Worksheet_BeforeDoubleClick) qui se déclenche lors d’un double clic n’importe où sur la feuille concernée ; elle se trouve juste en dessous et est écrite en noir et bleu.

Après avoir été déclenchée par le double-clic, la ligne ci-dessous contrôle si ce double-clic a eu lieu dans la plage E10:E_dernière_ligne : si oui, le reste de la macro est déclenché, sinon la macro s’arrête là.

If Not Application.Intersect(Target, Range("E10:E" & Rows.Count)) Is Nothing Then

Dans ton ancien code neutralisé, la macro était également déclenchée par un double-clic n’importe où sur la feuille, mais – bizarrement – le code ne continuait que si le double clic avait été fait sur la cellule D13, vu la ligne ci-dessous. Pourquoi ??????????? Sur ta feuille, le fait d'effectuer un double clic sur la cellule D13 ne rime à rien.

If Target.Address(0, 0) = "D13" Then

A te relire.

Bonjour !

Ahh mais voilà l'explication !

Je ne comprenais pas pourquoi l'année été coupée en deux..

Alors je pense que la meilleure solution c'est de rassembler les deux.

Je vais donc procéder à du petit copier coller pour les semaines, et ensuite essayer de rajouter les formules dans la ligne 6.

Merci !

et, merci pour l'explication !

Je devrai m'en sortir maintenant, je n'hésiterais pas à revenir, merci pour tes conseils !

Une fois mon fichier terminé, je viendrai mettre résolu sur le post !

Bye

Je viens de voir un truc,

J'ai plusieurs couleurs dans mon planning, pour le bleu : RGB(0, 176, 240)

comment intégrer les autre couleur le vert et le rose ?

J'ai essayé plusieurs choses mais sans succès, comme par exemple :

If Cells(Target.Row, i).Interior.Color = RGB(0, 176, 240) or Cells(Target.Row, i).Interior.Color = RGB(0, 204, 102) Then

ça aussi mais sans succès..

If Cells(Target.Row, i).Interior.Color = (RGB(0, 176, 240)  or RGB(0, 204, 102)) Then

Autre point, dans excel, j'ai essayé de rajouter les semaines pour compléter l'année, mais excel ne veux pas aller plus loin que la colonne IV.. bizard.. mais ducoup, pas possible de rassembler les deux feuilles en une...

Merci,

Rechercher des sujets similaires à "copie planning"