Attribuer un nom à un intitulé le contenant à partir d'une base de donnée nomina

sanotom02 Messages postés 4 Date d'inscription mercredi 27 juin 2012 Statut Membre Dernière intervention 27 juin 2012 - 27 juin 2012 à 11:26
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 27 juin 2012 à 16:01
Bonjour,

J'ai dans un onglet "HC" une liste de noms, et dans un second onglet "YTD" des intitulés contenant la plupart des noms de la liste et en ordre aléatoire.
Je souhaiterais que lorsque l'un des noms de l'onglet "HC" apparait dans les intitulés (colonne C) de l'onglet "YTD", alors que ce nom soit copié dans la colonne E de l'onglet "YTD".

Exemple:
Dans l'onglet "HC", nous avons "martin" en A1, "breton" en A2 et "blanc" en A3.
Dans l'onglet "YTD", la case C1 étant "restaurant martin" et la case C2 étant "voyage paris blanc", je souhaiterais que "martin" soit copié en E1 et "blanc" en E2.

Merci d'avance pour votre aide...


SanoTom

7 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
27 juin 2012 à 11:37
Bonjour,
Et quid (avec ton exemple, par exemple), si dans ton onglet HC tu as à la fois "martin" et "restautant" alors qu'en C1 de ton onglet YTD tu as "restaurant martin" ???
Ne me dis pas que cela ne peut arriver, hein :
Exemple : "boulanger martin de la montagne jaune" alors que, dans ton HC, tu as :
- montagne
mais aussi
- martin
et
- boulanger
je connais un M. montagne, un M. Martin et un M. boulanger, personnellement.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
sanotom02 Messages postés 4 Date d'inscription mercredi 27 juin 2012 Statut Membre Dernière intervention 27 juin 2012
27 juin 2012 à 13:27
Re-bonjour,
@ucfoutu: En réalité toutes les données sont en anglais et mis à part les lettres du nom, le reste de l'intitulé est en code.
Exemple: T&E-martin-12-12-2012-sem_rp

De plus aucun des noms ne correspond à un code.

Merci quand même.


SanoTom
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
27 juin 2012 à 14:47
1) Je ne vois pas ce que pourrait changer le fait que les données soient en anglais, en espagnol, en français ou en javanais !
2) j'aimerais par contre savoir si les données ont toujours la même structure (séparateur "-") et si le "nom" ("martin" dans ton exemple) est toujours la seconde "sous-chaine" d'une telle structure. Car la solution la plus rapide dépend de ce que tel est ou non le cas !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
sanotom02 Messages postés 4 Date d'inscription mercredi 27 juin 2012 Statut Membre Dernière intervention 27 juin 2012
27 juin 2012 à 15:19
J'ai précisé que les données étaient en anglais et par code pour mettre en avant qu'elles ne comportaient pas 2 noms différents dans l'intitulé.

Les problèmes sont justement:
1)que les noms peuvent apparaitre à n'importe quelle place dans l'intitulé car ils ne sont soumis à aucune règle.
2)qu'il n'y a pas non plus de nom dans chaque intitulé.

Pour finir, il y a plus de 200 noms et plusieurs dizaines de milliers de lignes.

En cherchant à cumuler les formules, j'en étais venu à:

Dim Crit
Dim i As Long, DerniereLigne As Long
DerniereLigne = Range("A293").End(xlUp).Row
For i = 2 To DerniereLigne

Crit = Sheets("HC").Range("A" & i).Value
Sheets("YTD").AutoFilter Field:=3, Criteria1:="*" & Crit & "*"
Sheets("HC").Range("A" & i).Copy
Sheets("YTD").Range("E2:E65844").Paste
Next i
End Sub


Mais l'éxécution de cette macro n'a aucun effet sur mon document, rien ne bouge.


SanoTom
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
27 juin 2012 à 15:27
Le mieux (et surtout le plus rapide en exécution ) est alors :
- de mettre dans une collection (ou dans un dictionnaire si tu le préfères) tes données de ton onglet HC
- pour chaque ligne traitée : d'éclater (par split) la chaîne de caractères sur le séparateur "-"
- pour chaque Trim(de l'élément trouvé dans l'array obtenu) ===>> regarder si dans collection (ou dictionnaire) et si oui : agir en conséquence.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
sanotom02 Messages postés 4 Date d'inscription mercredi 27 juin 2012 Statut Membre Dernière intervention 27 juin 2012
27 juin 2012 à 15:37
Merci beaucoup pour la réponse, mais je suis loin d'avoir ce niveau d'expertise...
- Comment est ce que l'on crait une collection ou un dictionnaire ?
- Qu'est ce qu'un Trim ? Qu'est ce qu'un array ?

Pour ce qui est de l'intitulé, les codes sont parfois séparés par des "-", mais aussi des "_", des "&", des " ", etc...

Bref il n'y a aucune logique ! :S

SanoTom
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
27 juin 2012 à 16:01
Hé bé !
1) apprendre vite ce que tu dis ne pas connaître (certains points sont rudimentaires de chez rudimentaires) en ouvrant ton aide VBA sur ces mots ! Tu ne peux (nul ne le pourrait) développer sans cela !
2) s'il n'y a aucune logique dans la structure, tu es parti vers un traitement très gourmand en temps, alors, et en utilisant Instr !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Rejoignez-nous