Problème de boucle

F

fred

Guest
Bonjour,

Dans mon code ci-dessous, je souhaiterais que si le numéro de certificat n'existe pas dans la base, les 2 messages suivants s'affichent l'un après l'autre


MsgBox 'IL NE S'AGIT PAS D'UN DUPLICATA', vbCritical, 'VERIFICATION EFFECTUEE'

MsgBox 'VOUS DEVEZ IMPRIMER LE CERTIFICAT PAR LA METHODE CLASSIQUE', vbInformation, 'INSTRUCTION'


J'ai bien fait des essais mais alors les message ci dessus s'affichent à chaque cellule contrôlée dans la base, alors que je ne le veux qu'un fois ci la condition est remplie au moins une fois sur toutes les cellules contrôlées dans la base





Sub duplicata()

'vérifier que le numéro de certificat existe déjà dans la base
Dim V As Variant 'déclare la variable V
Dim Cel As Range 'déclare la variable Cel


'si l'impression a été lancée depuis la feuille 'Sucres BLANCS' (feuille active)
If ActiveSheet.Name = 'Sucres BLANCS' Then
V = Sheets('Sucres BLANCS').Range('L4').Value 'Définit la variable V L4= N° du certificat
Else
'si l'impression à été lancée depuis la feuille 'Sucres ROUX' (feuille active)
If ActiveSheet.Name = 'Sucres ROUX' Then
V = Sheets('Sucres ROUX').Range('L4').Value 'Définit la variable V L4= N° du certificat
End If
End If



With Sheets('Feuil3') 'feuille de la base

'Boucle : Vérification dans la base sur toute les cellule de la colonne A (Feuille 3)
For Each Cel In .Range('A1:A' & .Range('A65536').End(xlUp).Row)
If Cel.Value = V Then 'Condition : Si la cellule est = de la variable V
'On suspend la gestion des évènements VBA : notamment la fonction Private Sub Workbook_BeforePrint(Cancel As Boolean)
Application.EnableEvents = False
'le n° de certificat à déjà été utilisé
MsgBox 'IL S'AGIT BIEN D'UN DUPLICATA', vbInformation, 'VERIFICATION EFFECTUEE'
MsgBox 'IMPRIMER LE DUPLICATA', vbInformation, 'IMPRESSION AUTORISEE'
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
'On rétablit la gestion des évènements VBA
Application.EnableEvents = True
End If
Next Cel 'Tester la cellule suivante dans la boucle
End With



End Sub
 

Hervé

XLDnaute Barbatruc
Bonjour fred, le forum


Essaye de placer un : exit for

Instruction à placer après l'impression de la feuille, ceci te permettra de sortir de la boucle for each dès qu'une valeur sera trouvé.

de plus je vois pas l'interet du Application.EnableEvents.

Inutile, voir dangereux dans ton code.

salut
 

Statistiques des forums

Discussions
312 397
Messages
2 088 057
Membres
103 710
dernier inscrit
kty