Problème avec une Macro

Bonjour,

J'ai besoin d'aide concernant une macro.

Je voudrais pour mes identifiants répérer une partie du texte pour pouvoir remplir une colonne.

Par exemple, pour :

AOU-CRI-DCP => Critique

Je repère le mot "CRI" et j'attribue sur la même ligne et dans une nouvelle colonne le mot "Critique".

DUB-ON-CAP => Allumé

Je repère le mot "ON" et j'attribue sur la même ligne et dans une nouvelle colonne le mot "Allumé".

OPQ-DEC-TRO => Déconnexion

Je repère le mot "DEC" et j'attribue sur la même ligne et dans une nouvelle colonne le mot "Déconnexion".

Est-ce compréhensible ?

L'identifiant se trouve dans la colonne A et l'état (qui correspond à crtique, allumé et déconnexion) se trouve dans la colonne E.

Voici mon code :

Sub Action()
Dim MotCle
Dim i As Byte
Dim A As Range
    'On définit le mot clé
    MotCle = Array("CRI")
    'On effectue la recherche du mot clé dans la colonne A de la feuil1
    For i = 0 To UBound(MotCle)
            Set A = Worksheets("Feuil1").Columns(1).Find(MotCle(i), LookIn:=xlValues, lookat:=xlPart)
            'Si le mot clé est trouvé
            If Not A Is Nothing Then
                    'On écrit le texte sur la ligne du mot trouvé 
                   Worksheets("Feuil1").Cells(i + 1, 5).Value = "critique"   
            End If
    Next i
End Sub

J'ai essayé juste pour critique pour le moment.

Le problème est que le code ne me fait rien.

Je peux éventuellement fournir le fichier excel.

Merci.

Bonjour,

Ceci serait certainement mieux :

        If Not A Is Nothing Then
                    'On écrit le texte sur la ligne du mot trouvé 
              A.Cells(1, 5).Value = "critique"   
        End If

mais cela ne règle qu'une partie du problème.

Ta variable i sert à parcourir ton tableau de mots-clés. Au cas où il y en aurait plusieurs à détecter, il faudrait l'identifier pour répondre ce que tu pourrait faire avec un second tableau...

Exemple :

    MotCle = Array("CRI", "ON")
    RéponseCle = Array("critique", "allumé")
    For i = 0 To UBound(MotCle)
        Set A = Worksheets("Feuil1").Columns(1).Find(MotCle(i), LookIn:=xlValues, lookat:=xlPart)
        If Not A Is Nothing Then
            A.Cells(1, 5).Value = RéponseCle(i)
        End If
    Next i

En second lieu, tu n'opères la recherche qu'une fois, donc si le mot-clé figure plusieurs fois, les suivantes passent à la trappe... ?

Cordialement.

Bonjour,

Ci-joint une proposition à tester.

Avec un titre adéquat et un fichier, c'est mieux ...

Bonne journée

Bouben

hello MFerrand

Public Sub MAJ()

    Dim iLig As Integer
    Dim iDerLig As Integer

    iDerLig = Range("A" & Rows.Count).End(xlUp).Row

    For iLig = 1 To iDerLig
        If InStr(1, Range("A" & iLig).Value, "-CRI-") > 0 Then
            Range("E" & iLig).Value = "Critique"
        ElseIf InStr(1, Range("A" & iLig).Value, "-ON-") > 0 Then
            Range("E" & iLig).Value = "Allumé"
        ElseIf InStr(1, Range("A" & iLig).Value, "-DEC-") > 0 Then
            Range("E" & iLig).Value = "Déconnexion"
        End If
    Next iLig

End Sub

Merci à vous deux, ça marche parfaitement. Merci beaucoup

Puis-je demander un autre service ? Si oui dois-je créer un autre sujet ?

Avec un titre adéquat et un fichier, c'est mieux ...

Pas de problème, c'est noté pour la prochaine fois.

Bonjour,

Pour un meilleur suivi, c'est mieux de créer un nouveau sujet, en prenant connaissance des quelques règles à respecter :

https://forum.excel-pratique.com/annonces/explications-et-regles-a-respecter-t13.html

A ma connaissance, les conditions générales du forum ne limite pas le nombre de demandes

Bonne journée

Bouben

Merci.

Je vais poster un nouveau sujet dans la journée

Rechercher des sujets similaires à "probleme macro"