Détection d'un mot dans un tableau grâce à VBA

Anonyme
2021-05-03T13:02:00+00:00

Bonjour, 

J'ai un projet et j'aimerai savoir comment pourrais-je trouver un mot clé et compter combien de fois il apparaît dans un tableau puis l'afficher dans une cellule Excel. Je découvre tout juste VBA mais j'ai des bases en C.

Merci d'avance !

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

Réponse acceptée par l’auteur de la question

DanielCo 107.7K Points de réputation
2021-05-11T16:38:27+00:00

Essaie :

Sub Recherche()
  Dim I As Long, TablData As Variant, TablClés As Variant, J As Long
  Dim Ctr As Long, Ligne As Long
  'Effacement tableau feuille treatment
  With Sheets("DATA").ListObjects(1)
    TablData = Application.Transpose(.ListColumns(1).DataBodyRange)
  End With
  With Sheets("Mots clés")
    TablClés = Application.Transpose(.Range("A1", .Cells(.Rows.Count, 1).End(xlUp)))
  End With
  With Sheets("TREATMENT").ListObjects(1)
    For I = .ListRows.Count To 1 Step -1
      .ListRows(I).Delete
    Next I
    For I = 1 To UBound(TablClés)
      Ctr = 0
      For J = 1 To UBound(TablData)
        If TablData(J) Like "*" & TablClés(I) & "*" = True Then
          Ctr = Ctr + 1
        End If
      Next J
      .ListRows.Add
      .ListRows(.ListRows.Count).Range(1) = TablClés(I)
      .ListRows(.ListRows.Count).Range(2) = Ctr
    Next I
    For J = 1 To UBound(TablData)
      Ctr = 0
      For I = 1 To UBound(TablClés)
      If TablData(J) Like "*" & TablClés(I) & "*" = True Then
        Ctr = Ctr + 1
      End If
      Next I
      If Ctr = 0 Then
        If IsNumeric(Application.Match(TablData(J), [TREATMENT!A:A], 0)) Then
          Ligne = Application.Match(TablData(J), [TREATMENT!A:A], 0)
          Cells(Ligne, 2) = Cells(Ligne, 2) + 1
        Else
          .ListRows.Add
          .ListRows(.ListRows.Count).Range(1) = TablData(J)
          .ListRows(.ListRows.Count).Range(2) = .ListRows(.ListRows.Count).Range(2) + 1
        End If
      End If
    Next J
  End With
End Sub

Daniel

Cette réponse a-t-elle été utile ?

1 personne a trouvé cette réponse utile.
0 commentaires Aucun commentaire

Réponse acceptée par l’auteur de la question

DanielCo 107.7K Points de réputation
2021-05-03T14:35:06+00:00

Bonjour,

Un exemple à adapter à ton cas. La macro recherche dans la plage de cellules sélectionnée le mot entré dans la boîte de saisie et affiche le nombre trouvé :

Sub test()

  Dim Mot As String, C As Range, Ctr As Long

  Mot = InputBox("Entrez le mot à compter")

  If Mot = "" Then Exit Sub

  Mot = "*" & Mot & "*"

  For Each C In Selection

  If C.Value Like Mot = True Then Ctr = Ctr + 1

  Next C

  MsgBox Ctr

End Sub

Cordialement.

Daniel

Cette réponse a-t-elle été utile ?

1 personne a trouvé cette réponse utile.
0 commentaires Aucun commentaire

31 réponses supplémentaires

  1. Anonyme
    2021-05-03T15:52:46+00:00

    Bonjour,

    Merci beaucoup je vais l’essayer demain !

    Je vous tiendrai au courant

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2021-05-03T15:51:55+00:00

    Comment puis-je faire avec une formule ? 

    Je vais faire en sorte que le mot soit fixe. 

    Le tableau est sur une feuille excel, il est vertical et sera amené à changer. 

    Merci d’avance

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Hecatonchire 53,950 Points de réputation Modérateur bénévole
    2021-05-03T14:04:15+00:00

    Bonjour

    Pourquoi avec VBA et pas une formule directement ?

    Le mot fixe ou variable (alors comment l'obtenir ?)

    Le tableau dans quelle feuille ? quelle position/ plage (fixe ?)

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire