XL 2010 problème de version pour un scrip

sebbbbb

XLDnaute Occasionnel
bonjour

le scrip ci-dessous fonctionne tres bien avec excel 2007 mais pas du tout avec excel 2010. Peut on y remédier svp ?

**

Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name = "CSR" Then
If Sheets("CSR").Range("I9").Value = "" Or Sheets("CSR").Range("N9").Value = "" Then
Cancel = True
MsgBox "Veuillez insérer les dates de mise a quai et départ du navire pour pouvoir imprimer"
End If
End If

ensub

**

merci par avance
seb
 

vgendron

XLDnaute Barbatruc
Bonjour,

en ajoutant un t à scrip... :-D
sinon, en écrivant End Sub correctement..

VB:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name = "CSR" Then
If Sheets("CSR").Range("I9").Value = "" Or Sheets("CSR").Range("N9").Value = "" Then
Cancel = True
MsgBox "Veuillez insérer les dates de mise a quai et départ du navire pour pouvoir imprimer"
End If
End If

End Sub
à moins que l'évènement beforePrint ait été supprimé de office 2010 puis remis sur 2016 ?
 

vgendron

XLDnaute Barbatruc
à part les erreurs de frappe donc, je ne vois aucune raison que ce script ne fonctionne pas (d'ailleurs. ca veut dire quoi: ne fonctionne pas? ne fait rien? plante?
sans ton fichier, difficile à dire
 

sebbbbb

XLDnaute Occasionnel
en fait j'ai exactement le même fichier installé sur 2 ordi différents

chez moi excel 2007 et le script fonctionne parfaitement

au boulot excel 2010 et le code vba ne se lance pas. Aucun message qui apparait et l'impression n'est pas bloquée

bizarre non ?
 

job75

XLDnaute Barbatruc
Bonjour sebbbbb, vgendron,

Pour fonctionner le code doit être placé dans ThisWorkbook, c'est élémentaire...

Et les macros activées...

A+
 

vgendron

XLDnaute Barbatruc
questions.. est ce que les macros sont activées sur ton pc boulot?
est ce qu'il y a bien des imprimantes installées
est ce que tu as bien une feuille CSR
 

sebbbbb

XLDnaute Occasionnel
J envoie le scrip complet ce soir, il y aura une explication subtile bien que ce soit etonnant que cela fonctionne sur l un et pas sur l autre
 

sebbbbb

XLDnaute Occasionnel
Bonjour

voici donc le script total tel qu'il apparait dans workbook

**
Option Explicit
Const PleinEcran$ = "Feuil110,Feuil331,Feuil341,Feuil351,Feuil161,Feuil311,Feuil301,Feuil361,Feuil511,Feuil551,Feuil641" 'CodeNames des feuilles en plein écran, à adapter
Dim desactive As Boolean 'mémorisation de la variable

Private Sub Workbook_Activate()
Workbook_SheetActivate ActiveSheet
End Sub

Private Sub Workbook_Deactivate()
desactive = True
Workbook_SheetActivate ActiveSheet
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Not desactive And InStr("," & PleinEcran & ",", "," & Sh.CodeName & ",") Then
Application.DisplayFullScreen = True
If Application.CutCopyMode Then Exit Sub 'autorisation pour des copier/coller
Application.DisplayFormulaBar = False 'facultatif
ActiveWindow.DisplayHeadings = False 'facultatif
ActiveWindow.DisplayGridlines = False 'facultatif
ActiveWindow.DisplayHorizontalScrollBar = False 'facultatif
ActiveWindow.DisplayVerticalScrollBar = False 'facultatif

Else
desactive = False
Application.DisplayFullScreen = False
ActiveWindow.WindowState = xlMaximized
If Application.CutCopyMode Then Exit Sub 'autorisation pour des copier/coller
Application.DisplayFormulaBar = True 'facultatif
ActiveWindow.DisplayHeadings = True 'facultatif
ActiveWindow.DisplayGridlines = False 'facultatif
ActiveWindow.DisplayHorizontalScrollBar = True 'facultatif
ActiveWindow.DisplayVerticalScrollBar = True 'facultatif
End If

End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Sheets("Fiche Données").Range("M2") = "" Then MsgBox "SVP INDIQUER LE DONNEUR D'ORDRE DANS L'ONGLET 'FICHE DONNEES'": Cancel = True
If Sheets("Fiche Données").Range("A5") = "" Then MsgBox "MERCI INDIQUER LE NOM DU CHARGEUR ET / OU DU RECEPTIONNAIRE DE LA MARCHANDISE DANS L'ONGLET 'FICHE DONNEES'": Cancel = True
If Sheets("Fiche Données").Range("A20") = "" Then MsgBox "SVP INDIQUER LE PORT DE PROVENANCE DANS L'ONGLET 'FICHE DONNEES'": Cancel = True
If Sheets("Fiche Données").Range("U20") = "" Then MsgBox "SVP INDIQUER LE PORT DE DESTINATION DANS L'ONGLET 'FICHE DONNEES'": Cancel = True
If Sheets("Fiche Données").Range("Y16") = "2" And Sheets("Fiche Données").Range("A24") = "" Then MsgBox "SVP INDIQUER LA MARCHANDISE A DECHARGER DANS L'ONGLET 'FICHES DONNEES'": Cancel = True
If Sheets("Fiche Données").Range("Y16") = "3" And Sheets("Fiche Données").Range("U24") = "" Then MsgBox "SVP INDIQUER LA MARCHANDISE A CHARGER DANS L'ONGLET 'FICHES DONNEES'": Cancel = True
If Sheets("Fiche Données").Range("Y16") = "7" And Sheets("Fiche Données").Range("A24") = "" Then MsgBox "SVP INDIQUER LA MARCHANDISE A DECHARGER DANS L'ONGLET 'FICHES DONNEES'": Cancel = True
If Sheets("Fiche Données").Range("Y16") = "7" And Sheets("Fiche Données").Range("U24") = "" Then MsgBox "SVP INDIQUER LA MARCHANDISE A CHARGER DANS L'ONGLET 'FICHES DONNEES'": Cancel = True

End Sub

Private Sub Workbook_Open()
If Worksheets("DA").Visible = True Then Exit Sub
If Worksheets("DA N°1").Visible = True Then Exit Sub
Worksheets("Fiche Données").Activate
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Worksheets("DA").Visible = True Then Exit Sub
If Worksheets("DA N°1").Visible = True Then Exit Sub
If MsgBox(" SVP, MERCI CONFIRMER QUE VOUS AVEZ :" & vbCrLf & vbCrLf & vbCrLf & "- Mis a jour la check list (avec date & initiales)" & vbLf & vbLf & "- Mis a jour S.Wing" & vbLf & vbLf & "- Actualisé l'écran du bureau" & vbLf & vbLf & "- Envoyé L'email quotidien avec les prospects actualisés" & vbLf & vbLf & "- Mis à jour l'eventuel hub system (youriss / eyefreight / DA desk)", 292, " BONJOUR " & Environ("UserName") & " AVANT DE FERMER CE FICHIER,") = 6 Then
Else
Cancel = True
End If
Dim I
For I = 1 To ActiveWorkbook.Worksheets.Count
If Sheets(I).Name Like ("CList" & "*") Then
Sheets(I).Activate
Exit Sub
End If
Next I
End Sub

Private Sub Workbook_BeforePrint(Cancel As Boolean)

If ActiveSheet.Name = "CSR" Then
If Sheets("CSR").Range("I9").Value = "" Or Sheets("CSR").Range("N9").Value = "" Then
Cancel = True
MsgBox "Veuillez insérer les dates de mise a quai et départ du navire pour pouvoir imprimer"
End If
End If

If ActiveSheet.Name = "Sof Tata" Then
If Sheets("Sof Tata").Range("A9").Value = "" Or Sheets("Sof Tata").Range("F7").Value = "" Then
Cancel = True
MsgBox "Veuillez insérer le nom de l'armateur / opérateur et du Commandant du navire pour pouvoir imprimer"
End If
End If

If ActiveSheet.Name = "Sof Conventionnel" Then
If Sheets("Sof Conventionnel").Range("A8").Value = "" Then
Cancel = True
MsgBox "Veuillez insérer le nom de l'armateur ou opérateur pour pouvoir imprimer"
End If
End If

If ActiveSheet.Name = "SOF clinker" Then
If Sheets("SOF clinker").Range("A11").Value = "" Or Sheets("SOF clinker").Range("F9").Value = "" Then
Cancel = True
MsgBox "Veuillez insérer le nom de l'armateur / opérateur et du Commandant du navire pour pouvoir imprimer"
End If
End If

If ActiveSheet.Name = "SOF 1" Then
If Sheets("SOF 1").Range("A10").Value = "" Or Sheets("SOF 1").Range("F7").Value = "" Then
Cancel = True
MsgBox "Veuillez insérer le nom de l'armateur / opérateur et du Commandant du navire pour pouvoir imprimer"
End If
End If

If ActiveSheet.Name = "Sof export" Then
If Sheets("Sof export").Range("A10").Value = "" Or Sheets("Sof export").Range("F7").Value = "" Then
Cancel = True
MsgBox "Veuillez insérer le nom de l'armateur / opérateur et du Commandant du navire pour pouvoir imprimer"
End If
End If

If ActiveSheet.Name = "SOF GNL import" Then
If Sheets("SOF GNL import").Range("D14").Value = "" Then
Cancel = True
MsgBox "Veuillez insérer le nom de l'armateur / opérateur pour pouvoir imprimer"
End If
End If

If ActiveSheet.Name = "SOF GNL export" Then
If Sheets("SOF GNL export").Range("D14").Value = "" Then
Cancel = True
MsgBox "Veuillez insérer le nom de l'armateur / opérateur pour pouvoir imprimer"
End If
End If

If ActiveSheet.Name = "Sof ammo import" Then
If Sheets("Sof ammo import").Range("A9").Value = "" Or Sheets("Sof ammo import").Range("F7").Value = "" Then
Cancel = True
MsgBox "Veuillez insérer le nom de l'armateur / opérateur et du Commandant du navire pour pouvoir imprimer"
End If
End If

If ActiveSheet.Name = "SOF EXXON" Then
If Sheets("Fiche Données").Range("E15").Value = "DONGES N°" Then Cancel = True
MsgBox "Veuillez indiquer le nom complet du poste a quai pour pouvoir imprimer"
End If

If ActiveSheet.Name = "Sof Airbus" Then
If Sheets("Fiche Données").Range("E15").Value = "RORO N°" Then Cancel = True
MsgBox "Veuillez indiquer le nom complet du poste a quai pour pouvoir imprimer"
End If

If ActiveSheet.Name = "SOF GNL import" Then
If Sheets("Fiche Données").Range("E15").Value = "GDF N°" Then Cancel = True
MsgBox "Veuillez indiquer le nom complet du poste a quai pour pouvoir imprimer"
End If

If ActiveSheet.Name = "SOF GNL export" Then
If Sheets("Fiche Données").Range("E15").Value = "GDF N°" Then Cancel = True
MsgBox "Veuillez indiquer le nom complet du poste a quai pour pouvoir imprimer"
End If

If ActiveSheet.Name = "Sof ammo yara import" Then
If Sheets("Fiche Données").Range("E15").Value = "CHEVIRE N°" Then Cancel = True
MsgBox "Veuillez indiquer le nom complet du poste a quai pour pouvoir imprimer"
End If

If ActiveSheet.Name = "SOF 1" Then
If Sheets("Fiche Données").Range("E15").Value = "TAA N°" Then Cancel = True
MsgBox "Veuillez indiquer le nom complet du poste a quai pour pouvoir imprimer"
End If


End Sub

**

Donc comme expliqué précédement, avec le même fichier tout fonctionne bien chez moi sur mon ordi avec excel 2007 , mais une partie du script ne fonctionne pas sur mon ordi boulot avec excel 2010 (toute la partie qui bloque l'impression)

je mets en vert ce qui ne fonstionne pas. L'impression ne se lance pas seulement sur l'ordi du boulot (mais fonctionne tres bien chez moi)

merci
seb
 

vgendron

XLDnaute Barbatruc
il y a surement une différence quelque part.... entre ton pc et celui du boulot (présence d'une imprimante?)
du coup.. pas sur que le problème vienne de ton code "BeforePrint"
je me suis permis de le modifier un peu avec un select case,
et j'ai ajouté un Msgbox pour que tu vérifies que la macro est bien executée

VB:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
MsgBox ("entrée dans le beforePrint")
With ActiveSheet
    Select Case .Name
        Case "CSR"
            If .Range("I9").Value = "" Or .Range("N9").Value = "" Then
                Cancel = True
                MsgBox "Veuillez insérer les dates de mise a quai et départ du navire pour pouvoir imprimer"
            End If

        Case "Sof Tata"
            If .Range("A9").Value = "" Or .Range("F7").Value = "" Then
                Cancel = True
                MsgBox "Veuillez insérer le nom de l'armateur / opérateur et du Commandant du navire pour pouvoir imprimer"
            End If
        End If
        
        Case "Sof Conventionnel"
            If .Range("A8").Value = "" Then
                Cancel = True
                MsgBox "Veuillez insérer le nom de l'armateur ou opérateur pour pouvoir imprimer"
            End If
        
        
        Case "SOF clinker"
            If .Range("A11").Value = "" Or .Range("F9").Value = "" Then
                Cancel = True
                MsgBox "Veuillez insérer le nom de l'armateur / opérateur et du Commandant du navire pour pouvoir imprimer"
            End If
        
        
        Case "SOF 1"
            If .Range("A10").Value = "" Or .Range("F7").Value = "" Then
                Cancel = True
                MsgBox "Veuillez insérer le nom de l'armateur / opérateur et du Commandant du navire pour pouvoir imprimer"
            End If
        
        
        Case Is = "Sof export"
            If .Range("A10").Value = "" Or .Range("F7").Value = "" Then
                Cancel = True
                MsgBox "Veuillez insérer le nom de l'armateur / opérateur et du Commandant du navire pour pouvoir imprimer"
            End If
        
        
        Case "SOF GNL import"
            If .Range("D14").Value = "" Then
                Cancel = True
                MsgBox "Veuillez insérer le nom de l'armateur / opérateur pour pouvoir imprimer"
            End If
        
        
        Case "SOF GNL export"
            If .Range("D14").Value = "" Then
                Cancel = True
                MsgBox "Veuillez insérer le nom de l'armateur / opérateur pour pouvoir imprimer"
            End If
        
        
        Case "Sof ammo import"
            If .Range("A9").Value = "" Or .Range("F7").Value = "" Then
                Cancel = True
                MsgBox "Veuillez insérer le nom de l'armateur / opérateur et du Commandant du navire pour pouvoir imprimer"
            End If


        Case "SOF EXXON"
            If Sheets("Fiche Données").Range("E15").Value = "DONGES N°" Then
                Cancel = True
                MsgBox "Veuillez indiquer le nom complet du poste a quai pour pouvoir imprimer"
            End If
        
        Case "Sof Airbus"
            If Sheets("Fiche Données").Range("E15").Value = "RORO N°" Then
                Cancel = True
                MsgBox "Veuillez indiquer le nom complet du poste a quai pour pouvoir imprimer"
            End If
        
        Case "SOF GNL import"
            If Sheets("Fiche Données").Range("E15").Value = "GDF N°" Then
                Cancel = True
                MsgBox "Veuillez indiquer le nom complet du poste a quai pour pouvoir imprimer"
            End If
        
        Case "SOF GNL export"
            If Sheets("Fiche Données").Range("E15").Value = "GDF N°" Then
                Cancel = True
                MsgBox "Veuillez indiquer le nom complet du poste a quai pour pouvoir imprimer"
            End If
        
        Case "Sof ammo yara import"
            If Sheets("Fiche Données").Range("E15").Value = "CHEVIRE N°" Then
                Cancel = True
                MsgBox "Veuillez indiquer le nom complet du poste a quai pour pouvoir imprimer"
            End If
        
        Case "SOF 1"
            If Sheets("Fiche Données").Range("E15").Value = "TAA N°" Then
                Cancel = True
                MsgBox "Veuillez indiquer le nom complet du poste a quai pour pouvoir imprimer"
            End If
    End Select
    End With
    
End Sub
 

sebbbbb

XLDnaute Occasionnel
Ok merci
J essaie ce soir
Je te confirme que les fichiers sont exactement les memes d un ordi a l autre

Seul diff au boulot, j ai le choix entre plusieurs imprimantes. Cela pourrait il etre la cause ?

Merci
Seb
 

vgendron

XLDnaute Barbatruc
j'ai noté une chose dans ton code
pour les derniers cas de feuille active: à partir de la feuille SOF EXXON
tu regardes le contenu de E15 dans la feuille "Données" (et plus dans la feuille active comme pour les cas précédents)
et ta syntaxe est telle que: si le contenu n'est pas bon, alors tu fais "cancel=true"
et le msgbox est affiché quelque soit le contenu
c'est peut etre normal?
 

sebbbbb

XLDnaute Occasionnel
EUREKA !

J'ai trouvé. En fait les 2 codes fonctionnent très bien sur les 2 bécanes. La seule différence c'est que sur mon ordi de boulot le message apparaît après avoir lancé le OK sur la boite de dialogue de l'imprimante alors que chez moi, cela se fait des que je clique sur fichier / imprimer

merci en tout cas pour le temps passé à essayer de me dépatouiller

seb
 

Discussions similaires


Haut Bas