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,
Je t'avoue que tu sais ce que tu veux obtenir mais ton explication ne me parle guère car je ne sais pas ce que tu as dans ton fichier ni ce que tu veux obtenir.
Tu peux sans doute avoir ton résultat en un seul passage mais il faudrait m'expliquer différemment ton besoin.
Au départ tu n'avais qu'une recopie décalée de 3 en 3 par paquets de 10 mais j'ai l'impression que cela ne fonctionne pas tout à fait ainsi car le résultat que tu as mis est totalement différent.
Tu as mis des données de la colonne CCR dont tu n'as jamais parlé ?
 

didcac

XLDnaute Occasionnel
Bonsoir gb,
Cela m'a pris du temps, car j'ai essayé de (mieux) réécrire les nouveaux Noms "plus explicites", et j'ai alors vu que j'avais fait quelques erreurs dans la version envoyée. Aussi, en relançant et testant pas mal, je me suis aperçu que c'est finalement parfaitement bon !!! C'est bien la totalité des fiches qui est traitée (pour un Module entier donné, tel que Assist CE, par exemple). C'est super !! C'est ce que je souhaitais.
C'est peut-être le bug de EVZ (il faut saisir 1 et pas 28 pour obtenir le bon résultat) qui m'avait perturbé dans mon analyse initiale, mêlé à un test partiel pour réduire la durée qui m'avait fait penser qu'on n'allait pas au bout du traitement avec tout le monde (et les noms de famille sont moins évocateurs que "Sté_A Assist CE1"). Et ces fiches ainsi astucieusement réécrites font parfaitement ressortir ce que génère vraiment la Macro : ça a été le juge suprême. On a bien le traitement des 28 individus potentiels.
Mais la durée est impressionnante : 4 heures 50 minutes ! (juste pour 1 Module...).
Navré de t'avoir laissé entendre qu'il y avait un souci.
En revanche, si tu peux juste corriger je te prie EZ par DZ, et surtout permettre (sans déclencher un message de bug) de mettre 0 (zéro) à colonnes de EVZ, ce serait parfait. Car pour 2 des 5 Modules, il ne le faut pas "actif".

Cette méthode de Paramètres est vraiment bien.
J'ai un dernier souci dans ma base, qui n'a rien à voir (et assez simple en comparaison), qui pourrait peut-être convenir à cette méthode.
Je souhaiterais pouvoir modifier une écriture dans une cellule (plusieurs cellules que je sélectionnerai) de la façon suivante :
• Saisir le mot (ou suite de caractères, tenant compte de la casse) à rechercher dans des cellules
• Saisir le mot de remplacement, qui devra écraser toute donnée dans la cellule cible (seul le mot de remplacement restera tout seul, évidemment)
Cela ressemble au Menu Rechercher/Remplacer, sauf que là il faut tout écraser, et pas substituer seulement le nouveau mot à l'ancien.
Exemple :
Texte dans une Cellule quelconque : (D°Com 2014, orga Sfa 2015 avec Mr MARTIN)
Mot spécifique recherché : D°Com (avec possibilité de mettre par exemple un espace avant et/ou après, en cas de besoin)
Mot de remplacement : Direction de la Communication
Objectif : voir finalement dans cette cellule (et d'autres si plusieurs sélectionnées) : Direction de la Communication (et rien d'autre)
Vois-tu comment faire ?
Merci.
Et encore bravo pour le premier solutionnement !!
 

gbinforme

XLDnaute Impliqué
Aussi, en relançant et testant pas mal, je me suis aperçu que c'est finalement parfaitement bon !!!
Bonsoir didcac,
Tu me rassures car je n'avais pas compris où se situait le problème.
Pour tes colonnes de EVZ je t'ai rajouté une case à cocher pour gérer son utilisation.
Je t'ai totalement changé la création de la feuille des fiches, ce qui devrait donner un résultat bien plus rapide.

Pour tes modifications, je les ai rajoutées sur le formulaire avec une vérification des cellules concernées avant modification en tenant compte ou non de la casse avec une case à cocher.

Bons tests et bon week-end.
 

Pièces jointes

  • BASE retraitée (Données) li4.xlsm
    141.8 KB · Affichages: 4

didcac

XLDnaute Occasionnel
Bonjour gb,
Merci bien, mais hélas, cette fois il y a vraiment un bug...
En gros, c'est le 1er salarié qui est recopié n fois... et aucun des suivants dans la ligne !!
Je te joins ton fichier li4 avec mes données reconfigurées (aux nouveaux Noms explicites), et ainsi tu vas aisément comprendre. Je mets aussi li3 BIS (avec ces mêmes données) qui affichent le bon résultat.

Du coup, je n'ai pas véritablement pu vérifier la correction de EVZ (mais le premier est juste). J'imagine que tu as changé de principe : en décochant, c'est inactif (très bien), et pour générer l'affichage on n'est plus que sur 1 seule colonne à saisir (contenant toutes les données à dispatcher) ? (et donc plus "28"...).
Pour la rapidité, je n'ai pas pu tester, mais il me semble que cela va plus vite, en effet.

Pour le 2ème module correctif intégré, c'est très bien. Je me demandais s'il était possible d'avoir une alternative "pas à pas" pour visualiser également, malgré tout, de cellule en cellule (sens par Colonne, par défaut) ? Au cas où ? Sinon, tant pis.
Et il faudrait que je puisse délimiter un ensemble de cellules où faire cette action (et pas en dehors). Et le cas échéant la totalité, si je ne sélectionne rien avec la souris.

Merci bien. On est proche du but !
 

Pièces jointes

  • BASE retraitée (Données) li3 BIS.xlsm
    135.7 KB · Affichages: 1
  • BASE retraitée (Données) li4.xlsm
    140.5 KB · Affichages: 2

gbinforme

XLDnaute Impliqué
Bonjour,

Tu as raison j'avais saisi un 'p' à la place d'un 'l', au temps pour moi.
Tu as bien compris le fonctionnement plus simple.

Je me demandais s'il était possible d'avoir une alternative "pas à pas" pour visualiser
Je t'ai mis une liste des adresses et valeurs de sélection cochées que tu peux vérifier et décocher celles que tu ne souhaites pas modifier : seules celles restées cochées seront modifiées.
il faudrait que je puisse délimiter un ensemble de cellules
Je t'ai mis un bouton de "choix de plage" qui conserve ton choix déjà fait et si tu veux l'enlever, il te suffit de refaire le choix et choisir "Annuler".

Bon week-end
 

Pièces jointes

  • BASE retraitée (Données) li4.xlsm
    142.2 KB · Affichages: 3

didcac

XLDnaute Occasionnel
Bonjour gb,
Cette fois, on y est... presque !
Car tout fonctionne sauf EVZ. Il doit demeurer une mauvaise "lettre" de nouveau, car le même phénomène arrive pour ce traitement... C'est encore le salarié 1 qui affiche sa donnée "note" à tous (de la même société).

Sinon, les autres améliorations des remplacements sont très bien.
Juste une point concernant la conservation du choix. Tu veux dire que la fois suivante, en faisant "Choix plage" je devrais voir "réapparaître" la dernière sélection effectuée dans la petite fenêtre de saisie ? Car ce n'est pas le cas. Peux-tu préciser ce que tu as voulu faire d'un point de vue fonctionnel ? Le bouton Annuler que j'ai (et vois) ne fait que fermer la fenêtre.
Merci.
 

didcac

XLDnaute Occasionnel
gb,
Petit rajout très important : En testant la vraie base, je me suis aperçu qu'il y a un problème lié au fait qu'il y a parfois des fiches sans civilité voire prénom. Or, la Macro semble, de ce fait, les ignorer, et de surcroît ne poursuit alors pas sa recherche vers les autres personnes de la même ligne, et passe ainsi carrément à la fiche suivante !! Je perds beaucoup de données...
Peux-tu, je te prie, essayer de ne pas générer cette situation bien embarrassante ?
Merci !
Sinon, je confirme que ça va bien plus vite.
 

gbinforme

XLDnaute Impliqué
Bonjour didcac,

tout fonctionne sauf EVZ. Il doit demeurer une mauvaise "lettre" de nouveau,
Je n'avais pas compris ton explication : cela devrait être ce que tu veux maintenant si j'ai compris ce que tu veux faire enfin.

Le bouton Annuler que j'ai (et vois) ne fait que fermer la fenêtre.
Pas seulement car il annule le choix précédent mais tant que tu ne lances pas le choix de plage tu conserves l'ancien.

il y a parfois des fiches sans civilité voire prénom.
Tu as vraiment un classeur comme je les aime où rien n'ai vérifié et correct :mad: en plus d'une conception ne facilitant pas l'utilisation des données, comme celui que l'on m'a fait voir récemment où l'adresse était encodée NPAI ce qui faisait que le courrier n'arrivait pas !:mad:
J'ai tenu compte de tes anomalies mais ce n'ait pas ce qui va augmenter la vitesse du traitement;)

bon test
 

Pièces jointes

  • BASE retraitée (Données) li4.xlsm
    142.7 KB · Affichages: 4

didcac

XLDnaute Occasionnel
Bonjour gb,
Cette fois, le test est concluant : cela marche parfaitement. Mais à 80 % !!
En fait, sur 4 des 5 lancements, 1 seul ne marche pas.
Test 1 : EA puis 22 puis EVZ : parfait
Test 2 : ABS puis 22 puis EXB : parfait
Test 3 : AZK puis 22 : parfait
Test 4 : BXC puis 5 : bug !!!
Test 5 : CCQ puis 3 : parfait
Sans doute un petit problème de paramétrage ? C'est bizarre, car même en changeant les valeurs sur les autres, eux continuent de fonctionner normalement...


Pour la deuxième partie (modifications de texte), j'ai remarqué deux choses :

1) En voulant supprimer des points d'interrogation parfois présents, en saisissant ? ou ??, la Macro semble ne pas comprendre que ce sont ces éléments à remplacer. "Choisir" me montre toutes les cellules de la plage, alors que normalement ce sont uniquement celles directement concernées par la présence du mot qui apparaissent. Et conséquence, toutes les cellules sont modifiées (à tort).

2) Par ailleurs, en enlevant Respect de la casse, j'ai voulu saisir 2 ou 3 mots (espacés d'un espace), en vue de sélectionner les cellules d'une plage contenant ces 2 ou 3 mots, pour au final les remplacer par d'autres mots (écrasant toujours les anciens mots). Et cela ne fonctionne pas. Y a-t-il un moyen "d'élargir" à cette possibilité, je te prie ? Cela me serait particulièrement utile !!
NB : J'ai bien conscience que je n'avais pas pensé à aborder ce point précédemment, et j'en profite pour m'excuser d'une manière générale des approximations de ma base que tu as fort justement soulignées précédemment...

Merci pour ton aide efficace.
 

gbinforme

XLDnaute Impliqué
Sans doute un petit problème de paramétrage
C'est plutôt parce que ton classeur répond à une autre structure avec ce paramètre.
Pas étonnant quand utilisant un classeur avec une conception hasardeuse et des informations anachroniques, les résultats voulus ne puissent être obtenus facilement. Si le classeur était conçu normalement, tu n'aurais pas besoin de ramer pour pouvoir l'utiliser.
"BXC puis 5 : bug !!!" je ne sais pas quel est ton bug car j'ai un résultat mais comme je ne sais pas ce que tu veux ?

en saisissant ? ou ??, la Macro semble ne pas comprendre que ce sont ces éléments à remplacer
Peut-être ne connais-tu pas que le point d'interrogation est un caractère générique qui remplace n'importe quel caractère ?
Si tu précèdes ton ? par ~ tu devrais obtenir le bon résultat.
toutes les cellules sont modifiées (à tort).
Non c'est toi qui ne connait pas le fonctionnement.:mad:

Y a-t-il un moyen "d'élargir" à cette possibilité
Il faudrait surtout vérifier qu'avec la fonction ctrl+f cela ne donne pas le même résultat.
En effet quand tu penses qu'ils sont "espacés d'un espace" ce n'ait pas nécessairement le cas car tu as peut-être un espace insécable visuellement non identifiable. Remplace ton espace par ? et tu verras si le résultat est le même.

C'est vrai que l'on est très loin de ton exemple de départ et je crois bien n'avoir jamais vu une telle base aussi curieuse où l'on empile tout et n'importe quoi.

Quel temps de traitement obtiens-tu maintenant ?

Bonne semaine.
 
Dernière édition:

didcac

XLDnaute Occasionnel
1) Voici en PJ ce que j'obtiens pour BXC avec 5 colonnes. Et je veux juste obtenir pareil que pour les autres, rien de nouveau. Les infos des 5 colonnes, copiées les unes au-dessous des autres à la suite, d'abord pour le 1er Lieu, puis idem pour le 2ème Lieu, puis 3ème Lieu jusqu'à (éventuellement) 28ème. Le même fonctionnement que les salariés.

2) Exact, je ne savais pas pour les vertus du ?, ni la tilde espagnole. J'ai fait alt+n puis ? (pour générer la tilde devant) et ça marche.

3) Oui, le résultat est le même avec ?.
Et j'ai bien vérifié avec command + F (sur Mac), et ça ne le fait pas. C'est normal, puisque le but est de pouvoir remplacer le contenu de la cellule par des mots que je saisis (en écrasant tout le reste, or c'est une chose que cette Commande ne fait pas). Tu as parfaitement réussi la Formule avec "un mot", mais penses-tu pouvoir l'adapter à 2 ou 3 mots ?
Exemple tout simple (contenu d'une cellule quelconque examinée) :
"il y a des pommes et des cerises rouges"
Mots à chercher conjointement (que je saisis) : pomme cerise (il y a sans doute un espace à prévoir ?)
à remplacer par (en écrasant) : cerises, pommes (syntaxe précise que je saisis)

Sinon, le temps de traitement me semble nettement meilleur. Mais je n'ai pas encore lancé la totalité, pour pouvoir mesurer la performance. Je te dirai ça plus tard.

Merci bien !
 

Pièces jointes

  • Capture d’écran 2021-05-25 à 14.29.30.png
    Capture d’écran 2021-05-25 à 14.29.30.png
    71.8 KB · Affichages: 10

gbinforme

XLDnaute Impliqué
Bonjour didcac,

jusqu'à (éventuellement) 28ème.
sauf qu'au départ tu avais précisé qu'il te fallait dupliquer 10 lignes
"il y a des pommes et des cerises rouges" Mots à chercher conjointement (que je saisis) : pomme cerise (il y a sans doute un espace à prévoir ?)
un espace à prévoir sans doute pas car tu voulais l'inclure dans ta recherche alors je t'ai mis un séparateur à choisir, selon ton besoin, initialisé à | et qui n'est pas utile si 1 seul élément.

En espérant que cela te donne satisfaction, bonne journée.
 

Pièces jointes

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

didcac

XLDnaute Occasionnel
Bonjour gb,
Le module de recherche est super bien !! Merci beaucoup.
La présence du séparateur est un atout de modularité. Je ne savais pas que tous ces caractères spéciaux étaient à ce point utilisés dans les formules informatiques, c'est bien pratique.

Concernant la partie réaffectation des lignes, le problème avec les Lieux a été en partie résolu. Les 28 données (éventuelles) sont bien gérées, mais la Macro continue de générer d'autres fiches du Module suivant à la suite, de manière inhabituelle... (étalées sur 22 colonnes, inappropriées du coup). De plus, bizarrement, alors que d'habitude la première ligne vient se positionner en première position, ici il y a un décalage de 6 lignes vides au début de la recopie...

En effet, il y a une sorte de cadre affectant chaque catégorie de Module. Comme je n'avais pas pensé que tu introduirais une notion de limites dans la Macro, je n'en avais pas reparlé (c'était indiqué dans le premier descriptif Excel). Peu importe.

Tout ceci m'a mis en alerte, et j'ai ainsi repeuplé de données "explicites" tout le fichier qui nous sert de TEST (les limites maximales partout !! pour au moins une Société).
Je le remets donc en pièce jointe ainsi transformé. Cela signifie, qu'au moins une des société a 28 personnes, 28 lieux et 600 conversations... C'est bien numéroté juste les 10 premiers et 10 derniers (soit 590, 591, etc, 598, 599 et 600, mais pas les valeurs entre grandement dupliquées pour faire vite).

Voici donc un rappel des paramètres :
Module 1 (Assist CE) : de EA à ABR (soit 28 fois 22 colonnes) puis EVZ / EXA : prévoir 28 lignes (maximum)
Module 2 (Secrét) : de ABS à AZJ (soit 28 fois 22 colonnes) puis EXB / EYC : prévoir 28 lignes (maximum)
Module 3 (Ont quitté Sté) : de AZK à BXB (soit 28 fois 22 colonnes) : prévoir 28 lignes (maximum)
Module 4 (Lieux orga) : de BXC à CCL (soit 28 fois 5 colonnes) : prévoir 28 lignes (maximum)
Module 5 (Obs) : de CCQ à ETV (soit 600 fois 3 colonnes) : prévoir 600 lignes (maximum)

J'ai lancé le test sous cette forme mieux fournie en données (28 Assist / 28 Secrét / 28 Ont quitté / 28 Lieux / 600 Obs), et j'ai constaté un comportement très différent qui me surprend :
Alors que précédemment, quand je lançais le calcul du 1er Module Assist CE, j'avais toutes les fiches Assist CE de la Société A, puis ensuite celles de la Société B, C, etc jusqu'à la dernière Société. Et c'est tout, on s'arrêtait là.
Ici, même si je demande de nouveau les 22 colonnes du 1er Module, j'ai bien sûr celles-ci copiées (donc 28 lignes de crées), mais immédiatement à la suite j'ai les 28 fiches du 2ème Module, et ensuite les 28 fiches du 3ème Module, toujours de la Société A. Et derrière arrivent aussi les Lieux mais là ils sont mal disposés (pas 5 colonnes seulement, mais étalés sur 22...) et derrière viennent les Conversations là encore mal disposées (pas 3 colonnes mais 22, alors que lorsque je lance "seulement" Conversations / Module 5, les 3 colonnes sont respectées...)
NB : par curiosité, j'ai copié 28 données dans la Société D, et alors le même phénomène s'est produit... avec enchaînement du Module suivant.
Je pense qu'il ne faut pas se limiter en nombre de lignes totales. Ma priorité absolue est de ne pas perdre de données. Si cela prend du temps, cela n'a pas trop d'importance. Je pourrai fort bien lancer la Macro par tranches de 200 ou 300 entreprises pour limiter la taille.
En lançant la Macro sur ma base, tu pourras voir ce que je tente de te décrire par toi-même et auras un moyen de simuler les modifications avec des données "parlantes".

De plus, si je passe au Module 2, même phénomène en cascade (copie des Module 3 / 4 / 5), mais cette fois sans le Module 1. Et ainsi de suite : Module 3 génère aussi 4 et 5, etc. Il n'y a que le Module 5 lancé qui n'affiche que Module 5 (mais limité à environ 80 lignes (au lieu des 600 nécessaires, mais sans doute pourras-tu paramétrer la bonne limite).

Encore merci pour ton aide ! J'espère que ça va marcher.
 

Pièces jointes

  • BASE retraitée (Données) li5 TEST.xlsm
    155.7 KB · Affichages: 2

gbinforme

XLDnaute Impliqué
Bonjour didcac,

ici il y a un décalage de 6 lignes vides au début de la recopie...
Pas tout à fait vides car tes cellules ont des formules qui créent des espaces ! :mad:
Avec un classeur aussi farfelu, l'on va de découverte en découverte...

il y a une sorte de cadre affectant chaque catégorie de Module
Il faut dire qu'empiler ainsi des données sans cohérence ne dénote pas une connaissance lumineuses des bases de données : pas étonnant que les résultats soient difficilement efficients.

les limites maximales partout !!

Je t'ai mis une rubrique dans le formulaire pour le formaliser en espérant que cela règle ton souci.

Module 5 (Obs) : de CCQ à ETV (soit 600 fois 3 colonnes) : prévoir 600 lignes (maximum)
Il faut dire que si l'on était parti de ton idée de dupliquer les lignes, pour en mettre 600 par ligne tu aurais dû faire une razzia sur les barrettes de mémoire.

Ma priorité absolue est de ne pas perdre de données.

Ce serait dommage effectivement surtout lorsque l'on n'a pas nécessairement le prénom ou la civilité d'une personne !:mad:

tu pourras voir ce que je tente de te décrire par toi-même et auras un moyen de simuler les modifications avec des données "parlantes".
Je t'avouerait que pour voir ce qui se cache dans ce fourre tout, il faut faire preuve d'une grande illumination et se trouver sur le bon chemin : tu as bien du mérite à fonctionner avec un tel classeur.

Bon courage pour arriver à un résultat
 

Pièces jointes

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

didcac

XLDnaute Occasionnel
Bonjour gb,
Merci bien.
Cette nouvelle rubrique dans le formulaire est top, et permet d'obtenir de bien meilleurs résultats.
On y est presque !!
Module 1 : parfaitement bon (et cette fois avec 28 valeurs...)
Module 2 : parfaitement bon
Module 3 : parfaitement bon
Module 4 : parfaitement bon (mais il persiste la bizarrerie évoquée hier qu'au lieu de venir se placer en ligne n°2 comme pour les 4 autres modules, il y a un trou de 6 lignes avant le positionnement de la première donnée. C'est curieux, et peut-être que cela a un rapport avec le souci suivant.
Module 5 : bon début, mais s'arrête de copier à la 102ème ligne !! Et pourtant je saisis bien 600 dans la nouvelle fenêtre.
C'est sans doute le paramétrage du maximum qui ne va pas : j'ai testé avec un maximum à 98 lignes, et il continue d'en afficher 102... Pourtant, avec 28, c'est bon, le nombre est bien respecté.
Peux-tu essayer de parfaire ce très bel ouvrage ?
Merci.
 

Discussions similaires