Je travaille depuis plusieurs années sur un fichier que je développe chez moi lorsque j'ai du temps libre et que j'installe au bureau. Jusqu'à présent je n'ai jamais eu de problème entre les deux versions de excel utilisés :
- Microsoft office 2007 à la maison et
- Microsoft office standard 2016 au bureau
Je viens de me rendre que certain scrips fonctionnent bien sur le fichier que je développe à la maison mais ne fonctionnent plus au bureau. Alors que c'est exactement le même fichier.
ci-dessous un des scrips qui pose ne fonctionne pas (pas de message d'erreur mais le blocage de l'impression selon condition ne fonctionne pas)
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name = "D1 Airbus" Or ActiveSheet.Name = "D1 E&S" Or ActiveSheet.Name = "New D1" Then
If Sheets("SSI").Visible Then
If Sheets("SSI").Range("A16").Value = "" Then
Cancel = True
MsgBox "ATTENTION " & vbLf & vbLf & _
"Impression autorisée seulement après confirmation que les points suivants ont été traités (cellule cochée dans L'ONGLET SSI) :" & vbLf & vbLf & _
"- Cocher Cellule A16 = déclaration Marpol déposée sur S-Wing" & vbLf & vbLf & _
"Pour la bonne transmission du dossier entre agent, la cellule ne doit être cochée que si le doc à bien été traité / transmis - Merci"
End If
End If
End If
End sub
Y comprenez vous quelque chose ? avez vous deja eu ce prob ? S'agit il d'un prob de compatibilité entre versions ?
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim FX$: FX = ActiveSheet.Name
If FX <> "D1 Airbus" And FX <> "D1 E&S" And FX <> "New D1" Then Exit Sub
If Not Worksheets("SSI").Visible Then Exit Sub
If [SSI!A16] <> "" Then Exit Sub
Cancel = True
MsgBox "ATTENTION " & vbLf & vbLf & _
"Impression autorisée seulement après confirmation que les points suivants ont été traités " & _
"(cellule cochée dans L'ONGLET SSI) :" & vbLf & vbLf & "- Cocher Cellule A16 = déclaration " & _
"Marpol déposée sur S-Wing" & vbLf & vbLf & "Pour la bonne transmission du dossier entre " & _
"agent, la cellule ne doit être cochée que si le doc à bien été traité / transmis - Merci"
End Sub
Si ça marche, je te laisse cliquer sur « Marquer comme solution » ;
sinon, je n'ai pas d'autre idée à proposer.
Bonsoir Soan
merci pour ton aide.
Ton code fonctionne parfaitement...et le mien aussi
En fait la différence entre les 2 versions d'excel réside dans le fait que sur excel 2007, le message d'alerte arrive instantanément avant les paramètres d'impression (qui sont bloqués) alors que sur 2016, c'est l'inverse.
Apparition de l'écran avec les paramètres d'impression et lorsqu'on valide l'impression, c'est là que le message se présente...ce qui est moins bien mais je crois que l'on ne peut rien y faire.
mais mon prob n'existe plus. merci à toi
Je viens de penser à ceci : peut-être que « DisplayAlerts = False » peut t'aider ? mais avant de sortir de la sub, n'oublie pas de mettre : « DisplayAlerts = True ».
Tu as écris : « c'est là que le message se présente... »
Donc tu mets « DisplayAlerts = False » juste avant ce qui déclenche ce message,
et après que le « moment critique » est passé, tu mets « DisplayAlerts = True » ;
donc finalement, ça peut être bien avant le End Sub.
Ajout : au besoin, utilise le mode débogage en pas à pas (touche F8)
pour déterminer quelle ligne exactement fait apparaître le message
d'alerte indésirable.