Dhaulagiri
XLDnaute Nouveau
Bonjour,
Je souhaite automatiser un traitement. Je suis assez à l'aise avec la plupart des fonctions d'Excel avec les formules mais je n'ai presque jamais utilisé la programmation dans ce logiciel. J'ai déjà programmé un peu dans d'autres environnements.
Je sais que ce que je dois faire est possible mais je ne sais pas comment me lancer et souhaiterais obtenir votre aide pour pouvoir ensuite automatiser d'autres traitements du même genre, dès que j'aurai compris le principe dans Excel.
Une rapide description: je recois une table dans laquelle je dois récupérer des informations pour les intégrer dans une autre table de structure différente. Je vous joins un extrait en PJ (un onglet SOURCE et un onglet CIBLE)
Les données concernent des horaires d'autocars à différents arrêts.
Dans la source, chaque enregistrement décrit la desserte d'un arrêt par une ligne à une heure précise. Pour chaque arrêt, on a deux enregistrements: l'heure d'arrivée à l'arrêt et l'heure de départ de l'arrêt. En pratique, ce sont les mêmes mais ce ne sera peut-être pas toujours le cas. Deux exceptions: l'arrêt de départ de la ligne et l'arrêt terminus. Le premier possède uniquement une heure de départ et le second, une heure d'arrivée.
Les attributs sont les suivants:
NOM_REDUIT_ARRET: code alphanumérique unique de l'arrêt
HEURE: horaire à l'arrêt en secondes
TYPE: type d'horaire (D: heure de départ, A: heure d'arrivée)
COURSE: code de la course (dans le jargon du transport, une course correspond à une ligne d'autocar parcourue à un moment donné. Exemple: la ligne A qui part à 7h14 et qui arrive à 8h23 est une course différente de la ligne A qui part à 7h44 et arrive à 8h53)
IDAP: identifiant numérique unique de l'arrêt
Dans la cible, les attributs sont les suivants (la structure correspond au modèle Google Transit, pour ceux qui connaissent)
TRIP_ID: code de la course
ARRIVAL_TIME: heure d'arrivée à l'arrêt
DEPARTURE_TIME: heure de départ de l'arrêt
STOP_ID: identifiant de l'arrêt
STOP_SEQUENCE: numéro d'ordre de desserte de l'arrêt dans la course
Ce que je dois faire, pour chaque code arrêt unique (NOM_REDUIT_ARRET ou IDAP peu importe):
> copier la valeur de IDAP dans STOP_ID
> copier la valeur de COURSE dans TRIP_ID
> créer un numéro d'ordre dans STOP_SEQUENCE pour chaque arrêt. On commence par 1 et on incrémente tant que le TRIP_ID ne change pas. Dès qu'il change, on recommence à 1.
> tester la valeur de TYPE: si A, alors copier HEURE dans ARRIVAL_TIME. Si D, alors copier HEURE dans DEPARTURE_TIME. Pour l'instant, ce test ne sert à rien puisque les deux valeurs sont identiques mais, comme je le disais, cela pourrait changer.
> remplacer le format en secondes par un format HH:MM:SS (je sais le faire avec la formule TEMPS())
Je suis capable de faire certaines de ces opérations individuellement mais pour tout mettre en VBA, c'est une autre affaire.
A ceux qui ont bien voulu lire jusqu'au bout, je dis merci. Un autre merci à ceux qui auront fait l'effort de comprendre mon problème. Quant à ceux qui m'apporteront leur aide pour tout ou partie du problème (les petits ruisseaux font les grandes rivières), ils auront droit à 3 mercis. Non 4, soyons fous!
A bientôt,
Dhaulagiri
Je souhaite automatiser un traitement. Je suis assez à l'aise avec la plupart des fonctions d'Excel avec les formules mais je n'ai presque jamais utilisé la programmation dans ce logiciel. J'ai déjà programmé un peu dans d'autres environnements.
Je sais que ce que je dois faire est possible mais je ne sais pas comment me lancer et souhaiterais obtenir votre aide pour pouvoir ensuite automatiser d'autres traitements du même genre, dès que j'aurai compris le principe dans Excel.
Une rapide description: je recois une table dans laquelle je dois récupérer des informations pour les intégrer dans une autre table de structure différente. Je vous joins un extrait en PJ (un onglet SOURCE et un onglet CIBLE)
Les données concernent des horaires d'autocars à différents arrêts.
Dans la source, chaque enregistrement décrit la desserte d'un arrêt par une ligne à une heure précise. Pour chaque arrêt, on a deux enregistrements: l'heure d'arrivée à l'arrêt et l'heure de départ de l'arrêt. En pratique, ce sont les mêmes mais ce ne sera peut-être pas toujours le cas. Deux exceptions: l'arrêt de départ de la ligne et l'arrêt terminus. Le premier possède uniquement une heure de départ et le second, une heure d'arrivée.
Les attributs sont les suivants:
NOM_REDUIT_ARRET: code alphanumérique unique de l'arrêt
HEURE: horaire à l'arrêt en secondes
TYPE: type d'horaire (D: heure de départ, A: heure d'arrivée)
COURSE: code de la course (dans le jargon du transport, une course correspond à une ligne d'autocar parcourue à un moment donné. Exemple: la ligne A qui part à 7h14 et qui arrive à 8h23 est une course différente de la ligne A qui part à 7h44 et arrive à 8h53)
IDAP: identifiant numérique unique de l'arrêt
Dans la cible, les attributs sont les suivants (la structure correspond au modèle Google Transit, pour ceux qui connaissent)
TRIP_ID: code de la course
ARRIVAL_TIME: heure d'arrivée à l'arrêt
DEPARTURE_TIME: heure de départ de l'arrêt
STOP_ID: identifiant de l'arrêt
STOP_SEQUENCE: numéro d'ordre de desserte de l'arrêt dans la course
Ce que je dois faire, pour chaque code arrêt unique (NOM_REDUIT_ARRET ou IDAP peu importe):
> copier la valeur de IDAP dans STOP_ID
> copier la valeur de COURSE dans TRIP_ID
> créer un numéro d'ordre dans STOP_SEQUENCE pour chaque arrêt. On commence par 1 et on incrémente tant que le TRIP_ID ne change pas. Dès qu'il change, on recommence à 1.
> tester la valeur de TYPE: si A, alors copier HEURE dans ARRIVAL_TIME. Si D, alors copier HEURE dans DEPARTURE_TIME. Pour l'instant, ce test ne sert à rien puisque les deux valeurs sont identiques mais, comme je le disais, cela pourrait changer.
> remplacer le format en secondes par un format HH:MM:SS (je sais le faire avec la formule TEMPS())
Je suis capable de faire certaines de ces opérations individuellement mais pour tout mettre en VBA, c'est une autre affaire.
A ceux qui ont bien voulu lire jusqu'au bout, je dis merci. Un autre merci à ceux qui auront fait l'effort de comprendre mon problème. Quant à ceux qui m'apporteront leur aide pour tout ou partie du problème (les petits ruisseaux font les grandes rivières), ils auront droit à 3 mercis. Non 4, soyons fous!
A bientôt,
Dhaulagiri