Compilation de deux onglets en un seul

Bonjour ,un nouveau fichier a vous soumettre dans lequel je souhaite compiler des données de deux onglets dans un seul mais en suivant une structure et une logique bien précise.
Les données des onglets seront a copier en fonction de ligne de production et de code article qui ont des structures différentes :"CR"et « CS » .
J’ai joint un fichier avec plus d’explications.
Bonne journée,
Franck .
test compilation.xlsm (1,6 Mo)

Bonjour
J’ai eu beau faire fonctionner mes neurones au maximum de leur capacité pas compris ceci :

« en alternant entre les code article CR et CS (Colonne « A »)et ce ligne par ligne de production (Colonnes « I » ). »

Colonne « I » il y a des chiffres quel rapport avec l’alternance entre les codes ???

Je reste perplexe

Désolé

Bonjour FFO ,
content de te retrouver !!
Mon explication est peut-etre un peu floue !!
Je te renvois le tableau avec l’onglet « recap » avec les lignes de chaque autres onglets copiées .
J’ai renommé les onglets sources en CODE ARTICLE CR & CODE ARTICLE CS ,pour plus de compréhension .
Chaque ligne de prod (de 1 à 7 ) peut contenir des code article en CS ou CR et c’est la synthèse de ces code par ligne et par code article que je souhaite obtenir .
Petite subtilité les ligne 1 & 2 en code CR sont regroupées .
J’espère être plus clair .
Franck .
test compilation.xlsm (1,6 Mo)

Après un étude approfondie des résultats attendus j’ai fini par comprendre
Il y a un lien entre chaque code colonne « A » attendu et leur indice colonne « I » que l’on utilise pour récupérer l’heureux élu dans l’onglet approprié même colonne
Cet indice doit correspondre
Dur dur dur !!!

Ci-joint ton fichier avec onglet « recap » en cellule « B1 » un bouton « Traitement »
Celui-ci scrute toutes les lignes de cet onglet récupère colonne « A » le nom de l’onglet source (Entête de chaque partie) pour en fonction du critère colonne « I » récupérer un code libre dans cet onglet avec critère identique dans la même colonne « I »
Chaque code récupéré est tagué dans la colonne « I » de l’onglet source pour ne pas être repris
En début de traitement cette colonne de la ligne 2 à la dernière est apurée de toute couleur pour les deux onglets source « CODE ARTICLE CS » et « CODE ARTICLE CR »
Cette opération est renouvelée en fin pour les laisser propre à l’utilisation
Attention au nom d’onglet colonne « A » onglet « recap » entête des différentes parties il doivent être conforme à ceux des onglets source à utiliser il en va du bon fonctionnement
Attention au nom d’onglet il doivent être correctement écrit et surtout surtout exang de blanc à leurs extrémités
L’onglet « CODE ARTICLE CR » avait malheureusement un intrus de ce type à son début que j’ai supprimé

Cliques sur le bouton tu devrais obtenir le même résultat que celui que tu m’as fournis testes à l’appui

Fais moi un retour

test compilation.xlsm (1,6 Mo)

Bonsoir ,
Oui le traitement fonctionne parfaitement ,merci mais je souhaitais que toute les cellules de la ligne soient recopiées .
J’ai rajouté des données dans les deux onglets sources ,si toutes ces données peuvent être recopiées dans l’onglet recap ,c’est gagné !!
Bonne soirée ,
Franck
test compilation(1).xlsm (1,6 Mo)

Merci pour ton retour
Si avec les codes le resultat est au rendez vous pour les autres données ce devrait être une formalité
Demain je réalise le complément et te le transmet
Bonne soirée

Bonjour
Ton dernier fichier avec la recopie des données de la colonne « A » à « H »
Testes et dis moi

test compilation(1).xlsm (1,6 Mo)

Bonsoir FFO ,
merci pour ta proposition qui convient parfaitement ,j’ai fait quelques avec toutes les données ,j’ai étendu la recopie au jusqu’au cellules « X » et ai ajouter une remise a zéro des cellules avant recopie puis enfin un masquage des lignes vides .
Encore merci ,
a une prochaine !!
Franck .

Bonsoir
Ravi de ce resultat
Attention surtout au nom des onglets source dans les entêtes colonne « A » des différentes parties et au niveau de leur libellé dans les onglets respectifs ils doivent correspondre à la virgule prêt sans espace à leur extrémités
Les critères en colonne « I » doivent impérativement être que des chiffres
La qualité du résultat du traitement en dépend

Au plaisir de te retrouver pour de nouvelles aventures

Bonjour FFO ,
j’ai une dernière requête sur ce fichier ,j’ai souhaité pourvoir archiver les onglets de compilation par date mais j’ai un bug ,l’onglet est bien recopié et il y a création d’un nouvel onglet mais il ne prend pas le nom que je souhaite lui attribuer ,j’ai du encore passer a coté de quelque chose !!
Si tu peux jeter un coup d’oeil ?
Merci ,
Franck .
TEST COMPIL.xlsm (308,9 Ko)

Bonjour
Je vois que l’on n’hésites pas à se lancer dans le monde VBA
Bravo c’est en forgeant que l’on devient forgeron
Pour ta difficulté tu cherches à créer un onglet avec comme libellé : « Compilation au jj/mm/aaaa »
jj/mm/aaaa étant la date récupérée de la cellule « Y1 »
Or dans un libellé d’onglet on ne peux utiliser le caractère « / »
Donc il faut le remplacer par exemple par le caractère « - »
Au lieu du nom « Compilation au 18/05/2023 » qui ne pourra pas être celui d’un onglet il faut utiliser en remplacement ce nom : Compilation au 18-05-2023
Et là tout baigne

Ci-joint ton fichier avec une correction dans cet esprit

Testes le et dis moi

TEST COMPIL.xlsm (305,4 Ko)

Merci FFO,
j’aurai pu chercher très très longtemps !!!
Ca fonctionne parfaitement .
Merci pour tout !!
Franck .

A la prochaine quand tu veux

Bonsoir FFO,
je suis de nouveau sur ce fichier qui me pose quelques petits soucis !!
Je l’ai adapter a une utilisation pro avec la meme structure et jusqu’ici cela donnait d’excellents résultats ,sauf que depuis ce matin il ne fonctionne plus complétement …
La macro s’execute et commence a compiler les données des deux onglets en un seul mais c’est comme si certaines lignes n’etaient pas prises en compte et du coup ne sont pas recopiées.
Ex :
pour la ligne 3 en « CS » j’ai :


et une fois le recap fait je ne trouve que ces lignes de recopiées :

Il en manque donc quelques unes !!
Si tu peux jeter un oeil et identifier ou est l’erreur .
Je n’ai rien trouver !!!
Encore merci et belle soirée !!
Franck.
test .xlsm (376,1 Ko)

Bonsoir
Peux tu me rappeler le bouton utilisé avec la macro associé
Onglet « Récap » j’ai un bouton « COMPILATION » qui semblerait correspondre mais il est associé à une macro « Afficher_lignevide » bien loin si l’on en juge par son appellation de réaliser cette opération dite de compilation mais plutôt d’afficher des lignes vides :

Le Pb n’est-il pas dans la relation du bouton à la bonne macro ?
Celle qui serait normalement plus appropriée est la macro « Traitement2 »

Merci de me dire

En fait il y a un enchaienement de macro :
-Afficher_Lignevide qui appelle
-RAZ2 qui appelle celle qui nous interesse :
-Traitement2
Franck .

As tu essayé uniquement avec la macro dédiée à cette compilation « Traitement2 » voir si son résultat est correct ?

Oui testé et le résultat n’est pas correct .

Oui très certainement parceque le nombre de lignes disponibles pour récupérer les données du code article traité est insuffisant
Dans ta copie d’écran je ne vois qu’une seule ligne pour le code article « CS » :

Donc tu n’auras qu une seule rėcupėration
Le traitement se sert de la donnée « Code article CS » ou « Code article CR » pour déterminer l’onglet source à traiter

A la donnée « Code article CS » il traite l’onglet « CS »
Dès qu’il trouve la donnée « Code article CR » il traite l’onglet « CR »

A toi de mettre entre les deux le nombre de lignes nécessaires à la récupération des données qui concerne le code article traité
Si pour « Code article CS » 5 codes « CS » sont à integrer avec leurs données tu doit mettre minimum 5 lignes après et ce avant « Code article CR » qui suit

C’est comme cela que le traitement a été conçu

Sinon comment peut-il appréhender le nombre de chacun d’eux à intégrer dans chaque partie ???

C’est pour cela que j’ai integré la macro "Afficher_lignevide :
Sub Afficher_lignevide()
Dim cell As Range

Application.ScreenUpdating = False
With Sheets(« Récap »)
For Each cell In Range(« A2:A356 »)
If cell.Value = 0 Then
cell.EntireRow.Hidden = False
End If
Next cell
End With
Call RAZ_2
End Sub

Puis la macro RAZ_2 ,pour effacer toute les données deja copiées dans le précédent traitement et ensuite j’appelle le traitement2 qui a pour chaque CR et CS de chaque ligne de production environ 33 lignes pour y recopier les données .
En defiltrant l’onglet recap tu verras qu’il y a de la place .
Franck .