Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

gbinforme

XLDnaute Impliqué
Bonjour didcac,

il y a un trou de 6 lignes avant le positionnement de la première donnée.
Je t'ai déjà donné la solution : tu as des formules qui génèrent des espaces en ligne 3 et pour te le faire peut-être comprendre j'ai rajouté un "x"
Avec des formules, les cellules ne sont pas vides même si tu ne vois rien.

C'est sans doute le paramétrage du maximum qui ne va pas
Je t'ai rajouté une ligne test avec 1800 cellules (600x3 !) et tu verras toi-même qu'il y a 600 lignes

Si tu n'en as que 102 c'est que les autres ne sont pas documentées correctement.

mais il persiste la bizarrerie

Avec une base aussi bizarre, cela me semble normal que tu en trouves.
Je me demande ce que l'on peut bien faire avec de telles données mais les résultats fournis sont soumis à poser des soucis de fiabilité.

à toi de voir.
 

Pièces jointes

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

didcac

XLDnaute Occasionnel
Bonjour gb,
Super !!!
Tout fonctionne parfaitement.
En effet, je croyais avoir entièrement peuplé une des lignes test pour le Module 5, mais non, d'où le nombre < 600 affiché chez moi. Désolé !!
J'ai bien tout pigé, grâce à tes explications.
Je tiens à te remercier vivement pour ta patience et amabilité d'une part, et à saluer ta superbe compétence dans Excel d'autre part.
Encore bravo et bonne journée. Je devrais pouvoir me débrouiller avec ce magnifique outil d'aide à mon paramétrage bien compliqué mais qui prend peu à peu forme.
Merci.
 

gbinforme

XLDnaute Impliqué
Bonjour didcac,
Merci pour ton sympathique retour et bon courage à toi pour traiter tes données.

Si tu peux me donner la duré de traitement sur ton classeur réel, je t'en remercie d'avance.
 
Dernière édition:

didcac

XLDnaute Occasionnel
Bonjour gb,
Je n'ai pas encore pu lancer le traitement global, car je continue de retravailler en amont les données. Mais à mon avis, ça ira vite.
Et à ce propos, est-il possible, avec peut-être un petit mot-clé, ou une astuce quelconque, de sélectionner plusieurs plages de colonnes en même temps ?
Autrement dit : saisir par exemple M3:M7 et aussi (pour le même traitement) R4:R9 (et aussi d'autres comme T3:T7, V3:V8, etc).
Merci.
 

gbinforme

XLDnaute Impliqué
Bonjour didcac,

Tu n'as pas besoin d'astuce, il te suffit d'utiliser les fonctions excel : tu sélectionnes une plage, tu saisis à la suite ";" et tu sélectionnes une autre plage, et tu continues autant que tu veux.
 

didcac

XLDnaute Occasionnel
Bonjour gb,
OK, merci, en effet, c'est la solution. Astuce n'était pas le mot, je parlais en fait des "signes" à utiliser... (et comment le faire).
Sinon, j'ai bien avancé sur le nettoyage préalable des données (bien fastidieux).
Et je me rends désormais compte qu'il me manque 3 colonnes utiles qu'il serait bien de faire apparaître dans le résultat... C'est "Téléphone" (colonne J), "Soirée" (colonne T) et "Date Soirée" (colonne U).
Pourrais-tu je te prie les ajouter, comme tu avais déjà inséré 3 autres colonnes précédemment. C'est strictement pareil, juste les rajouter en amont (colonnes 4 / 5 / 6 ?).
Merci, si tu peux voir ce point ! Cela me servirait bien.
 

gbinforme

XLDnaute Impliqué
Bonjour didcac,
Effectivement je n'avais pas pris la dernière version,
cela devrait être corrigé maintenant et bon courage pour la suite.
 

Pièces jointes

  • BASE retraitée (Données) li7.xlsm
    158.1 KB · Affichages: 5

didcac

XLDnaute Occasionnel
Bonjour gb,
J'ai passé beaucoup de temps à améliorer les données brutes de la base, et là c'est quasiment bon.
Et comme promis, je reviens vers toi pour te donner les performances du traitement.
La première mouture avait nécessité 4 heures et 50 minutes, et désormais on fait la même chose en 38 secondes !!! (100 857 lignes générées !). C'est spectaculaire !

Hélas, à mon grand désarroi, et sans comprendre pourquoi, alors que je pensais avoir bien vérifié le bon fonctionnement global de la Macro, il demeure quelques problèmes...
Merci de bien vouloir te pencher dessus, et j'espère que tu trouveras !

1er problème :
Pour les 3 premiers Modules (qui se ressemblent beaucoup : Assist CE / Secrét / Ont Quitté Sté : 22 colonnes & 28 lignes), alors que dans le fichier d'exemples cela fonctionne très bien (ils se mettent bien les uns à la suite des autres comme je t"avais demandé), dès que j'ajoute ne serait-ce qu'une nouvelle fiche, le comportement change ainsi :
Même s'il n'y a que 2 individus présents sur la ligne ajoutée, le programme génère et affiche 28 lignes (dont évidemment ici 26 vides), et ainsi de suite, à chaque fois (7 & 21 vides, 12 & 16 vides, etc). Et c'est pour ça que j'ai 100 857 lignes, soit 3602 ligne x 28 individus + 1 ligne d'en-tête.
Comment est-ce possible ?

Pour le Module 4 (Lieux orga = 5 colonnes & 28 lignes), c'est pareil : mais là, le problème existait déjà dans le programme (et je ne l'avais pas vu car comme j'avais testé exprès jusqu'au 28ème partout, je n'avais pas pensé qu'il aurait dû n'afficher que ceux présents, en évitant de générer les autres).
Ainsi, s'il y a 3 lieux au début , il en ajoute (systématiquement) 27 derrière, et quand il y en a 2 à la fin (même si en soi c'est idiot, car c'est saisi en réalité à la suite), il remplit 25 lignes au milieu.

2ème problème :
Pour le Module 5, là c'est sans doute un problème de "bornage de fin" qui manque : tout fonctionne très bien jusqu'au dernier message (Colonne ETV), mais immédiatement après le programme continue sa copie sur environ 54 colonnes qui suivent, et ça il ne faudrait pas. On voit alors affichés diverses données (nom, prénom, téléphone, année, etc).

J'ai mis des copies d'écran en PJ qui montrent bien les soucis : Module 1 "avant/après ajout" (mais c'est pareil pour les Modules 2 et 3), puis Module 4 et Module 5.

Merci !
 

Pièces jointes

  • Module 1 (de base, qui affiche correctement).jpg
    259.3 KB · Affichages: 11
  • Module 1 (après rajout d'1 fiche).jpg
    342.4 KB · Affichages: 9
  • Module 4 (montrant les 20 lignes vides).jpg
    325 KB · Affichages: 11
  • Module 5 (montrant en G94 la cellule ETW, en H94 ETX, etc 54 fois).jpg
    267.6 KB · Affichages: 11
  • Module 1 (de base, qui affiche correctement).jpg
    259.3 KB · Affichages: 11
  • Module 1 (après rajout d'1 fiche).jpg
    342.4 KB · Affichages: 9
  • Module 4 (montrant les 20 lignes vides).jpg
    325 KB · Affichages: 9
  • Module 5 (montrant en G94 la cellule ETW, en H94 ETX, etc 54 fois).jpg
    267.6 KB · Affichages: 10

gbinforme

XLDnaute Impliqué
Bonjour didcac,

Hélas, à mon grand désarroi, et sans comprendre pourquoi,
Je t'avais dit que dans ton test, tu avais des formules avec un résultat nul, qui créaient ce souci, car une cellule avec formule n'est pas vide, alors tu dois avoir le même problème dans ton maous classeur alors j'ai modifié la procédure en conséquence pour ignorer les formules.
Si ma correction répare tes soucis, le seul problème qui va rester c'est que tu n'auras pas le temps de boire un café pendant ton test.
Je ne suis pas surpris par les temps car j'avais changé la méthode pour écrire le résultat.
Voilà ton classeur test modifié en espérant que mon diagnostic a bien identifié la maladie.

Bon test et bon week-end à toi.
 

Pièces jointes

  • BASE retraitée (Données) li8.xlsm
    155.5 KB · Affichages: 2

didcac

XLDnaute Occasionnel
Bonjour gb,
Magnifique !! Bravo.
Cette fois, mes tests montrent que le Problème n°1 est entièrement résolu (Tests 1 à 4).
On est passé de 38 secondes à seulement 20 secondes. Et j'ai donc en effet été contraint de me mettre à l'Espresso...

Pour le Problème n° 2 (Test 5), c'est bon aussi, mais il persiste un petit souci de dimensionnement.
Si c'est juste un chiffre à changer, je te mets en PJ le rapport de débogage. Sinon, si ça te fait tout refaire, je pourrais apparemment contourner le problème en le faisant "en plusieurs fois". A l'heure actuelle, je pense être limité à environ 1.300 fiches (= lignes de la Base). Au-delà, je n'ai pas testé/simulé exactement où, mais ça bugue (erreur 1004).
Pour préciser, le nombre de fiches total est de 3.610.
NB : tu as bien fait de mettre un petit Mémo, car je me suis aperçu que tout était conforme, sauf que je saisissais CCQ / 3 / 1800, et c'est pour ça qu'il allait "au-delà"... En fait, au tout début, je mettais 600, mais comme il y avait alors d'autres soucis (inconnus) ailleurs, j'ai cru que je n'avais pas bien compris quoi saisir et avais changé par 1800 (quiproquo).

Question pratique : puis-je créer des onglets supplémentaires : Feuil3, Feuil4, Feuil5, Feuil6, Feuil7, en vue de stocker (par Copier-Coller) temporairement les résultats des divers lancements de la Macro pour les retravailler une dernière fois "globalement" (bien plus simple à dédoublonner qu'avec 80 colonnes distinctes !!) ?
Car comme il peut y avoir des formules cachées ou autres avec la Macro, je préfère demander d'abord avant de faire une erreur ou de perturber les résultats générés...

Merci !
 

Pièces jointes

  • Capture d’écran 2021-06-26 à 07.15.59.png
    71.7 KB · Affichages: 14
  • Capture d’écran débogage.jpg
    491.9 KB · Affichages: 13

Discussions similaires

Réponses
27
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…