Macro tourne en boucle

Bonjour le Forum,

Je reviens vers vous pour un problème de macro qui tente de remplacer des abréviations par des mots ou phrase.

Avec l’aide de Theze, Jean-Eric et de Wilder, que je remercie encore, j’ai une macro qui tourne très bien.

Mais j’ai une abréviation qui elle tourne en boucle car, je le suppose retrouve deux lettres correspondantes et donc multiplie à l’infini cette abréviation.

Résultat quand la macro tourne :

« la réquisition administla réquisition administla réquisition administla réquisition administ ............ etc. »

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Not Intersect(Target, Range("H15:K18")) Is Nothing Then

Select Case True

Case Target.Value Like "*Ra*"

Target.Value = Replace(Target.Value, "Ra", "La réquisition administrative ")

Case Target.Value Like "*ra*"

Target.Value = Replace(Target.Value, "ra", "La réquisition administrative ") 'revient à la cellule

Run Target.Select

'l'appui sur la touche F2 permet d'entrer en édition et mets le curseur en fin de texte

SendKeys "{F2}"

End Select

End If

End Sub

Il y aurait-il une solution à ce problème.

Merci d’avance pour votre aide.

Bàv

Bonjour. Cela tourne en boucle car il y a "ra" dans "administrative", essayez cette macro.

Option Compare Text
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Not Intersect(Target, Range("H15:K18")) Is Nothing Then
        If Target.Value Like "* ra *" Then
            Target.Value = Replace(Target.Value, " ra ", " La réquisition administrative ")
        ElseIf InStr(1, Target.Value, "ra", vbTextCompare) = 1 Then
            Target.Value = Replace(Target.Value, "ra", " La réquisition administrative ")
        ElseIf Target.Value Like "* ra" Then
            Target.Value = Replace(Target.Value, " ra", " La réquisition administrative ")
            Run Target.Select
            'l'appui sur la touche F2 permet d'entrer en édition et mets le curseur en fin de texte
            SendKeys "{F2}"
        End If
    End If
End Sub

Bonjour Wilder,

Cela fonctionne, sans vouloir abuser, est-il possible d'ajouter d'autres arguments moins complexes à cette macro.

Case Target.Value Like "*SPH*"

Target.Value = Replace(Target.Value, "SPH", "******** ")

Case Target.Value Like "*sph*"

Target.Value = Replace(Target.Value, "sph", "*******")

Case Target.Value Like "*EPI*"

Target.Value = Replace(Target.Value, "EPI", "******** ")

Case Target.Value Like "*epi*"

Target.Value = Replace(Target.Value, "epi", "*******")

Merci d'avance pour votre aide

Bàv

Option Compare Text
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Not Intersect(Target, Range("H15:K18")) Is Nothing Then
        If Target.Value Like "* ra *" Then
            Target.Value = Replace(Target.Value, " ra ", " La réquisition administrative ")
        ElseIf InStr(1, Target.Value, "ra", vbTextCompare) = 1 Then
            Target.Value = Replace(Target.Value, "ra", " La réquisition administrative ")
        ElseIf Target.Value Like "* ra" Then
            Target.Value = Replace(Target.Value, " ra", " La réquisition administrative ")
        End If
        Select Case True
        Case Target.Value Like "*SPH*"
            Target.Value = Replace(Target.Value, "SPH", "******** ")
        Case Target.Value Like "*EPI*"
            Target.Value = Replace(Target.Value, "epi", "*******")
        End Select

    End If
End Sub

Merci,

Mais comment remettre la fonction qui ramène le curseur à la fin de la conversion.

Avant en fin de macro il y avait le bout de code:

'revient à la cellule

Run Target.Select

'l'appui sur la touche F2 permet d'entrer en édition et mets le curseur en fin de texte

SendKeys "{F2}"

Comment faire tourner ce bout de code pour tous les arguments.

Encore merci d'avance.

est-il vraiment utile pour le fonctionnement ? Si oui pouvez-vous m'expliquer où il interagit ?

En fait, une fois l'abréviation lancée en début ou dans une phrase il est utile que cette macro revienne au dernier mot pour pouvoir continuer la frappe sans devoir cliquer sur la cellule et placer le curseur en fin de phrase.

Merci

entrez dans une des cellules "je fais un ra d'epi" puis validez en appuyant sur entrer.

Quand je fais cela, l'abréviation devient la phrase, mais ne revient pas dans la cellule target en bout de phrase.

J'ai essayé le code suivant, il fait ce que je voudrais, mais la macro coince et il faut faire esc pour pouvoir continuer toutes autres actions:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Not Intersect(Target, Range("H1:K18")) Is Nothing Then

If Target.Value Like "* ra *" Then

Target.Value = Replace(Target.Value, " ra ", " La réquisition administrative ")

ElseIf InStr(1, Target.Value, "ra", vbTextCompare) = 1 Then

Target.Value = Replace(Target.Value, "ra", " La réquisition administrative ")

ElseIf Target.Value Like "* ra" Then

Target.Value = Replace(Target.Value, " ra", " La réquisition administrative ")

End If

Select Case True

Case Target.Value Like "*SPH*"

Target.Value = Replace(Target.Value, "SPH", "essais ")

Case Target.Value Like "*EPI*"

Target.Value = Replace(Target.Value, "epi", "test")

End Select

'revient à la cellule

Run Target.Select

'l'appui sur la touche F2 permet d'entrer en édition et mets le curseur en fin de texte

SendKeys "{F2}"

End If

End Sub

Rechercher des sujets similaires à "macro tourne boucle"