Copier/ Coller des données d'une feuille vers une autre

Bonjour,
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.
Honnêtement j’ai essayé de la faire mais je me suis perdue, je manque d’idées. j’ai rédigé un début de code mais j’ai aps su comment le finir :frowning:
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 faire un match dans la ligne 1 de la feuille Formation_Mait.
2- Une fois le nom est trouvé, on cherche le nom de la formation qui est en ligne 29 et le retrouver dans la feuille Formation_Mait en colonne A.
Une fois le nom de la personne et le nom de la formation trouvé, on reccupére la date et on la mis dans la bonne cellule.
Le résultat s’affiche dans une listbox apres avoir cliquer sur le bouton « Cliquer içi »
Exxemple:
Personne A , Fomation MATLAB, on la date 11/04/2019 elle se met dans la cellule B2 de la feuille Formation_Mait
Classeur1.xlsm (31,0 Ko)
Des pistes svp.
Merci

Bonjour

Ci-joint ma proposition
Je suppose que les données à ramener onglet « Formation_Mait » sont en ligne 29 et 30 de chaque onglet Personne
En partant de cette base attention aux espaces intempestifs aux extrémités des noms de formation ceux-ci doivent scrupuleusement être identiques pour chaque onglet traité quand bien sur il s’agit de la même (aucun blanc en début et en fin) j’ai dû faire un peu de nettoyage à ce niveau

Ci-joint donc ton fichier avec mon traitement rajouté derrière ton bouton

Testes et dis moi

Classeur1 (1).xlsm (37,5 Ko)

Bonjour,
Merci pour votre proposition.
Le fichier fonctionne bien.
J’ai repris le même code et je l’ai mis dans mon fichier original et j’ai une erreur au niveau de:
If Sheets(i).Range(« F1 ») <> «  » Then
Propriété ou méthode non géré par cet objet.
Classeur2.xlsm (966,4 Ko)

Bonjour

Pour cibler les onglets à traiter en excluant l’onglet « Formation_Mait » du traitement je me suis référé à la cellule F1 avec ou non la présence d’une donnée
Le souci c’est qu’un onglet « Graphique1 » masqué est un graphique sans cellule donc pas de cellule « F1 »

Plantage en conséquence au niveau de cette ligne de code

If Sheets(i).Range(« F1 ») <> « » Then
Propriété ou méthode non géré par cet objet.

Comment comptes tu structurer ton fichier ?

Le nom des onglets à traiter seront sous quel forme ?

PersonneA
PersonneB
PersonneC
etc…

Il me faut un critère fiable pour les cibler

Pour l’instant j’ai exclut du traitement l’onglet « Graphique1 » en plus de l’onglet « Formation_Mait »
Je suppose que d’autres onglets à venir avec d’autres noms seront créés donc il faut trouver une solution pérenne sur le libellé des onglets qui doivent être pris en considération par le traitement

A toi de me dire

Je te joint ton dernier fichier transmis avec cette exclusion supplémentaire mais le traitement bug sur d’autres lignes de code qui ne sont pas celles que j’ai intégrées car un userform n’existe plus (« Userform1 »)
Toutes ces lignes ne fonctionnent plus en conséquence :

UserForm1.ListBox1.ColumnCount = 10

UserForm1.ListBox1.Clear
For i = 1 To dl
’ If ws.Range(« A » & i) <> «  » Then

UserForm1.ListBox1.AddItem ws.Range("A" & i)
UserForm1.ListBox1.List(UserForm1.ListBox1.ListCount - 1, 1) = ws.Range("B" & i)
UserForm1.ListBox1.List(UserForm1.ListBox1.ListCount - 1, 2) = ws.Range("C" & i)
UserForm1.ListBox1.List(UserForm1.ListBox1.ListCount - 1, 3) = ws.Range("D" & i)
UserForm1.ListBox1.List(UserForm1.ListBox1.ListCount - 1, 4) = ws.Range("E" & i)
UserForm1.ListBox1.List(UserForm1.ListBox1.ListCount - 1, 5) = ws.Range("F" & i)
UserForm1.ListBox1.List(UserForm1.ListBox1.ListCount - 1, 6) = ws.Range("G" & i)
UserForm1.ListBox1.List(UserForm1.ListBox1.ListCount - 1, 7) = ws.Range("H" & i)
UserForm1.ListBox1.List(UserForm1.ListBox1.ListCount - 1, 8) = ws.Range("I" & i)
UserForm1.ListBox1.List(UserForm1.ListBox1.ListCount - 1, 9) = ws.Range("J" & i)

Next
UserForm1.Show

Je ne sais pas ce que tu envisages à ce niveau

Ton fichier avec ma petite correction pour le bug :

If Sheets(i).Range(« F1 ») <> « » Then
Propriété ou méthode non géré par cet objet.

Testes et dis moi

n’oublies pas de me répondre sur la manière de cibler les bons onglets à traiter

Merci

Classeur2.xlsm (941,8 Ko)

Merci pour ton retour.
Pour la question : Le nom des onglets à traiter seront sous quel forme ?
Réponse:
Personne A
Personne B
Personne C
Personne D

Personne X
J’aurai 55 Onglets en total (55 personnes)
Pour le userform1 je me suis trompée je l’ai supprimé par erreur.
Dans le fichier joint je l’ai rajouté
Classeur2.xlsm (942,4 Ko)

Ci-joint ton dernier fichier adapté

La procédure traite tous les onglets dont le nom commence par « Personne » uniquement et si la cellule F1 est renseignée

Testes et dis moi

Classeur2 (2).xlsm (943,3 Ko)

Je l’ai testé et ca marche sans aucun probléme.
Je te remercie encore une foi pour ton aide.
Une question:
Une listbox elle peut contenir combien de colonnes (max) ?
car j’ai rajouté ces lignes:
’ UF_PE_Mait.ListBox1.List(UF_PE_Mait.ListBox1.ListCount - 1, 10) = ws.Range(« K » & i)
’ UF_PE_Mait.ListBox1.List(UF_PE_Mait.ListBox1.ListCount - 1, 11) = ws.Range(« L » & i)
’ UF_PE_Mait.ListBox1.List(UF_PE_Mait.ListBox1.ListCount - 1, 12) = ws.Range(« M » & i)
’ UF_PE_Mait.ListBox1.List(UF_PE_Mait.ListBox1.ListCount - 1, 13) = ws.Range(« N » & i)
’ UF_PE_Mait.ListBox1.List(UF_PE_Mait.ListBox1.ListCount - 1, 14) = ws.Range(« O » & i)

J’ai eu comme erreur: Impossible de definir la propriété list :thinking:

As tu actualisé cette ligne de code du nombre de colonnes :

UserForm1.ListBox1.ColumnCount = 10

pour l’ensemble correspondant à ces lignes de code rajoutées il faut le mettre à 14 ainsi :

UserForm1.ListBox1.ColumnCount = 14

Regardes et dis moi

Oui comme ca:
UF_IT_Mait.ListBox1.ColumnCount = 15
UF_IT_Mait.ListBox1.ColumnWidths = « 40;40;40;40;40;40;40;40;40;40;40;40;40;40;40 »
Et j’ai même modifié les propriétés de ma listbox
image

Peux tu me transmettre le fichier avec ces ajouts de lignes de code pour que je regarde

Classeur2 (2).xlsm (956,6 Ko)

Ci-joint ton fichier modifié

J’ai changé ton code
Celui que j’ai intégré en remplacement fonctionne de manière dynamique en s’adaptant automatiquement à l’onglet « Formation_Mait »
il met les seules colonnes de cet onglet ayant des données dans la listebox
seuls paramètres à éventuellement adapter est la largeur de ces colonnes dans la listebox afin d’avoir l’intégralité des données (1° à 40 les autres à 50) ici :

largeurcolonne = « 40 »
For h = 2 To dercolonne
largeurcolonne = largeurcolonne & « ;50 »
Next

j’ai fais un essai avec des données jusqu’en colonne K j’ai dû agrandir le Userform1 trop petit pour éviter l’ascenseur horizontal

J’ai mis en commentaire tes lignes d’instruction tu peux les supprimer (en vert dans l’éditeur)

Fais des testes et dis moi

Classeur2 (2) (1).xlsm (958,9 Ko)

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