Copie de données dans plusieurs formulaires via une base de donnée

Grmble

XLDnaute Nouveau
Bonjour à tout le monde,

Premièrement, merci pour votre lecture !

J'aurais besoin de votre aide pour un travail sur plusieurs fichiers Excel. Je vais essayer d'être le plus précis possible.

Voilà : j'ai un fichier de base "Test annonces.xlsx" (ci-joint) qui contient à partir de la ligne 19 des inscriptions pour des cours à effectuer. D'un autre côté, j'ai 2 formulaires (les 2 identiques) "TEST FORM A" (et l'autre pas joint).

Ce que je n'arrive pas à faire...

Il faudrait, que si le nombre de jour dépasse 2 jours OU que le montant du cours soit supérieur à 1000 francs (dans le fichier annonce du cours) que les données du cours soient copiées dans le document formulaire "TEST FORM A". Si c'est pas le cas dans l'autre document "TEST FORM B".

Au niveau des données copiées, le nom et prénom du collaborateur doivent être copiés, le titre du cours, le numéro du cours, la durée ainsi la date du cours.

De plus, il faut que pour chaque ligne un fichier Excel (bien entendu le même que le fichier joint test form A) soit créé. Celui-ci devrait avoir comme nom cette base (nom et prénom du collaborateur) "NOM_PRENOM_NO DU COURS.XLSX"

Merci infiniment pour votre aide précieuse et excellente journée

Je suis dispo pour d'éventuelles questions :)
 

Pièces jointes

  • TEST FORM A.xlsx
    39.1 KB · Affichages: 93
  • Test annonces.xlsx
    98.9 KB · Affichages: 104
Dernière édition:

Grmble

XLDnaute Nouveau
Re : Copie de données dans plusieurs formulaires via une base de donnée

Malheureusement c'est pas ca le problème... J'essaie de t'expliquer plus en détail.

Dans ma liste du personnel j'ai les noms et prénoms des collaborateurs. Si je prends le fichier "Test Annonces" et que je note manuellement le nom et prénom d'un de ces collaborateur (la même orthographe), lors de la création du formulaire, j'ai pas de "Correspondance trouvée".

Pour avoir une correspondance trouvée, il faut que je note le nom et prénom du colaborateur dans le fichier "Test Annonce", que je lance la macro (qui ne vas pas me copier les données car pas de correspondance), que je COPIE la cellule contenant le nom du collaborateur et que je la COLLE dans le fichier "Liste des collaborateur". Après... ca trouve le collaborateur.

Pourtant l'orthographe est la même ! C'est comme ci la cellule contenant le nom du collaborateur dans le fichier "Test annonces" après le lancement de la macro était en "cache" ou avait un attribut spécifique...

Je sais pas si tu vois...


Edit : même problème avec la sauvegarde des formulaires... ca sauvegarde que ceux dont la cellule nom et prénom du collaborateur a été copiée du document "Test annonces " vers liste des collaborateur se sauvegardent... ^^

Edit 2 : je suis même pas sur... ca sauvegarde que quelques formulaires...



EDIT 3 ;) : après quelques bidouilles, chaque formulaire trouve une correspondance. Le dernier problème c'est que le formulaire ne s'enregistre pas... Même après correspondance trouvée
 
Dernière édition:

did85

XLDnaute Junior
Re : Copie de données dans plusieurs formulaires via une base de donnée

Bonjour,
j'ai encore essayé, la macro remplit bien les numéros de téléphone et fonction des personnes renseignées à partir de "Liste Personnel.xlsx"
Je reprends ce qui a été programmé :
- on entre un cours dans le classeur "Test annonces" en mettant le nom et prénom de la personne (c'est ici que je prends le dernier numéro de ligne de ce classeur)
- j'ouvre le classeur "Liste Personnel" et j'enregistre dans une variable tableau tous les noms contenus dans ce classeur pour récupérer la fonction et le numéro de téléphone de la personne.
- on clique sur le bouton "Créer" qui va regarder le nombre de jours de formation pris et le montant du stage dans le classeur "Test annonces"
- 2 possibilités :
* une des deux conditions est remplie auquel cas j'ouvre le classeur "test FORM A.xlsx" et je complète la fiche et j'enregistre ce classeur sous un nouveau nom et je le ferme.
* soit aucune des deux conditions ne convient et j'ouvre le classeur "test FORM B.xlsx" et là le programme s'arrête parce que je n'ai pas programmé puisque c'est ce qu'il te reste à faire, mais j'enregistre quand même le travail mais une fiche VIDE. C'est peut-être là le problème.

Donc si une de tes conditions n'est pas respectée, je ne traite pas l'information, tu peux d'ailleurs le voir dans le code ici :
'===========Voir ici ce que l'on recopie dans test Form B=============
'
'
'
'=====================================================================
Il faut donc compléter la partie de ce code pour que la fiche soir remplie avec le nom, prénom.
A te lire
Bonne journée
 

Pièces jointes

  • Liste personnel.xlsx
    17.5 KB · Affichages: 47
  • Liste personnel.xlsx
    17.5 KB · Affichages: 62
  • Liste personnel.xlsx
    17.5 KB · Affichages: 66
  • Test annonces.xlsm
    117.2 KB · Affichages: 42
  • Test annonces.xlsm
    117.2 KB · Affichages: 48
  • Test annonces.xlsm
    117.2 KB · Affichages: 48
Dernière édition:

Grmble

XLDnaute Nouveau
Re : Copie de données dans plusieurs formulaires via une base de donnée

Ecoute... si tu veux je te donne mes 4 fichiers complets et tu regardes... tu verras... les formulaires ne s'enregistrent pas ! (le problème de copie des données dans les forumulaires est réglé... la c'est juste que PRESQUE tous les formulaires ne s'enregistrent pas...)

J'ai rempli les données dans la macro pour le formulaire B

Mais par contre je t'envoie ou ces fichiers ? car je il y a des données personnelles de collaborateurs (numéro de téléphone etc..)
 
Dernière édition:

did85

XLDnaute Junior
Re : Copie de données dans plusieurs formulaires via une base de donnée

J'ai trouvé l'erreur après envoi des fichiers de Grmble.
Les nom et prénom inscrit dans la feuille "Test annonce" étaient suivi d'un retour à la ligne dans la cellule. J'ai donc ajouté une procédure avec argument qui supprime les retours à la ligne à chaque ouverture des fichiers.

Private Sub Sup_Retour_Ligne(ByVal Der_Lig_A_Traiter As Integer, Optional Nom_Classeur)

'Procèdure de suppression des retours chariot dans les noms et prénoms
'Suppression dans le classeur "Test annonce"
If Nom_Classeur = wbActive.Name Then
wbActive.Sheets("Feuil1").Range("I15:J" & Der_Lig_A_Traiter).Replace What:=Chr(10), Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
'Suppression dans "liste Personnel"
Else
wbListeP.Sheets("Feuil1").Range("B1:C" & Der_Lig_A_Traiter).Replace What:=Chr(10), Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End If
End Sub

Avec un appel de cette procédure dans le code après la recherche de la dernière ligne :
'Nombre de ligne dans le fichier en fonction de la colonne A
Derlig = shActive.Range("I65536").End(xlUp).Row
'appel procedure suppression retour ligne dans la plage à traiter
Sup_Retour_Ligne Derlig, wbActive.Name

Et ici :
'Recherche de la dernière ligne inscrite dans le fichier
DerLigPerso = wbListeP.Sheets("Feuil1").Range("b65536").End(xlUp).Row
'appel procedure suppression retour ligne dans la plage à traiter
Sup_Retour_Ligne DerLigPerso, wbListeP.Name

A tester de ton côté Grmble.
Bonne journée
 

Grmble

XLDnaute Nouveau
Re : Copie de données dans plusieurs formulaires via une base de donnée

Après test ca fonctionne TIP-TOP !

Merci infiniment pour tout ! Comme dit par mail tu me sauve d'un long et répétitif travail plusieurs fois par mois ;)

Cordialement
Romain
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote