Se connecter avec
S'enregistrer | Connectez-vous

comparaison de colonnes par mots clefs

Dernière réponse : dans Programmation

Bonjour,
je souhaiterais effectuer dans UNE colonne contenant une serie de phrases (chaque cellule en contenant UNE) une recherche parmi une serie de mots clefs contenus dans une autre colonne (chaque cellule contenant un mot clef).
Ainsi, il faudrait que pour chaque ligne contenant une phrase la macro cherche si chacun des mots clefs est present.
Si un ou plusieurs mots clefs sont presents, il faudrait qu'il y ait marquer dans une troisieme colonne OK sinon PAS OK lol
Merci beaucoup!!!!!

Autres pages sur : comparaison colonnes mots clefs

Lassé par la pub ? Créez un compte

En fait j'etais plus parti dans une macro du style :
  1. Sub test()
  2. Dim c As Range
  3. For Each c In Range("A2:A13000" )
  4. If c.Find(c.Value, Column + 1) Is Nothing Then
  5. Cells(c.Row, Column + 3) = "PAS OK"
  6. Else
  7. Cells(c.Row, Column + 3) = "OK"
  8. End If
  9. Next
  10. End Sub
Expert Programmation

Il y a plein de raisons, trouves-en au moins une bonne parmi celles-ci :

  • Parce que c'est la règle : Les règles du forum Programmation- A lire !

  • Parce que respecter ces règles, c'est la façon de montrer du respect envers les personnes qui voudront bien te lire et te répondre.

  • Parce qu'il est beaucoup plus facile de lire du code formatté dans une police à caractères fixes, correctement indenté, avec des couleurs contextuelles (ok, c'est pas terrible en VB)

  • Parce que je te le demande :sol:  (ziva, comment il se la pète ce modo !)

  • Parce que c'est plus joli ( :love:  je l'aime bien celle-là)

  • Parce qu'il est d'usage ici de ne pas donner de solutions aux personnes qui ne font pas un minimum d'effort en regard du temps pris par ceux qui répondront. La preuve, je pense que je suis en mesure de te répondre, mais je ne prendrais ce temps que quand j'en aurais fini avec la modération.


    N'hésite donc pas à choisir au moins une bonne réponse. Modifie alors ton post et tu ne tarderas pas à avoir une soluce.

    Citation :
    Il faut que tu fasses deux boucles imbriqués, l'une parcourant les ligne de 2 à 13000 et une autre parcourant les mots-clef....


    Je l'avais saisi mais je ne vois pas comment faire...a la base je suis specialise dans l'administration de systemes serveurs pas dans la programmation...donc je pense saisir plus ou moins la logique en rapport avec ma requete mais il me manque les outils pour le faire. Bref, j'arrive pas a m'exprimer :pt1cable: 
    Si tu pouvais me mettre un peu plus sur la voix (du graal lol), comment je pourrais imbriquer ca...
    Je te remercie!
    Expert Programmation

    1. Dim table As Variant
    2. Dim row As Integer
    3. Dim word As Integer
    4. Dim found As Boolean
    5.  
    6. For row = 2 To 13000
    7. table = Split(Cells(row, ColonneDesMofClef), " ")
    8. found = False
    9. For word = 0 To UBound(table)
    10. found = found Or Not Cells(row, ColonneOuChercher).Find(table(word)) Is Nothing
    11. Next
    12. If found Then
    13. ' Faire quelque chose d'intéressant
    14. Else
    15. ' Faire quelque chose d'intéressant
    16. End If
    17. Next


    Tu dois bien sûr adapter un minimum ce code...

    楽しみなさい! :jap: 

    Alors voila ce que j'ai fait :
    1. Sub test2()
    2. Dim table As Variant
    3. Dim row As Integer
    4. Dim word As Integer
    5. Dim found As Boolean
    6.  
    7. For row = 2 To 13000
    8. table = Split(Cells(row, 2), " ")
    9. found = False
    10. For word = 0 To UBound(table)
    11. found = found Or Not Cells(row, 1).Find(table(word)) Is Nothing
    12. Next
    13. If found Then
    14. Cells(row, 4).Value = "OK"
    15. Else
    16. Cells(row, 4).Value = "PAS OK"
    17. End If
    18. Next
    19.  
    20. End Sub


    Le petit souci c'est que si je comprends bien ce que tu as ecrit comme code, c'est qu'il faut que tous les mots clefs soient presents dans chaque cellule et soient separes par un espace...et la ca marche.

    Le petit souci est que j'ai 1 mot clef par cellule...voila en fait a quoi devrait ressembler mon tableau apres execution de la macro :

    A B C
    1 Acer driver Dell OK
    2 Screen saver Acer PAS OK
    3 dell Sony OK
    4 yekeke enfant des bois* Creative PAS OK

    * cherche pas je viens de l'inventer lol

    Donc en A les phrases, en B les mots clefs et en C si c'est bon ou pas...
    A moins que tu connaisses une macro vite fait qui puisse prendre tous ces mots clefs et les aligner dans une cellule en les separant par un espace...

    Merci beaucoup! Arigatoo gozaimasu! Thank you! Danke! Grazie!...bref tu m'auras compris lol
    Expert Programmation

    Ben, et juste en réfléchissant :

    Vire les lignes 2 et 8.
    Ajoute une variable i de type integer.
    Au lieu de boucler sur le tableau, boucle sur les cellules de la colonne B :
    1. For i = 2 To 13000
    2. found = found Or Not Cells(row, 1).Find(Cells(i, 2)) Is Nothing

    Super!!! Ca marche! Tu me diras evidemment ;) 
    Merci beaucoup!!!
    Si je peux faire quelque chose pour toi...t'envoyer des photos du japon ou je ne sais trop quoi ce sera avec plaisir ;) 

    Pour info je mets le code :

    1. Sub test3()
    2. Dim row As Integer
    3. Dim word As Integer
    4. Dim found As Boolean
    5. Dim i As Integer
    6.  
    7. For row = 1 To 10
    8. found = False
    9. For i = 1 To 10
    10. found = found Or Not Cells(row, 1).Find(Cells(i, 2)) Is Nothing
    11. Next
    12. If found Then
    13. Cells(row, 4).Value = "OK"
    14. Else
    15. Cells(row, 4).Value = "PAS OK"
    16. End If
    17. Next
    18. End Sub


    Sayonara :jap: 
    Lassé par la pub ? Créez un compte