Problème sur mon code macro pour impression
Salut le forum
J'ai besoin d'aide avec ma macro ci-dessous.
Cette macro me permet d'exécuter des impressions lorsque les conditions de la cellule D35 ou D36 sont vérifiées.
Je voulais que vous apportez vos expertises sur la macro elle-meme. A t-elle été bien conçue?
Je reste disponible pour tout éclaircissement.
Sub IMPRESSION_MONEY()
'Déclaration des variables
Dim valeur_donne_D35 As String
Dim valeur_donne_D36 As String
'Sélection de la valeur de !DONNE D35 et DONNE D36 et mise en variable
Sheets("DONNE").Select
Range("D35").Select
Range("D36").Select
valeur_donne_D35 = ActiveCell.Value
valeur_donne_D36 = ActiveCell.Value
'---------------------------------
'Vérification des conditions 1 à 4
'---------------------------------
'test de la condition 1 - 1 (PS PUBLIC sans manquant)
If valeur_donne_D35 = "24" Or valeur_donne_D35 = "31" Or valeur_donne_D35 = "34" Then
Sheets("MONEY").Select
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
:=True
ElseIf valeur_donne_D35 = "20" Or valeur_donne_D35 = "23" Then
Sheets("MONEY").Select
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2, Copies:=1, Collate _
:=True
ElseIf valeur_donne_D35 = "26" Or valeur_donne_D35 = "33" Or valeur_donne_D35 = "31" Then
Sheets("MONEY").Select
ActiveWindow.SelectedSheets.PrintOut From:=2, To:=2, Copies:=1, Collate _
:=True
'--------------------------------------------------
ElseIf valeur_donne_D35 = "9" Then
Sheets("MONEY").Select
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
:=True
ElseIf valeur_donne_D35 = "11" Then
Sheets("MONEY").Select
ActiveWindow.SelectedSheets.PrintOut From:=2, To:=2, Copies:=1, Collate _
:=True
ElseIf valeur_donne_D35 = "22" Then
Sheets("MONEY").Select
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2, Copies:=1, Collate _
:=True
'--------------------------------------------------------------------------
'ANCIENS CLIENTS
'LE CLIENT A LE SERVICE
ElseIf valeur_donne_D35 = "46" Or valeur_donne_D35 = "49" Then
Sheets("DMDE").Select
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
:=True
Sheets("CGLES").Select
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2, Copies:=1, Collate _
:=True
'LE CLIENT A LE SERVICE
ElseIf valeur_donne_D35 = "48" Or valeur_donne_D35 = "51" Then
Sheets("BSMS").Select
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2, Copies:=1, Collate _
:=True
Else
If valeur_donne_D36 = "37" Then
Sheets("BSMS").Select
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2, Copies:=1, Collate _
:=True
'-------------------------------------------------------------------------------
'GESTION MONEY POUR LES CLIENTS ORDINAIRES AUTRE QUE PACK
Else
If valeur_donne_D36 = "24" Or valeur_donne_D36 = "23" Or valeur_donne_D36 = "35" Or valeur_donne_D36 = "41" Or valeur_donne_D36 = "44" Then
Sheets("SMS").Select
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2, Copies:=1, Collate _
:=True
'CAS OU LE CLIENT VEUT UNE CARTE
ElseIf valeur_donne_D36 = "25" Or valeur_donne_D36 = "26" Or valeur_donne_D36 = "37" Or valeur_donne_D36 = "43" Or valeur_donne_D36 = "46" Then
Sheets("DMDE").Select
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
:=True
Sheets("CGLES").Select
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2, Copies:=1, Collate _
:=True
'CAS OU LE CLIENT VEUT LE CONTRAT
ElseIf valeur_donne_D36 = "36" Or valeur_donne_D36 = "48" Or valeur_donne_D36 = "54" Or valeur_donne_D36 = "57" Then
Sheets("DMDE").Select
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
:=True
Sheets("CGLES").Select
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2, Copies:=1, Collate _
:=True
Sheets("SMS").Select
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=2, Copies:=1, Collate _
:=True
'Fin de la vérification des conditions
End If
End If
End If
End SubBonjour, bon, je n'ai pas tout regardé en détail, mais un truc me choque :
Ta macro fonctionne comme il faut ?
Sheets("DONNE").Select
Range("D35").Select
Range("D36").Select
valeur_donne_D35 = ActiveCell.Value
valeur_donne_D36 = ActiveCell.ValuePour moi avec ce code, tes deux variables ont la même valeur, ne devrais-tu pas plutôt mettre :
Sheets("DONNE").Select
Range("D35").Select
valeur_donne_D35 = ActiveCell.Value
Range("D36").Select
valeur_donne_D36 = ActiveCell.Value?
Sinon les select ont tendances à faire ramer les macros, tu pourrais mettre directement :
valeur_donne_D35 = Worksheets("DONNE").range("D35")
valeur_donne_D36 = Worksheets("DONNE").range("D36")Cordialement,
Merci Zirack.
J'ai remplacé le code ci-dessous:
Sheets("DONNE").Select
Range("D35").Select
Range("D36").Select
valeur_donne_D35 = ActiveCell.Value
valeur_donne_D36 = ActiveCell.ValuePar le tien ci-dessous:
valeur_donne_D35 = Worksheets("DONNE").range("D35")
valeur_donne_D36 = Worksheets("DONNE").range("D36")Er ca fonctionne bien.Vive le forum
Merci Zirack.
J'ai remplacé le code ci-dessous:
Sheets("DONNE").Select
Range("D35").Select
Range("D36").Select
valeur_donne_D35 = ActiveCell.Value
valeur_donne_D36 = ActiveCell.ValuePar le tien ci-dessous:
valeur_donne_D35 = Worksheets("DONNE").range("D35")
valeur_donne_D36 = Worksheets("DONNE").range("D36")Er ca fonctionne bien.Vive le forum