VBA Archivage

Fermé
titom0135 Messages postés 2 Date d'inscription vendredi 5 mai 2017 Statut Membre Dernière intervention 10 mai 2017 - 5 mai 2017 à 10:18
titom0135 Messages postés 2 Date d'inscription vendredi 5 mai 2017 Statut Membre Dernière intervention 10 mai 2017 - 10 mai 2017 à 01:10
Bonjour, j'ai un petit problème je ne suis pas un pro de la programmation VBA et j'ai besoin de faire un fichier excel pour le travail et j'aurais besoin d'aide pour trouver le bon code.

Je vous explique,j'ai besoin d'entrer des données mensuel dans [Données] et lorsque j'appuis sur le bouton (Enregistrer) le tout dois s'enregistrer dans [MoisCourants] à la bonne date en l'occurrence. Lorsque je commence une nouvelle semaine les données dans [MoisCourant] doivent rester présente.



Ensuite, quand le mois est terminer je dois l'archiver dans [Archive]. Quand le second mois est complet je dois l'archiver de nouveau, mais à la suite du second et ainsi de suite.

2 réponses

phadeb Messages postés 86 Date d'inscription dimanche 2 avril 2006 Statut Membre Dernière intervention 13 mai 2017 21
7 mai 2017 à 17:38
Bonjour,

Pensez à faire une sauvegarde de votre fichier source car le VBA écrase les valeurs sans retour possible pendant vos tests

Pour enregistrer

- Boucle sur les lignes de la première feuille

- controle que le mois et l'année de la date en C1 de la première feuille est bien = au mois et année de la feuille mois courant, si non, mettre les bonnes dates dans N1 et R1 et le bon nom de mois dans A2 (et la bonne organisation de calendrier, soit programmer, soit copier coller depuis un modèle existant)

- si bon mois et année, faire un controle du champ B4 (premier jour de la semaine) et comparer avec une seconde boucle aux jours de la feuille mois courant en partant de A4 jusqu'a Y19, il faudra une boucle pour les lignes, une boucle pour les colonnes, on pourra ajuster les steps des lignes a 3 et des colonnes à 4 pour ne parcourir que les cellules souhaitées, (pour optimiser, sortir de la boucle si la cellule suivante + 3 colonnes a un fond gris, ou +2 lignes -21 colonnes en cas de dimanche

- une fois la correspondance des lignes trouvée, copier le vecteur de la première feuille dans la ligne de cellule trouvée + 2 lignes

- une boucle de contrôle de la bonne copie avant de vider les cellules de la première feuille (sinon message d'erreur)

- une dernière boucle pour vider les cellules de la première feuille

Pour archiver

- sélectionner de A1 a AB21, copier

- trouver dernière ligne de la feuille archive à avoir une bordure non standard (par les propriétés de la cellule), ou bien en faisant un end(xlup) depuis la dernière ligne d'excel, et en faisant +3 lignes puis coller (car dernière ligne du tableau est vide de valeur + un espace pour séparer les mois

Bonus


Si vous êtes inspirés, un bouton recover, qui fait l'inverse de ce qu'on vient de faire, c'est à dire récupér une date de l'archive vers le mois courant et une semaine du mois courant vers les données
--
0
titom0135 Messages postés 2 Date d'inscription vendredi 5 mai 2017 Statut Membre Dernière intervention 10 mai 2017
10 mai 2017 à 01:10
Je comprend le principe mais je n'arriver pas à faire le code
0