Pop-up si modification
Résolu
fadmaam
Messages postés
34
Date d'inscription
Statut
Membre
Dernière intervention
-
fadmaam Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
fadmaam Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Pop-up si modification
- Pop up mcafee - Accueil - Piratage
- Suivi de modification word - Guide
- Logiciel gratuit modification pdf - Guide
- Pop corn time - Télécharger - TV & Vidéo
- Serveur pop - Guide
2 réponses
Bonsoir Fady, bonsoir le forum,
Essaie le code ci-dessous à placer dans l'onglet Contract Portfolio.
Veille à bien laisser la variable TEST au dessus de la procédure comme elle est...
Essaie le code ci-dessous à placer dans l'onglet Contract Portfolio.
Dim TEST As Boolean 'déclare la variable TEST Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet Dim OS(1) As Worksheet 'déclare le tableau de deux valeurs OS (OngletS) Dim VR As String 'déclare la variable VR (Valeur Reherchée) Dim R As Range 'déclare la variable R (Recherche) If TEST = True Then Exit Sub 'si TEST est [Vrai], sort de la procédure (évite la boucle sur la procédure Change) TEST = True 'définit la variable TEST 'si le changement a lieu ailleurs que dans les colonnes A, B ou C, sort de la procédure If Application.Intersect(Columns("A:C"), Target) Is Nothing Then Exit Sub Set OS(0) = Sheets("Evaluation") 'définit l'onglet OS(1) Set OS(1) = Sheets("Activities") 'définit l'onglet OS(2) VR = Cells(Target.Row, 3).Value 'définit la valeur cherché (valeur de la cellule en colonne C de la ligne de la celluile modifiée) For I = 0 To 1 'boucle sur les deux onglets Set R = OS(I).Cells.Find(VR, , xlValues, xlWhole) ' définit la recherche R (Recherche la valeur VR entière dans tout l'onglet OS(I)) If Not R Is Nothing Then 'condition 1 : si il existe au moin une occurrence triouvée 'condition 2 : si "Non" au message If MsgBox("Ce contrat est utilisé dans l'onglet " & OS(I).Name & "." & Chr(13) & _ "Êtes-vous certain de vouloir procéder à cette modification ?", vbYesNo, "ATTENTION") = vbNo Then Application.Undo 'la dernière action effectuée est annulée Exit For 'sort de la boucle End If 'fin de la condition 2 End If 'fin de la condition 1 Next I 'prochaine onglet de la boucle TEST = False 'réinitialise la variable TEST End Sub
Veille à bien laisser la variable TEST au dessus de la procédure comme elle est...
Bonjour FadY, bonjour le forum,
j'ai rajouté une ligne de code :
Ça devrait résoudre le probleme :
j'ai rajouté une ligne de code :
If VR = "" Then Exit Sub 'si la valeur recherchée et vide, sort de la procédure
Ça devrait résoudre le probleme :
Dim TEST As Boolean 'déclare la variable TEST Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet Dim OS(1) As Worksheet 'déclare le tableau de deux valeurs OS (OngletS) Dim VR As String 'déclare la variable VR (Valeur Reherchée) Dim R As Range 'déclare la variable R (Recherche) If TEST = True Then Exit Sub 'si TEST est [Vrai], sort de la procédure (évite la boucle sur la procédure Change) TEST = True 'définit la variable TEST 'si le changement a lieu ailleurs que dans les colonnes A, B ou C, sort de la procédure If Application.Intersect(Columns("A:C"), Target) Is Nothing Then Exit Sub Set OS(0) = Sheets("Evaluation") 'définit l'onglet OS(1) Set OS(1) = Sheets("Activities") 'définit l'onglet OS(2) VR = Cells(Target.Row, 3).Value 'définit la valeur cherché (valeur de la cellule en colonne C de la ligne de la celluile modifiée) If VR = "" Then Exit Sub 'si la valeur recherchée et vide, sort de la procédure For I = 0 To 1 'boucle sur les deux onglets Set R = OS(I).Cells.Find(VR, , xlValues, xlWhole) ' définit la recherche R (Recherche la valeur VR entière dans tout l'onglet OS(I)) If Not R Is Nothing Then 'condition 1 : si il existe au moin une occurrence triouvée 'condition 2 : si "Non" au message If MsgBox("Ce contrat est utilisé dans l'onglet " & OS(I).Name & "." & Chr(13) & _ "Êtes-vous certain de vouloir procéder à cette modification ?", vbYesNo, "ATTENTION") = vbNo Then Application.Undo 'la dernière action effectuée est annulée Exit For 'sort de la boucle End If 'fin de la condition 2 End If 'fin de la condition 1 Next I 'prochaine onglet de la boucle TEST = False 'réinitialise la variable TEST End Sub
Avant tout, merci pour ton aide !
J'ai eu un peu de mal à insérer ton code (je suis vraiment novice) car il y avait déjà une macro et ça déconnait pas mal mais ça fonctionne au final ;-)
J'ai néanmoins un petit souci car ça tient aussi compte des cellules vides. Donc, si je rajoute une ligne dans l'onlget "Contract portfolio" (en écrivant dans une cellule vide de la colonne A), j'obtiens le message d'alerte.
Comment corriger ?
FadY