Pop-up si modification
Résolu/Fermé
fadmaam
Messages postés
34
Date d'inscription
mardi 5 mai 2015
Statut
Membre
Dernière intervention
3 novembre 2015
-
4 sept. 2015 à 15:42
fadmaam Messages postés 34 Date d'inscription mardi 5 mai 2015 Statut Membre Dernière intervention 3 novembre 2015 - 8 sept. 2015 à 16:51
fadmaam Messages postés 34 Date d'inscription mardi 5 mai 2015 Statut Membre Dernière intervention 3 novembre 2015 - 8 sept. 2015 à 16:51
A voir également:
- Pop-up si modification
- Suivi de modification word - Guide
- Logiciel modification pdf gratuit - Guide
- Serveur pop - Guide
- Autoriser pop up firefox - Guide
- Pop up mcafee - Accueil - Piratage
2 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
4 sept. 2015 à 20:22
4 sept. 2015 à 20:22
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...
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
8 sept. 2015 à 13:40
8 sept. 2015 à 13:40
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
fadmaam
Messages postés
34
Date d'inscription
mardi 5 mai 2015
Statut
Membre
Dernière intervention
3 novembre 2015
8 sept. 2015 à 16:51
8 sept. 2015 à 16:51
Ca semble fonctionner ;-)
Un tout grand merci !!!
Cordialement,
FadY
Un tout grand merci !!!
Cordialement,
FadY
8 sept. 2015 à 09:24
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