XL 2016 Duplication de lignes et copie

didcac

XLDnaute Occasionnel
Bonjour à tous,
Je cherche à créer une Macro pour dupliquer des lignes en recopiant à chaque fois des données (dans la même fiche), avant le lancement d'une nouvelle duplication de ligne plusieurs fois.
Puis, on relance l'opération jusqu'à traiter toutes les lignes.
J'ai résumé cela das un tableau EXCEL, prêt à l'emploi. Je peux aussi vous apporter des précisions, si besoin est.
Merci par avance de votre aide.
 

Pièces jointes

  • Description action de la Macro.xlsx
    9.7 KB · Affichages: 23

didcac

XLDnaute Occasionnel
Bonjour,
Merci d'avoir regardé mon sujet.
Oui, c'est vrai, mais il y a une petite nuance : une fois une première duplication faite, il faut aussitôt copier diverses données de cette ligne à un endroit déterminé, comme indiqué sur l'exemple avec des codes couleurs, avant de passer à la ligne suivante à dupliquer (et refaire la même opération).
Tu vois mieux ?
Comme il y a 3.000 lignes à traiter, ça fait 60.000 lignes à générer, in fine. D'où peut-être le VBA. Tu le maîtrises un peu ?
Merci.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Gbinforme, Didcac,
Juste pour comprendre. A chaque nouvelle ligne on transfère trois cellules en XYZ.
1- Le problème qui m'échappe est que s'il y a 10 lignes c'est qu'il y a 30 données à transférer donc ce sera aux cellules AF,AG,AH ? car les lignes devraient aller de la colonne A à la colonne AE.
2- La mise en couleur est elle juste didactique pour l'ex ou doit on mettre en couleur ?
 

didcac

XLDnaute Occasionnel
Bonjour sylvanu,
Merci de creuser le sujet... Oui, c'est parfaitement bien vu. J'ai essentiellement "décrit" les choses mais n'ai pas respecté la logique mathématique du visuel, désolé. Vous avez donc raison pour les noms de colonnes, et du coup on peut mettre les X Y Z n'importe où "après"...
Non, il n'y a aucune couleur à reporter.

En réalité, les vraies proportions sont bien plus importantes que cela (et pas forcément plus compliquées, la logique restant toujours la même). J'ai eu peur que ça perturbe les gens...
Vous pouvez résoudre cette "première" solution, avec plaisir, mais comme j'ai l'impression que vous comprenez bien ce qu'il faut faire, je vous joins aussi le fichier réel.
Vous vous apercevrez que la présente demande existe bien, mais à partir de la colonne EA (tout est expliqué sur la feuille Excel). Là, c'est la vraie place des colonnes !
Cette même routine, doit être utilisée 5 fois (pour 5 groupes de valeurs, positionnées pareil). Le tout, c'est d'arriver à la créer une première fois...

Comme, in fine, je dois obtenir le résultat dans le gros document, ce serait évidemment génial que vous y parveniez dedans directement.
Sinon, si vous ne pouvez faire que la version minimaliste, ce qui sera déjà très bien, j'essaierai de m'adapter et réécrire la Macro moi-même en inscrivant d'autres valeurs (en espérant y arriver, car je ne suis pas très doué).

Quoi qu'il en soit, merci de votre précieuse aide, car je galère !
Demandez-moi toutes précisions utiles.
 

Pièces jointes

  • BASE Test (Réaffectation de lignes).xlsx
    664.8 KB · Affichages: 7

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Pouvez vous fournir un fichier avec "de vraies données" mais anonymisées.
Car là avec deux lignes incomplètes, cela revient à coder en aveugle, sans test possible.
NB: On ne peut traiter que 1472 lignes sur une page XL, faire des swaps de feuilles va être compliqué.
( 2^20/712). Avez vous plus de 1472 lignes dans votre feuille ?
 

didcac

XLDnaute Occasionnel
Oui, il y a en tout 3610 lignes, mais ce n'est pas du tout un problème de faire plusieurs feuilles totalement distinctes. Je les utiliserai l'une après l'autre sans problème.
Je vous ai mis quelques lignes de plus, mais je ne peux pas anonymiser facilement. J'ai mis du temps pour en bidonner une seule, avec des données cohérentes. Si c'est pour vérifier l'affectation des données dans les Tests, j'ai rempli certaines colonnes stratégiques, la première et la dernière en écrivant exprès un texte explicite "première donnée de Assist CE", par exemple ou "dernière donnée de Secrét).

Merci.
 

Pièces jointes

  • BASE retraitée (Données) li2.xlsx
    131 KB · Affichages: 6

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Après quelques manips je préfère jeter l'éponge dès maintenant.
Je n'ai pris que la ligne 1 et copier celle ci 720 fois en Feuil2. ( soit 1 bloc )
J'obtiens un fichier de 5215ko, soit plus de 5Mo.
Donc juste pour une feuille soit 1472 blocs, cela ferait 7.67 Go, et encore on n'a rien copié dans les colonnes de droite.
Avec vos 3610 lignes en entrée, cela ferait 19Go. Toujours sans avoir commencé à travailler.
Ce n'est vraiment pas raisonnable.
Peut être serait il bon que vous ré analysiez le problème à la base et définissez votre besoin.
Il doit exister une autre méthode que celle ci pour arriver à un fichier moins volumineux.
Sorry.
 

didcac

XLDnaute Occasionnel
En fait, le poids n'est pas un problème, car le but est d'importer toutes ces données dans un SGBD. Ainsi, le poids va être colossalement réduit, puisque lui n'aura que les fiches et leur poids individuel "plume". Un fichier similaire avec ces données pèse environ 25 Mo...
Si votre programme fonctionne eu égard aux attentes en matière de données, vous pouvez tout à fait me l'envoyer, pas de problème.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Je me suis peut être mal exprimé.
Le fichier Excel sur une feuille fera 8Go. Après que vous le transfériez c'est une autre histoire.
Mais je suis incapable de gérer un tel fichier sur mon PC. C'est autant que la mémoire dont je dispose. Il travaillerait presque uniquement avec le SwapFile.
Désolé, sur ce coup, je préfère jeter l'éponge de suite.
Désolé. Peut être qu'un autre contributeur vous viendra à l'aide.
 

gbinforme

XLDnaute Impliqué
Bonsoir,
Avec ce que j'ai compris des explications, voici ce que je te propose car je pense qu'il n'est pas nécessaire d'insérer des lignes mais simplement de récupérer les informations individuelles que je met dans une seconde feuille.
Tu nous diras sans doute ce que tu penses de ma solution.
 

Pièces jointes

  • BASE retraitée (Données) li2.xlsm
    146.3 KB · Affichages: 7

didcac

XLDnaute Occasionnel
Bonjour gbinforme,
C'est très bien, bravo, parce que je n'avais pas imaginé cette façon de faire. L'idée de la copie intégrale n'était pas une nécessité. Je dois en revanche n'avoir que de la "ligne individuelle".
Toutefois, il faudrait pouvoir apporter quelques petites modifications / améliorations, pour que les données soient exploitables (actuellement hélas non).
J'ai besoin d'avoir d'autres rubriques sur la même ligne que ces "nouvelles lignes" générées, en vue de pouvoir les associer à des "tables" de données.
Il s'agit de :
• systématiquement : A, EZ, EUU
• quand EA (Assist CE) est traitée : série de EVZ à EXA (celle qui la concerne / numéro)

• quand ABS (Secrét) est traitée : série de EXB à EYC (celle qui la concerne / numéro)

tout ceci doit donc compléter chacune des lignes (générées par une recherche spécifique effectuée avec votre petite fenêtre de sélection).

En espérant que vous aller parvenir à effectuer ces améliorations primordiales.
Cordialement
 

gbinforme

XLDnaute Impliqué
Bonsoir,

Je me doutais bien que la demande initiale était assez minimaliste et c'est pour cela que j'avais misé sur une solution paramétrable, bien m'en a pris !

Voilà la copie complétée et j'espère exploitable : bon test
 

Pièces jointes

  • BASE retraitée (Données) li3.xlsm
    146.6 KB · Affichages: 6

didcac

XLDnaute Occasionnel
Bonjour gbinforme,
Merci beaucoup pour cette mouture corrigée. L'intégration des 3 rubriques-clés est parfaite (j'ai juste écrit par erreur EZ au lieu de DZ...).
Par contre, pour les "note", le fait de mettre 28 ne fonctionne pas. Apparemment, il faut mettre 1 (car la donnée est unitaire, 1 note pour 1 individu, et on n'a pas à agréger des colonnes qui se suivent, cette fois). Sinon, cela ne se positionne pas bien, collés sur la droite.
Mais, avec cette astuce d'utilisation, cela donne le bon résultat... Globalement, c'est bien fonctionnel.
NB : Mais quand on met 0 (zéro) dans la dernière colonne, au lieu de 28, ça bugue.

J'ai essayé d'analyser et comprendre le fonctionnement, et je fais le constat suivant :
Contrairement à ce que j'imaginais, cela traite non pas les fiches dans leur entièreté, mais la totalité des personnes du même "rang" (Assist CE n°1, en totalité). Ainsi, on doit refaire la même opération avec le paquet de 21 colonnes suivantes pour obtenir la totalité des personnes de rang n°2. Et au total, traiter séparément les 28 "paquets" de colonnes...
Ce n'est d'ailleurs pas du tout gênant en soi.
Est-ce exact ? C'est bien ainsi que tu l'as programmé ?
Je m'en suis aperçu en essayant d'écrire à un moment 44 colonnes, afin de traiter 2 personnes "d'un seul coup", et alors les données des 22 dernières colonnes se mettent "sur la droite" (donc non exploitables car sur la même ligne que les 22 premières...).

Dans le but, si possible, de "diminuer l'intervention humaine", probablement ici 700 lancements de Macro nécessaires sur cette base, je me pose la question suivante : à l'issue du premier traitement sous cette forme, peut-il y avoir une continuation du processus qui viendrait créer une nouvelle ligne (puis série de colonnes) juste au-dessous de la dernière cellule du traitement précédent ?
Autrement dit (en prenant volontairement par exemple seulement 300 lignes pour générer un calcul à l'ampleur raisonnable) :
Si, après un premier tour de piste, ta Macro génère 1.000 lignes complètes, correspondant donc selon moi à la copie des 22 caractéristiques (+ la 23ème déportée "note") de chaque personne présente de "rang 1" au sein des 300 entreprises sélectionnées, peut-on voir la Macro reprendre son travail à la ligne 1.001 (colonne A) et continuer ainsi de copier à la suite les données des personnes du rang 2 (donc aux caractéristiques inscrites en colonnes 23 à 44) ? Puis idem pour le rang 3 : de 45 à 66.
Et ainsi de suite jusqu'au 28ème rang ? De manière à avoir 300 fiches entièrement traitées d'une Catégorie d'individus (par exemple "Assist CE") en un lancement.
Avec la possibilité de refaire "pareil" pour les 4 autres Modules de données à traiter : Secrét, Ont quitté Sté, Lieux orga et Obs. Mais en réalité, la même structuration pourra servir, car tous ont 28 rangs. Seul Obs, qui en compte 600, sera à reparamétrer (légère modification du nombre de colonnes, je suppose).
Merci de ton retour. Et pour ton super travail !
Cordialement.

NB : je joins le fichier où il n'y a plus que 4 sociétés, et j'ai remplacé les noms par A1 (pour le 1er salarié de la première société A), A2 le second, B1 le 1er de la société B, etc, etc. Ainsi, tu verras mieux dans les tests où ça va se placer...
 

Pièces jointes

  • BASE retraitée (Données) li3 BIS.xlsm
    134.2 KB · Affichages: 6

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 913
Membres
101 837
dernier inscrit
Ugo