Microsoft 365 SelectionChange feuil2 condition sur feuil1

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous :)

Je cherche à faire l'action suivante
- En feuil1 la cel B6 contient le texte "Test - Outre Mer" . Ce texte contient " - Outre Mer" à droite,12
- En Feuil2, si clic cel I12, et si en feuil1 la cel B6 contient le texte " - Outre Mer" : je voudrais écrire "OK"

Je n'arrive pas à trouver le bon code.
L'auriez-vous ?

Je joins un petit fichier test et je continue à chercher,
Un grand merci par avance,
lionel :)
 

Pièces jointes

  • test1.xlsm
    24.1 KB · Affichages: 4
Solution
Bonjour,

Oh ! ActiveCell n'existe QUE sur la feuille active ! Si celle-ci est Feuil2, ActiveCell ne peut être sur Feuil1.
Dans le fichier joint, dans le module de code de Feuil1 une variable publique, nommée 'CelluleActive' qui concervera la cellule active de la feuille avant que celle-ci ne perde le focus.

Et votre code sur Feuil2 =
VB:
Private Sub Worksheet_SelectionChange(ByVal R As Range)
    If Not Intersect(R, Range("i12")) Is Nothing And Not Sheets("Feuil1").CelluleActive Is Nothing Then
        Application.EnableEvents = False: Application.ScreenUpdating = False
        If Right(Sheets("Feuil1").CelluleActive, 12) <> " - Outre Mer" Then
            If MsgBox("Avez-vous vérifié si pas en Outre Mer ?", vbQuestion + vbYesNo) <>...

Hasco

XLDnaute Barbatruc
Repose en paix
Bonsoir,

Deux petites erreurs existaient :

1 - La feuille "Accueil" n'existait pas dans le classeur.
2 - Si vous voulez que "Ok" soit mis en réponse à la question, alors le test msgbox doit être = vbYes et non <> vbYes

VB:
Private Sub Worksheet_SelectionChange(ByVal R As Range)
    If Not Intersect(R, Range("i12")) Is Nothing Then
        If Right(Sheets("Feuil1").Range("b6"), 12) = " - Outre Mer" Then
            If MsgBox("Avez-vous vérifié si pas en Outre Mer ?", vbQuestion + vbYesNo) = vbYes Then
                ActiveCell = "OK"
            End If
        End If
    End If
End Sub

J'ai enlevé les [a1].select. Les Select dans un évènement change rappellent l'évènement inutilement ou alors mettez : Application.EnableEvents = false, avant et True après.

cordialement
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour @Phil69970, bonjour @Hasco, le Forum,
Je vous souhaite une belle journée :)

Je reviens sur le fil car j'ai un souci que je n'avais pas prévu.
Le code fonctionne quand il se réfère à une cellule "fixe" en Feuil1 ...
Mais faudrait que ce soit sur la cellule active de la Feuil1 car ce n'est jamais la même dans mon fichier de travail et ça beugue : If Right(Sheets("Feuil1").Range(ActiveCell), 12) <> " - Outre Mer" Then
1651565538337.png

Je n'arrive pas à trouver le bon code Grrrr !!! :mad:
Encore une petite aide ?
Merci à nouveau,
lionel :)
 

Pièces jointes

  • test.xlsm
    27.8 KB · Affichages: 2

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Oh ! ActiveCell n'existe QUE sur la feuille active ! Si celle-ci est Feuil2, ActiveCell ne peut être sur Feuil1.
Dans le fichier joint, dans le module de code de Feuil1 une variable publique, nommée 'CelluleActive' qui concervera la cellule active de la feuille avant que celle-ci ne perde le focus.

Et votre code sur Feuil2 =
VB:
Private Sub Worksheet_SelectionChange(ByVal R As Range)
    If Not Intersect(R, Range("i12")) Is Nothing And Not Sheets("Feuil1").CelluleActive Is Nothing Then
        Application.EnableEvents = False: Application.ScreenUpdating = False
        If Right(Sheets("Feuil1").CelluleActive, 12) <> " - Outre Mer" Then
            If MsgBox("Avez-vous vérifié si pas en Outre Mer ?", vbQuestion + vbYesNo) <> vbYes Then
                ActiveCell = "erreur"
                [a1].Select
            Else
                ActiveCell = "OK"
                [a1].Select
            End If
        End If
        [a1].Select
        Application.EnableEvents = True: Application.ScreenUpdating = True
    End If
End Sub

Au fait, inutile de mettre des Application.... partout, juste avant et après les éventuels actions.
cordialement
 

Pièces jointes

  • Lionel test.xlsm
    33 KB · Affichages: 1

Discussions similaires

  • Résolu(e)
Microsoft 365 Code VBA
Réponses
7
Affichages
739

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 810
dernier inscrit
mohammedaminelahbali