Copier/ Coller des elements entre 2 feuilles

Bonjour,
J’ai le problème suivant que j’ai déjà pose y a un moment et qui a été résolu (étapes 1 et 2) j’ai rajouté les étapes 3 et 4 j’ai essayé de le faire mais je suis bloquée:
J’ai 2 feuilles Excel, ou je dois récupérer des données d’une feuille source et les mettre dans la feuille cible puis j’affiche ces dernières dans une listbox:
1- Chercher le nom de la personne qui en cellule F1 dans toutes les feuilles du classeur sauf la feuille Formation_Mait puis récupérer ces noms dans la ligne 1 de la feuille Formation_Mait.
2- On cherche le nom de la formation (c’est des references) qui sont en ligne 29 de toutes les feuilles des personnes et les mettre dans la feuille Formation_Mait en colonne A.
3- Chercher le nom des formations dans la feuille Nom_Formation associés aux references trouvées dans l’etape 2 et les mettre dans la colonne B de la feuille de Formation_Mait.
4. Une fois le nom de la personne et le nom de la formation trouvé, on récupére la date et on la mis dans la bonne cellule.
Le résultat s’affiche dans une listbox après avoir cliquer sur le bouton « Cliquer içi »
Exemple:
Personne A , Fomation 001 , on a la date 10/10/2020 elle se met dans la cellule C2 de la feuille Formation_Mait + le nom de la formation 001 = LabView qu’on récupère de la feuille Nom_Formation et on le met dans la cellule B2 de la feuille Formation_Mait.
Merci pour vos propositions.
Classeur1.xlsm (27,2 Ko)

Bonjour

Ma proposition ci-jointe

J’espère avoir compris

J’ai renommé ton onglet « Nom_Formation » car il y avait un blanc en fin que j’ai supprimé

Pour le nom de la formation à récupérer dans cet onglet n’ayant aucune instruction à cette fin sur la base du numéro de référence j’ai supposé que l’ordre de ces références correspondait à l’ordre croissant des formations de la liste colonne C
référence 001 formation colonne C ligne 2
référence 002 formation colonne C ligne 3
référence 003 formation colonne C ligne 4
etc…

Aucun autre lien possible à ce stade

Si il en existe un merci de me l’indiquer

Onglet « Formation_Mait » cliques sur le bouton « Traitement »

Testes et dis moi

Classeur1.xlsm (37,7 Ko)

Bonjour,
Désole pour le retard.
Ce n’est pas exactement ce que je voulais avoir.
Le problème est le suivant:
1- Chercher le nom de la personne qui en cellule F1 dans toutes les feuilles du classeur sauf la feuille Formation_Mait puis reccuperer ces noms dans la feuille « Formation_Mait » dans la ligne 1 :


2- Une fois le nom est trouvé, on cherche le N° de la formation qui est en ligne 29 dans chaque profil et dans la feuille Formation_Mait en colonne B :

3-on reccupére la reference de la formation qui se trouve en feuille formations colonne C et on la mis dans la feuille Fomation_Mait dans la bonne cellule :



4- On recupere la date et on la mis dans la bonen cellule :

Le résultat s’affiche dans une listbox apres avoir cliquer sur le bouton « Cliquer içi »
Exemple:
Personne A , Formation 001, on a la date 21/05/2020, et la référence de la formation qu’on récupère de la feuille formations est: Calcul des températures. Résultat ce met dans feuille Formation_Mait

Mon code est dans le module 14, quand je l’ai lancé la 1ere fois ca a marché puis tout a été supprimé
Classeur2 (2) (1) (2).xlsm (947,0 Ko)

Merciii

Bonjour

Pas facile à comprendre

ton explication :

1- Chercher le nom de la personne qui en cellule F1 dans toutes les feuilles du classeur sauf la feuille Formation_Mait puis reccuperer ces noms dans la feuille « Formation_Mait » dans la ligne 1 :

est inintelligible

après un qui on attend l’action c’est à dire un verbe il y en a pas donc incompréhensible pour moi

Après analyse de l’ensemble de ta description associé à l’étude de ton fichier je pense avoir réussi à mettre en place le bon traitement

Le code « Traitement » a été modifié avec tous les commentaires nécessaire à sa compréhension

J’ai testé cela semble fonctionner

J’ai pris comme principe que les numéros des formations ligne 29 sont ordonnés à l’identique pour tous les onglets « Personne X » à partir de la colonne B de 001 à XXX cette première colonne ayant pour tous les onglets le même numéro idem pour les numéros de toutes les colonnes suivantes

Le traitement a été construit dans cet esprit

J’ai conservé une anomalie dans le nom de la feuille "Formations " en fin un blanc intempestif
Si tu le supprimes il faudra corriger son nom dans les procédures qui l’utilisent et notamment pour celle de « Traitement »

J’ai mis toutes les colonnes à partir de la colonne C jusqu’à la colonne Q onglet « Formation_Mait » en format texte pour avoir une restitution de date correcte sinon certaines se mettent au format américain donc format texte à conserver et peut être à étendre sur les colonnes suivantes si besoin

Fais des tests et dis moi

Classeur2.xlsm (950,7 Ko)

1 J'aime

Excellent, c’est ce que je voulais avoir.
J’ai essayé de clarifier avec les images je sais que ca n’a pas était simple a comprendre mais le résultat est celui que je voulais.
Merci encore

Ravi d avoir répondu à ton attente
A ta disposition au besoin
Bonne continuation

1 J'aime

Bonjour,
J’ai mis toutes les colonnes à partir de la colonne C jusqu’à la colonne Q onglet « Formation_Mait » en format texte pour avoir une restitution de date correcte sinon certaines se mettent au format américain donc format texte à conserver et peut être à étendre sur les colonnes suivantes si besoin

Non FFO, pas de format TEXTE
remplace cette ligne pour la date comme ceci

Sheets("Formation_Mait").Cells(j, colonne) = Format(Sheets(i).Cells(30, j), "mm/dd/yyyy")

En VBA, il faut inverser le mois et le jour
Sinon, si un jour il doit faire des stats, il faudrait reprendre les dates pour les re-transformer :wink:

1 J'aime

C’est ce que j’ai fait :

Sheets(« Formation_Mait »).Cells(j, colonne) = Format(Sheets(i).Cells(30, j), « DD/MM/YYYY »)

Hélas en format normal standard :

pour certaine date on est confronté à une inversion entre le jour et le moi

en jaune le mois et le jour sont inversés

en format texte :

La date est correct le mois et le jour sont bien ordonné

Bon nombre de fois j’ai eu ce souci que je n’ai pu résoudre qu’en utilisant le format texte hélas

J’ai consulté beaucoup de site sur le sujet et c’est la seule solution proposée pour palier à ce désordre

Donc pas le choix

Maintenant si tu as une parade je prends

Je viens de remarquer que tu proposes dans ta ligne de code une présentation différente
« MM/DD/YYYY » au lieu de « DD/MM/YYYY » comme je l’ai fais

mille excuses
j’ai testé et effectivement mon défaut a disparu

Pas très logique quand même comme présentation

Mais OK j’adopte ta solution et remets le format standard

Je joint le fichier corrigé ainsi

Merci pour ta remarque toujours très judicieuse comme toujours

donc pour Salsabil_Zaghdoudi à récupérer à la place de ma dernière version

Désolé on apprend tous les jours

Classeur2.xlsm (950,9 Ko)

1 J'aime

Re,
Excel est anglophone, donc il faut partir sur leur système de date (Mois/Jour/Année)
d’ailleurs le moyen mnémotechnique est simplement par le fait que les jours et années ne s’écrivent pas à l’identique J=D & A=Y
Ou alors, cela dépend du contexte, utiliser DATESERIAL

Ce qui n est pas logique de mon point de vue c est qu alors que l on demande une présentation :

MM/DD/YYYY

Qui veut dire month month/dayday/year yearyearyear
Soit moismois/jourjour/annéeannéeannéeannée

On obtienne jourjour/moismois/annéeannéeannéeannée

Une logique à laquelle je ne peux adhérer

Le format à obtenir doit être celui demandé ni plus ni moins indépendant d autres formes de considération

Pour moi c’est une anomalie je demande un format il doit être celui obtenu et non un autre au prétexte que ç est une origine anglophone

Cela défi toutes les logiques

Maintenant c est ma conception et je conçois qu on puisse en avoir une autre
Voilà le fond de ma pensée
Quoi qu il en soit avant tout je m adapte pas le choix

1 J'aime

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.