Validation macro Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
I
Inguyone
Membre habitué
Membre habitué
Messages : 94
Inscrit le : 18 juin 2011
Version d'Excel : 2007 FR

Message par Inguyone » 16 novembre 2015, 08:22

Bonjour le Forum,

Je reviens vers vous pour « encore » vous demander de l’aide après maintes recherches infructueuses.
Avec l’aide de Theze, j’ai une macro qui transforme une abréviation en mot ou phrase.
Cette macro tourne très bien, mais serait-il possible que celle-ci déclenche aussi bien en début qu’en milieu de phrase.
Actuellement la macro ne déclenche que s’il n’y a que l’abréviation dans le début de cellule.


Private Sub Worksheet_Change(ByVal Target As Excel.Range)

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

Select Case Target.Value

Case "SPHPT"
Target.Value = "Service de protection et prévention sur le lieu de travail "
Case "EPI"
Target.Value = "L’équipe de première intervention"

Run Target.Select 'revient à la cellule
SendKeys "{F2}" 'l'appui sur la touche F2 permet d'entrer en édition et mets le curseur en fin de texte

End Select

End If

End Sub

Je vous remercie d’avance pour l’aide que vous pourrez m’apporter.
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 15'501
Appréciations reçues : 551
Inscrit le : 27 août 2012
Version d'Excel : 365 Insider

Message par Jean-Eric » 16 novembre 2015, 08:55

Bonjour,
A tester !?
Cdlt.
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 "*SPHPT*"
                Target.Value = "Service de protection et prévention sur le lieu de travail "
            Case Target.Value Like "*EPI*"
                Target.Value = "L’équipe de première intervention"
                '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
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
I
Inguyone
Membre habitué
Membre habitué
Messages : 94
Inscrit le : 18 juin 2011
Version d'Excel : 2007 FR

Message par Inguyone » 16 novembre 2015, 10:16

Bonjour Jean-Eric,

La macro tourne, mais efface toute les données précédentes
Un exemple de phrase: Ce jour EPI qui devrait devenir: Ce jour L’équipe de première intervention ......, devient L’équipe de première intervention.

Merci pour votre aide
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 15'501
Appréciations reçues : 551
Inscrit le : 27 août 2012
Version d'Excel : 365 Insider

Message par Jean-Eric » 16 novembre 2015, 11:03

Re,
Cette proposition est identique à la proposition de Theze (que je salue).
Sinon qu'elle recherche non pas un terme exact, mais si un terme est contenu dans une phrase.
Cdlt.
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
I
Inguyone
Membre habitué
Membre habitué
Messages : 94
Inscrit le : 18 juin 2011
Version d'Excel : 2007 FR

Message par Inguyone » 16 novembre 2015, 13:14

Rebonjour,

Le problème est que cette macro efface le contenu de la cellule pour y incorporer la modification.

Donc est il possible de trouver une macro qui laisserait, comme expliqué dans mon dernier message, les données déjà incorporées dans la cellule et intégrer la modification demandée sans effacer ces mêmes données.

Merci d'avance.
Avatar du membre
[Wilder]
Membre habitué
Membre habitué
Messages : 146
Inscrit le : 14 novembre 2015
Version d'Excel : 2007fr

Message par [Wilder] » 16 novembre 2015, 13:26

Bonjour, modification de la macro.
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 "*SPHPT*"
                    Target.Value = Replace(Target.Value, "SPHPT", "Service de protection et prévention sur le lieu de travail ")
                Case Target.Value Like "*EPI*"
                    Target.Value = Replace(Target.Value, "EPI", "L’équipe de première intervention")
                    '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
I
Inguyone
Membre habitué
Membre habitué
Messages : 94
Inscrit le : 18 juin 2011
Version d'Excel : 2007 FR

Message par Inguyone » 16 novembre 2015, 17:42

Bonsoir Wilder,

Merci pour cette macro, cela fonctionne comme je l'espérais.

Je vous souhaite une excellente soirée.

Bàv
Avatar du membre
[Wilder]
Membre habitué
Membre habitué
Messages : 146
Inscrit le : 14 novembre 2015
Version d'Excel : 2007fr

Message par [Wilder] » 16 novembre 2015, 18:11

Idem
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message