Microsoft 365 A partir d'une base de données, transposer des données sur un planning selon les heures

gilcar

XLDnaute Nouveau
Bonjour je viens demander votre aide, c'est compliqué, je joint un fichier pour comprendre ma difficulté.
J'ai une base de données avec des heures différentes dans une journée, jusqu’à 8 courses dans une journée, effectué par deux véhicules.
L'idée est de transposer les données dans un calendrier mensuel comme dans mon fichier.
Le calendrier à été rempli manuellement par tranches de 15 minute.
je ne sais pas bien expliquer, c'est pour cela que je joint un fichier complet.
je vous remercie d'avance de votre aide et de ce challenge pas très simple.
 

Pièces jointes

  • heures_trsfrt.xlsx
    54.2 KB · Affichages: 17

GALOUGALOU

XLDnaute Accro
bonsoir gilcar bonsoir le forum
la solution que je vous propose
ajouter dans votre feuille Données une colonne pour identifier le véhicule 1 ou 2
un bouton macro "mise à jour" bascule toutes les données en colonnes dans une feuille base, utile à la formule matricielle qui récupère les informations dans la feuille tableau (perso je ne sais pas faire autrement)
la formule matricielle
VB:
=SIERREUR(INDEX(Base!$A$3:$H$1000;EQUIV(1;(Tableaux!M$1>=Base!$C$3:$C$260)*(Base!$D$3:$D$260>=Tableaux!M$1)*(Base!$E$3:$E$260=1)*(Base!$A$3:$A$260=Tableaux!$DA40);0);6);"")
un bout de macro
Code:
Sub ventilation2()
 j = Sheets("Base").Cells(36000, 1).End(xlUp).Row + 1
 For i = 2 To 32

Sheets("Base").Cells(j, 1) = Sheets("Données").Cells(i, 1)
Sheets("Base").Cells(j, 2) = Sheets("Données").Cells(i, 2)
Sheets("Base").Cells(j, 3) = Sheets("Données").Cells(i, 6)
Sheets("Base").Cells(j, 4) = Sheets("Données").Cells(i, 7)
Sheets("Base").Cells(j, 5) = Sheets("Données").Cells(i, 8)
Sheets("Base").Cells(j, 6) = Left(Sheets("Données").Cells(1, 6), 1)
j = j + 1
Next
End Sub
cdt
galougalou
 

Pièces jointes

  • heures_trsfrt v2.xlsm
    161.5 KB · Affichages: 4

gilcar

XLDnaute Nouveau
bonsoir gilcar bonsoir le forum
la solution que je vous propose
ajouter dans votre feuille Données une colonne pour identifier le véhicule 1 ou 2
un bouton macro "mise à jour" bascule toutes les données en colonnes dans une feuille base, utile à la formule matricielle qui récupère les informations dans la feuille tableau (perso je ne sais pas faire autrement)
la formule matricielle
VB:
=SIERREUR(INDEX(Base!$A$3:$H$1000;EQUIV(1;(Tableaux!M$1>=Base!$C$3:$C$260)*(Base!$D$3:$D$260>=Tableaux!M$1)*(Base!$E$3:$E$260=1)*(Base!$A$3:$A$260=Tableaux!$DA40);0);6);"")
un bout de macro
Code:
Sub ventilation2()
 j = Sheets("Base").Cells(36000, 1).End(xlUp).Row + 1
 For i = 2 To 32

Sheets("Base").Cells(j, 1) = Sheets("Données").Cells(i, 1)
Sheets("Base").Cells(j, 2) = Sheets("Données").Cells(i, 2)
Sheets("Base").Cells(j, 3) = Sheets("Données").Cells(i, 6)
Sheets("Base").Cells(j, 4) = Sheets("Données").Cells(i, 7)
Sheets("Base").Cells(j, 5) = Sheets("Données").Cells(i, 8)
Sheets("Base").Cells(j, 6) = Left(Sheets("Données").Cells(1, 6), 1)
j = j + 1
Next
End Sub
cdt
galougalou
Bonjour, je reviens vers vous pour un complément d'info, d'abord un gran merci de votre réponse, une question dans mon fichier serait-il possible de ne pas utiliser la feuille bas, et de n'employer que la feuille données.
Autres question, je travaille avec la version 365, est ce que cela fonctionne également avec des version antérieure?
D'avance merci de votre retour.
amicale salutations.
 

GALOUGALOU

XLDnaute Accro
re
mon fichier serait-il possible de ne pas utiliser la feuille bas,
la feuille base est une feuille intermédiaire utile au bon déroulement de la macro, ou aucun collaborateur ne doit saisir ou supprimer des données. Elle est renseignée par le bouton mise à jour.
Vous pouvez très bien la masquer pour la rendre invisible. (voir classeur ci-joint)
il est certainement possible de mettre au point une macro qui effectuerait le travail sans la feuille base, mais comme ça, comme dit plus haut, je ne sais pas
je travaille avec la version 365, est ce que cela fonctionne également avec des version antérieure?
perso j'utilise 2016 et les formules fonctionnent, je pense que cela doit être le cas pour les versions antérieures (au moins jusqu'à 2010.)
cdt
galougalou
 

Pièces jointes

  • heures_trsfrt v2.xlsm
    161.6 KB · Affichages: 5
Dernière édition:

gilcar

XLDnaute Nouveau
Hello, super merci de votre réponse, je travaille actuellement sur le mois de janvier, si je veux le mois de février, que préconiser vous, ( créer une autre feuille ou continuer sur la même feuille?)
Encore merci de votre aide.
Amicale salutations.
 

GALOUGALOU

XLDnaute Accro
re
ce n'est pas la même problématique. La macro a été conçue pour une feuille.
Je vous propose une solution différente ou chaque mois est égal à une feuille.
Dans la feuille Tableaux, deux cellules reçoivent l'année et le mois. Ce choix est déterminent pour tout le classeur. La sélection du mois déclenche la macro "mise à jour," ce qui actualise votre planning.

Dans la feuille planning la même formule matricielle que dans le fil 2
La macro "mise à jour" se base sur la feuille active (mois) et la feuille base.
VB:
Sub ventilation1()

 j = 3
 For i = 2 To 32

Sheets("Base").Cells(j, 1) = ActiveSheet.Cells(i, 1)
Sheets("Base").Cells(j, 2) = ActiveSheet.Cells(i, 2)
Sheets("Base").Cells(j, 3) = ActiveSheet.Cells(i, 3)
Sheets("Base").Cells(j, 4) = ActiveSheet.Cells(i, 4)
Sheets("Base").Cells(j, 5) = ActiveSheet.Cells(i, 5)
Sheets("Base").Cells(j, 6) = Left(ActiveSheet.Cells(1, 3), 1)
j = j + 1
Next
End Sub
des formules dans les différentes feuilles mettent les dates à jour automatiquement, par conséquent dans l'événement feuille, une macro protège les feuilles concernées
 

Pièces jointes

  • heures_trsfrt v3.xlsm
    259.4 KB · Affichages: 6

gilcar

XLDnaute Nouveau
re
ce n'est pas la même problématique. La macro a été conçue pour une feuille.
Je vous propose une solution différente ou chaque mois est égal à une feuille.
Dans la feuille Tableaux, deux cellules reçoivent l'année et le mois. Ce choix est déterminent pour tout le classeur. La sélection du mois déclenche la macro "mise à jour," ce qui actualise votre planning.

Dans la feuille planning la même formule matricielle que dans le fil 2
La macro "mise à jour" se base sur la feuille active (mois) et la feuille base.
VB:
Sub ventilation1()

 j = 3
 For i = 2 To 32

Sheets("Base").Cells(j, 1) = ActiveSheet.Cells(i, 1)
Sheets("Base").Cells(j, 2) = ActiveSheet.Cells(i, 2)
Sheets("Base").Cells(j, 3) = ActiveSheet.Cells(i, 3)
Sheets("Base").Cells(j, 4) = ActiveSheet.Cells(i, 4)
Sheets("Base").Cells(j, 5) = ActiveSheet.Cells(i, 5)
Sheets("Base").Cells(j, 6) = Left(ActiveSheet.Cells(1, 3), 1)
j = j + 1
Next
End Sub
des formules dans les différentes feuilles mettent les dates à jour automatiquement, par conséquent dans l'événement feuille, une macro protège les feuilles concernées
Bonjour, un grand merci de votre compétence je pense pouvoir gérer la suite, je ne manquerais pas de revenir vers vous en cas de problème.
je vous souhaite une bonne continuation.
amicale salutations.
 

Discussions similaires

Statistiques des forums

Discussions
312 214
Messages
2 086 311
Membres
103 175
dernier inscrit
abcc