Lebonetletruand
XLDnaute Occasionnel
Bonsoir,
Me revoilà, avec le même fichier. Cette fois ci, je n'arrive pas à stopper une boucle. Je m'explique : Aprés la saisie des commandes en feuil2, j'aimerais avertir l'opérateur s'il décide de vouloir modifier la Feuil1 (base de données nom, adresse,... des adhérents). En cas de modification, les noms ne seront plus en adéquation avec les commandes.
Avec le fichier ci dessous, si vous voulez modifier le premier nom (A), une msg box OkCancel s'ouvre. Si je clique OK, pas de problème la modification est retenue. Si je clique Annuler, il annule la modif de la cellule mais continue d'ouvrir sans cesse la msgbox, si je clique 50 fois sur annuler, elle revient toujours. J'ai tenté en vain Exit Sub mais rien à faire...
Pourriez vous m'apporter des éléments de réponse à cette boucle sans fin?
Merci par avance
Me revoilà, avec le même fichier. Cette fois ci, je n'arrive pas à stopper une boucle. Je m'explique : Aprés la saisie des commandes en feuil2, j'aimerais avertir l'opérateur s'il décide de vouloir modifier la Feuil1 (base de données nom, adresse,... des adhérents). En cas de modification, les noms ne seront plus en adéquation avec les commandes.
Avec le fichier ci dessous, si vous voulez modifier le premier nom (A), une msg box OkCancel s'ouvre. Si je clique OK, pas de problème la modification est retenue. Si je clique Annuler, il annule la modif de la cellule mais continue d'ouvrir sans cesse la msgbox, si je clique 50 fois sur annuler, elle revient toujours. J'ai tenté en vain Exit Sub mais rien à faire...
Pourriez vous m'apporter des éléments de réponse à cette boucle sans fin?
Merci par avance
Code:
[COLOR="Blue"]Public MemVal As String[/COLOR]
[COLOR="blue"]Private Sub Worksheet_Change(ByVal Target As Range)[/COLOR]
For i = 8 To 67
' Zone complète = 8 to 67
With Workbooks("Classeur2(1).xls").Sheets("Feuil2")
Set ColVide = .Range(.Cells(8, i), .Cells(127, i))
End With
' If Target.Value <> MemVal Then
' MsgBox "Ancienne valeur = " & MemVal & " - Nouvelle valeur = " & Target.Value
' End If
If Not Intersect(Cells(i - 4, 2), Target) Is Nothing Then
If Application.WorksheetFunction.CountA(ColVide) <> 0 Then
Msg = "Attention, le tableau des réponses à la commande a commencé à être complété pour " & MemVal & "." & Chr(13) & Chr(13) & " Un changement dans la liste des adhérents est fortement déconseillé. Si une modification doit être réalisée, les quantités commandées par l'adhérent risquent de ne plus être en adéquation avec son nom."
Style = vbOKCancel + vbExclamation
Title = " Modification déconseillée "
Response = MsgBox(Msg, Style, Title)
If Response = vbCancel Then Target.Value = MemVal: Exit Sub
End If
End If
Next i
End Sub
[COLOR="blue"]Private Sub Worksheet_SelectionChange(ByVal Target As Range)[/COLOR]
MemVal = Selection.Value
End Sub
Pièces jointes
Dernière édition: