Marco Boucle pour créer une nouvelle Base de données

jlbcall

XLDnaute Occasionnel
Bonjour,

Je ne suis par un expert en VBA et fait mes macros avec l'enregistreur.
Dans ce nouveau fichier j'ai besoin de faire des boucles ( me semble-t-il).
J'ai deux onglets qui doivent me permettre de construire une nouvelle base de données.
Le principe est le suivant:
Onglet Calendrier = des dates sur lesquelles on affecte un code : ex pour le 01/01/209 le code HIV_DIM
Sur le second onglet = des données en fonction de codes sur plusieurs lignes et colonnes.
Le dernier onglet et celui que j'aimeraisque la macro construise:
Elle doit reprendre la premier date du 1er onglet et venir copier toutes les lignes et colonnes qui se rapporte à se code.
Exemple pour le 02/01/09 le code VAC_Me est affecté à cette date et les données pour ce code se composent de 12 lignes qui faut copier coller.
En rajoutant pour ces 12 lignes la date du 02/01/19 en colonne A.

Est il possible si dans les dernière date je dépasse le nombre de ligne Excel d'avoir un avertissement car je peux avoir une base de données sur deux ans ou trois ans et des données par lignes qui vont de 2000 à 300 lignes.


J'espère avoir été compréhensible. merci d’avance pour votre aide
Bonne journée à tous
 

Pièces jointes

  • Test.xlsx
    25.8 KB · Affichages: 7

Efgé

XLDnaute Barbatruc
Re
Une seconde proposition qui prend mieux en compte le dépassement possible.
Restitution des 1 048 574 premières lignes de résultats avec message le précisant
Pour remplir entièrement la feuille le traitement dure 10,52 secondes dont 4,18 uniquement pour coller le résultat.

Je suis intéressé par des améliorations éventuelles..
Cordialement
 

Pièces jointes

  • Test_2.xlsm
    40.3 KB · Affichages: 12

jlbcall

XLDnaute Occasionnel
Bonjour Efgé


Merci pour tes deux propositions , si je peux une nouvelle fois te solliciter est -il possible que les entêtes de colonnes qui peuvent changer ainsi que le nombre de colonne à copier pourrait être intégrer dans la macro.
En gros est-il possible de faire un copier coller des entêtes de colonnes et qu'en fonction du nombre de colonne dans l'onglet Data la macro prennent toutes les données à copier. car parfois je peux avoir jusqu’à la colonne JZ des données à recopier sur Report.

Merci d'avance et belle journée
 

Efgé

XLDnaute Barbatruc
Re
Ca ne vas pas du tout, je n'avais pas vu que pour un code donné toutes les lignes n'étaient pas les mêmes.:
1028259


Je passe la main ;)

Cordialement
 

jlbcall

XLDnaute Occasionnel
Encore moi

Quand je copie de nouvelles données ou en efface dans le classeur Test 3 la macro se stop à ce niveau :
For K = 1 To D(TCalend(i, 4))(2)
a quoi correspond cette ligne?

Merci.
 

Pièces jointes

  • Test_3 (1).xlsm
    58.9 KB · Affichages: 5

Efgé

XLDnaute Barbatruc
Bonjour jlbcall, le fil, le forum

En espérant que la demande est toujours d'actualité, j'ai revu ma copie,

Quand je copie de nouvelles données ou en efface dans le classeur Test 3 la macro se stop à ce niveau :
For K = 1 To D(TCalend(i, 4))(2)
Ce souci venait du fait que des journées (le 19/02 par exemple) font appel à des codes inexistants dans la base, ce qui n'était pas précisé dans la demande.
C'est résolu. Si la date ne correspond a aucun code, on ne la prend pas en compte.

Le nouveau tableau prend en compte toutes les lignes, différentes les unes des autres, pour chaque code.

Cordialement

EDIT: Je vien de voir qu'une solution Pwer Query a été donnée ici
 

Pièces jointes

  • Test_4.xlsm
    40.7 KB · Affichages: 4
Dernière édition:

Discussions similaires