Gestion de liste en saisie manuelle

Bonjour à tous,

Je ne suis pas certain que mon titre soit pertinent mais j'ai pas trouvé mieux...

Alors voilà dans un de mes fichiers qui fait suite à une extraction d'un logiciel tiers, Cette extraction passe ensuite par diverse macros ( d'un fichier mère"qui met en forme et sauvegarde l'extraction en fichier fille. l'une des macro me " corrige" les saisies manuelles pour homogénéiser les noms de la liste :

 If Ws.Name = "CHU BESANCON" = True Then Ws.Cells(13.3).Value = "CHU Besançon Centre de tri"
        If Ws.Name = "Chu besançon" = True Then Ws.Cells(13.3).Value = "CHU Besançon centre de tri"
        If Ws.Name = "CHU Besançon parisitologie-+my" = True Then Ws.Cells(13.3).Value = "CHU Besançon centre de tri"
        If Ws.Name = "Chu  besançon parasitologie -m" = True Then Ws.Cells(13.3).Value = "CHU Besançon centre de tri"
        If Ws.Name = "HOP_BESA_MPMM" = True Then Ws.Cells(13.3).Value = "CHU Besançon centre de tri"

Mais j'ai déjà près de 300 lignes....

Mais à chaque extraction je dois créer de nouvelle ligne pour corriger les erreurs de saisie non connu dans la macro.

Une fois les nouveaux noms corriger je recopie les nouvelles lignes vers le fichier mère qui me servira pour les corrections de la prochaine extraction.

Je me demandais si il n'y avait pas plus simple en faisant peut êtres des tables de correspondance dans un 3eme fichier . Le fichier importerai les nouveaux noms, l'utilisateur via une liste déroulante ( ou autre) sélectionnerai le nom standardiser correspondant à la saisie manuelle. Les noms standardiser pourrai également me servir pour une future édition d'étiquette d'adresse.

Il faudrait par la suite que mon fichier ( Fille ?) récupère les corrections

Je vous fournis mon fichier Mère qui traite actuellement toutes les étapes et un fichier extraction anonymiser

Si vous avez des idées pour traiter ceci je suis preneur car je manque cruellement d'idées et de connaissance pour résoudre mon problème.

10extraction.zip (41.10 Ko)
12modele-masque.xlsm (62.59 Ko)

bonjour

le plus simple (et donc le plus fiable), tu l'as intuité, c'est un dictionnaire (une feuille) en 2 colonnes : 1/ nomofficiel 2/ nomsdiversassociésaunomofficiel

ensuite dans ton fichier extrait ut mets une colonne =RECHERCHEV pour rapatrier le nomofficiel

Ok Merci JMD pour cette première piste,

Si j'ai bien compris ton explication il me faut une colonne pour chaque nom officiel et une colonne pour chaque nomsdiversassociésaunomofficiel ?

Si j'ai 60 noms officiels il me faut 120 Colonnes dans ma Feuille?

re

non, non !

2 colonnes

une colonne nomfataisie

une colonne nomofficiel

face à chaque nomfataisie, tu mets le nom officiel (s'il y a 20 minière d'écrire CHU Grenoble, il y aura 20 lignes)

ainsi la RECHERCHEV fonctionne toute seule

tu connais RECHERCHEV ? hyper puissant !

Ok merci Jmd d éclairer ma lanterne

Non je n'ai jamais utilisé recherchev je l' ai déjà vue sur des postes du forum mais je reste néophyte.

Si je parts sur un fichier dictionnaire il faudra que je travaille avec au moins 4 fichiers : le fichier modèle, la sources ,le fichier fille et le dictionnaire. .. as tu regardé mon fichier modèle il y a peut être moyen de réduire le nombre de fichiers utilisé ( je ne serai pas le seul à l'utiliser et je suis le seul à avoir quelques bases sur excel)

Bon je commence part préparer le dictionnaire déjà 300 lignes à compléter.....

Merci pour les conseils

re

hem...

soit c'est une appli de dépannage, pour des bricoles que tu veux, alors un fichier de données (en colonnes simples) et le dictionnaire en 2 colonnes suffisent (+ des fusions dans Word pour des courriers).

soit tu veux du sérieux, et alors je te conseille Access (ou autre SGBD)

Moi je connais que la bricole vu mon niveau

re

redéfinis ton besoin de base :

  • avoir un fichier ListeExamens : je te conseille une longue et unique feuille (pas des onglets par hôpital) avec en colonne A le nomofficiel de l'hôpital.
  • avoir un dictionnaire : 2 colonnes. nomofficiel et nommalrédigé

une RECHECHEV affiche le nomofficiel sur chaque ligne de ListeExamens

tu peux faire des tris et filtres sur ListeExamen

tu peux faire des fusions dans WORD pour des courriers

tu peux faire des TCD pour des analyse

2 feuilles en tout et pour tout

Excel est magique, à condition de ne plus travailler comme avec un papier et un crayon.

jmd a écrit :

re

redéfinis ton besoin de base :

- avoir un fichier ListeExamens : je te conseille une longue et unique feuille (pas des onglets par hôpital) avec en colonne A le nomofficiel de l'hôpital.

Malheureusement c'est mon extraction qui génère les onglets par site destinataire et je n'est pas moyen de faire évolué ceci avant la prochaine mise à jour qui est prévu " normalement" courant 2018. Comme je fais l'extraction tous les mois et que je me retrouve avec 300 onglets pour 80 sites destinataires.... je me suis lancer.... et tu as le résultat en pièce jointe

Je suis entrain de finaliser le dictionnaire avec en plus la liste des adresses.

Après je vois comment gérer le recherchev entre mes différents fichiers.

Encore merci pour les explications.

Re bonjour à tous,

Je suis toujours sur mon problème, et je bloque sur une partie du code qui doit me rapatrié le nom des onglets de mon extraction vers mon classeur "masque"

Sub NomOnglet()
Dim i As Integer
Dim Wb_Mas, Wb_Ext As Workbook

Set Wb_Ext = Workbooks("Extraction")
Set Wb_Mas = Workbooks("Modèle Masque - adresse -")

'selection de la derniere ligne de l'onglet WsCorrect de Wb_Mas
a = Range("A1048576").End(xlUp).Row + 1
Cells(a, 1).Select
    For i = 1 To Sheets.Count ' Wb_Ext
        ActiveCell.Value = Sheets(i).Name
        ActiveCell.Offset(1, 0).Select
    Next i
End Sub

Lorsque j'exécute ce code je récupère bien le nom des onglets mais que celui du classeur en cours (Wb_Mas) et non sur le classeur "source" "Wb_ext

Si vous avez des idées pour corriger le code pour que je puisse récupérer le nom des onglets de Wb_Ext sur la dernière ligne du WsCorrect du classeur Wb_Mas car toute mes tentatives sont infructueuses pour l'instant,

Merci

Re bonjour à tous j'en suis normalement à la dernière étape de mon fichier.

J'ai commencer une macro qui devrai me permettre de nommer sur chaque onglet la cellule C12.

Le nom inscrit en C12 est déterminé grâce au nom de l'onglet et à ma feuille correction. chaque nom d'onglet est reporté en colonne A de ma feuille Correction et la cellule c12 devrai prendre la valeur de la cellule adjacente (colonne B)

Voici le code que j'ai fait mais ca ne marche pas ( et je comprend pas pourquoi d'ailleurs!)

Sub test()

Dim Wb_Mas, Wb_Ext As Workbook

Set Wb_Mas = Workbooks("Modèle Masque - adresse -3")

 For Each ws In Wb_Mas.Worksheets
    For i = 2 To WsCorrect.Range("A2").End(xlDown).Row
a = WsCorrect.Range("A" & i).Value
b = WsCorrect.Range("B" & i).Value
   If ws.Name = a = True Then ws.Cells(12.3).Value = b
  Next i
Next ws
End Sub

je joins un petit fichier exemple

Ex : onglet "1tube edta" devrai, après le passage de la macro, en cellule C12 de cet onglet avoir la valeur "Sans adresse" définie en colonne B de la feuille "Correction"

Si vous avez des idées pour corriger mon code car je suis peut être partie dans une mauvaise direction.

J'ai trouvé mon erreur par erreur ( ) mon code précédent était presque bon

Voici la bonne syntaxe

Set Wb_Mas = Workbooks("Modèle Masque - adresse -3")

    For Each ws In Wb_Mas.Worksheets
        For i = 2 To WsCorrect.Range("A2").End(xlDown).Row
            a = WsCorrect.Range("A" & i).Value
            b = WsCorrect.Range("B" & i).Value
        If ws.Name = a = True Then ws.Cells(12, 3) = b
        Next i
    Next ws

il suffisait de d'enlever le .value de la cellule de destination !!

Encore un grand merci à tous et en particulier à jmd qui m'a bien orienté !

Rechercher des sujets similaires à "gestion liste saisie manuelle"