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 Sub

Bonjour, 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.Value

Pour 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.Value

Par 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.Value

Par 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

Rechercher des sujets similaires à "probleme mon code macro impression"