Menu

Activer Copier/Coller [Résolu]

andy2092 54 Messages postés dimanche 13 mai 2018Date d'inscription 25 juillet 2018 Dernière intervention - 13 mai 2018 à 19:54 - Dernière réponse : gbinforme 15099 Messages postés lundi 18 octobre 2004Date d'inscriptionContributeurStatut 26 juillet 2018 Dernière intervention
- 26 juil. 2018 à 09:08
Salut,

J'ai réalisé une macro pour afficher un message d'alerte sur une feuille (CT) quand une donnée est sélectionnée sur une liste déroulante. J'ai plusieurs tableaux dans la même feuille. Le message s'affiche qu'une seule fois, d'où l'utilisation de cette macro. Cependant je ne peux pas utiliser le copier/coller sur ma feuille quand j'applique la macro. Pouvez-vous m'aider à ce sujet ? Merci :)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'Message d'alerte shift 2x8 Tableau PHB
If Range ("J3") = "2x8" Then
'Cellule Z3 dans Feuille CT
If Cells (3, 26) <> "OK" Then
MsgBox "N'oubliez pas d'utiliser les taux en 2x8", vbExclamation, "Alerte Shift PHB"
Cells (3, 26) = "OK"
End If
Else
Cells(3, 26).Clear
End If

'Message d'alerte shift 2x8 Tableau PDB
If Range ("J12") = "2x8" Then
'Cellule Z4 dans Feuille CT
If Cells(4, 26) <> "OK" Then
MsgBox "N'oubliez pas d'utiliser les taux en 2x8", vbExclamation, "Alerte Shift PDB"
Cells(4, 26) = "OK"
End If
Else
Cells(4, 26).Clear
End If

'Message d'alerte shift 2x8 Tableau Essai
If Range("J29") = "2x8" Then
'Cellule Z5 dans Feuille CT
If Cells(5, 26) <> "OK" Then
MsgBox "N'oubliez pas d'utiliser les taux en 2x8", vbExclamation, "Alerte Shift Essai"
Cells(5, 26) = "OK"
End If
Else
Cells(5, 26).Clear
End If
Afficher la suite 

Votre réponse

14 réponses

gbinforme 15099 Messages postés lundi 18 octobre 2004Date d'inscriptionContributeurStatut 26 juillet 2018 Dernière intervention - 13 mai 2018 à 21:30
0
Merci
Bonjour,

Je te propose de remplacer ta procédure par celle-ci :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.CountLarge > 1 Then Exit Sub
If Not Intersect(Target, Union(Range("J3"), Range("J12"), Range("J29"))) Is Nothing Then
'Message d'alerte shift 2x8 Tableau PHB
    If Target = "2x8" Then
        Dim lig As Long
        lig = IIf(Target.Row = 3, 3, IIf(Target.Row = 12, 4, 5))
                'Cellule Z3/4/5 dans Feuille CT
        If Cells(lig, 26) <> "OK" Then
            MsgBox "N'oubliez pas d'utiliser les taux en 2x8", vbExclamation, "Alerte Shift PHB"
            Cells(lig, 26) = "OK"
        End If
    Else
        Cells(lig, 26).Clear
    End If
End If
End Sub


Elle ne se déclenche que lorsque ton code est saisi et ne gène pas la copie.
andy2092 54 Messages postés dimanche 13 mai 2018Date d'inscription 25 juillet 2018 Dernière intervention - 15 mai 2018 à 10:16
Bonjour,

Ça marche ! Dernière question : pourquoi le "12" ?
andy2092 54 Messages postés dimanche 13 mai 2018Date d'inscription 25 juillet 2018 Dernière intervention - 20 juil. 2018 à 10:00
Bonjour,

Si je souhaite rajouter une autre cellule (J34) qui affiche le même message, comment dois-je procéder dans le code ?

Merci !
gbinforme 15099 Messages postés lundi 18 octobre 2004Date d'inscriptionContributeurStatut 26 juillet 2018 Dernière intervention - 25 juil. 2018 à 10:14
Bonjour,

Il faut la rajouter dans la ligne :
If Not Intersect(Target, Union(Range("J3"), Range("J34"), Range("J12"), Range("J29"))) Is Nothing Then
andy2092 54 Messages postés dimanche 13 mai 2018Date d'inscription 25 juillet 2018 Dernière intervention - 25 juil. 2018 à 14:40
Bonjour,

C'est ce que j'ai fait mais le problème c'est que quand les autres cellules sont en "2x8" (J3, J12, J29), le message n'apparaît pas du premier coup sur J34.

Est-ce parce qu'il n'y a que trois cellules qui contiennent "OK" et non quatre maintenant ?
gbinforme 15099 Messages postés lundi 18 octobre 2004Date d'inscriptionContributeurStatut 26 juillet 2018 Dernière intervention - 26 juil. 2018 à 09:08
Bonjour,

Le message n'apparait que si
Cells(lig, 26) <> "OK"

la cellule de la colonne 26 est sans doute valorisée par formule et quand tu valides J34 elle n'a pas "OK" encore.
Commenter la réponse de gbinforme