Microsoft 365 SelectionChange feuil2 condition sur feuil1

  • Initiateur de la discussion Initiateur de la discussion Usine à gaz
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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) <>...
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
 
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 !!! 😡
Encore une petite aide ?
Merci à nouveau,
lionel 🙂
 

Pièces jointes

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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
927
Retour