Macro impression sous condition

Gilles

XLDnaute Nouveau
Bonjour à tous
Je fais appel à vous car je n’ai que très peu de connaissance sur les macros.
Je voudrais ajouter des conditions à un bouton avec une macro impression.
Je vous joins un fichier pour être plus claire.
Je voudrais que celle-ci chercher dans la colonne A si = cellule D4 « ici en A3 », si B3 = 1 l’impression se lance, si B3=0 le bouton ne marche pas.
De plus je voudrais que la feuille soit protégée, et que si B3=1 l’impression se lance, et la cellule B3 passe à 0
 

Pièces jointes

  • Impression.xls
    28 KB · Affichages: 48
  • Impression.xls
    28 KB · Affichages: 47
  • Impression.xls
    28 KB · Affichages: 56

Dull

XLDnaute Barbatruc
Re : Macro impression sous condition

Salut Gilles et Bienvenue sur XLD, le Forum

Que veux tu imprimer la page active, un autre onglet

j'ai fait pour la page active

Code:
Private Sub CommandButton1_Click()
Dim i As Integer, DerLig As Long, C as Range
ActiveSheet.Unprotect
DerLig = Feuil1.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To DerLig
    If Cells(i, 1) = [D4] And Cells(i, 2) <> 0 Then ActiveSheet.PrintPreview ' à Remplacer par PrintOut
Next i
Set C = ActiveSheet.Columns(1).Find(What:=[D4])
If Not C Is Nothing Then C.Offset(, 1).Value = 0
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Bonne Journée
 

Pièces jointes

  • Impression Gilles.xls
    45 KB · Affichages: 52
  • Impression Gilles.xls
    45 KB · Affichages: 55
  • Impression Gilles.xls
    45 KB · Affichages: 51

Gilles

XLDnaute Nouveau
Re : Macro impression sous condition

Bonjour et merci Dull

L’onglet ou se trouve mon bouton est " Edition", de la
j'imprime un onglet "Egrenés FDR",
mais il faut aussi copie en Feuil1 Range("T153:CZ190") et coller dans l’onglet "MAGASINAGE EGRENES"
Sheets("MAGASINAGE EGRENES")
Range("A65000").End(xlUp).Offset(1) pour ensuite revenir sur mon onglet " Edition"
 

Gilles

XLDnaute Nouveau
Re : Macro impression sous condition

Bonjour Dull

La macro marche bien, mais je n’arrive pas à l’adapter à mon tableau « voir message précédent ». Mon onglet « Edition » est protégé initialement, et ma cellule en D4 est une liste déroulante, et mais connaissance sur Excel très réduite. Il est possible d’adapter la macro à mon tableau ?
Bonne journée
 

Dull

XLDnaute Barbatruc
Re : Macro impression sous condition

Re Gilles, le Fil

Oui il est possible d'adapter la Macro mais
Il aurait été judicieux de mettre un fichier représentatif de ton projet (Nombre d'Onglet, Nom, ou se situe les listes, quelles feuilles sont protégés, ce qu'il y a à copier , ou faut t'il coller ces données...)

Essaye de remettre un fichier avec les élément de ton vrai fichier sans données confidentielles

à te relire

Bonne Journée
 

Gilles

XLDnaute Nouveau
Re : Macro impression sous condition

Re bonjour Bull

Je n'ai pas réussi à joindre le fichier car trop lourd. J’ai recomposé sans aucune données ni formule de calcul mon tableau Excel avec les différents onglets. Les onglets sont tous protégé sauf l'onglet export ; En espérant que cela t'aide un peu.
Encore merci de m'accorder de ton temps et de l'aide
 

Pièces jointes

  • impression gilles .xls
    78 KB · Affichages: 50

Dull

XLDnaute Barbatruc
Re : Macro impression sous condition

Salut Gilles, le Forum

En espérant que cela puisse t'aider
j'ai ajouté des données en Feuil1 en T153:CZ190 pour voir ce que ça donne
j'ai modifié ta liste de donnée en Liste de donnée dynamique (Changement formule dans LISTE)
Code:
=DECALER(Edition!$A$2;;;NBVAL(Edition!$A:$A)-1)
j'ai aussi modifié ton Bouton en contrôle ActiveX

Code:
Option Explicit

Private Sub CommandButton1_Click()
Dim i As Integer, DerLig As Long, C As Range
Application.ScreenUpdating = False
For i = 1 To Sheets.Count
    If Sheets(i).Name <> "Edition" Then Sheets(i).Unprotect
Next i
DerLig = Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To DerLig
    If Cells(i, 1) = [E4] And Cells(i, 2) <> 0 Then Sheets("Egrenés FDR").PrintPreview ' à Remplacer par PrintOut
Next i
Set C = Columns(1).Find(What:=[E4])
If Not C Is Nothing Then C.Offset(, 1).Value = 0
With Sheets("Feuil1")
    .Range("T153:CZ190").Copy Destination:=Sheets("MAGASINAGE EGRENES").Range("A65000").End(xlUp).Offset(1)
End With
For i = 1 To Sheets.Count
   If Sheets(i).Name <> "Edition" Then Sheets(i).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Next i
Application.ScreenUpdating = True
End Sub

N'hésite pas si problème

Bonne Journée
 

Pièces jointes

  • Impression Gilles.xls
    143.5 KB · Affichages: 56
  • Impression Gilles.xls
    143.5 KB · Affichages: 67
  • Impression Gilles.xls
    143.5 KB · Affichages: 57

Gilles

XLDnaute Nouveau
Re : Macro impression sous condition

Bonjour Bull

Cela marche bien, il y a juste un problème. Quand la cellule en colonne B est à 0, nous n’avons pas d’impression « chose normal », mais une copie Feuil1 en T153:CZ190, alors que cette copie ne dois êtres réalisé seulement quand la cellule B =1.
Si cellule B=1 copie, plus impression ok.
Si B=0 rien
Autre truc, je me sers de la liste déroulante avec une macro pour faire un filtre dans mon onglet export, la macro marche bien, mais ne marche plus dès que j’installe ta macro sur mon tableau ???
Sheets("Edition").Select
NomCopié = Range("E4")
Sheets("export").Select
Selection.AutoFilter Field:=3, Criteria1:=NomCopié
Rows("3:186").Select

Je viens ensuite copie la sélection sur une autre Feuil
Et encore merci, ça avance bien , et ça va me simplifier la vie
 

Dull

XLDnaute Barbatruc
Re : Macro impression sous condition

Re Gilles, le Fil

1/ Effectivement avait pas vu... Macro modifiée

Code:
Option Explicit

Private Sub CommandButton1_Click()
Dim i As Integer, DerLig As Long, C As Range, Suite, Flag As Boolean
For i = 1 To Sheets.Count
    If Sheets(i).Name <> "Edition" Then Sheets(i).Unprotect
Next i
Set C = Columns(1).Find(What:=[E4])
If C.Offset(, 1).Value = 1 Then Sheets("Feuil1").Range("T153:CZ190").Copy Destination:=Sheets("MAGASINAGE EGRENES").Range("A65000").End(xlUp).Offset(1)
DerLig = Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To DerLig
    If Cells(i, 1) = [E4] And Cells(i, 2) <> 0 Then Sheets("Egrenés FDR").PrintPreview ' à Remplacer par PrintOut
Next i
If Not C Is Nothing Then C.Offset(, 1).Value = 0
For i = 1 To Sheets.Count
   If Sheets(i).Name <> "Edition" Then Sheets(i).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Next i
Application.ScreenUpdating = True
End Sub

2/ Encore faudrait t'il savoir où se trouve ta Macro, dans le module de la feuille? un module standard? par qoui est activé cette macro? un changement dans la feuille? et le reste de la Macro elle est où? Sans plus d'informations ce sera difficile de t'aider
Remet ton fichier avec les macros à l’intérieur (ça pèse pas lourd) qu'on puisse voir là où le bât blesse

A te relire

Bonne Journée
 

Gilles

XLDnaute Nouveau
Re : Macro impression sous condition

Re Bull

Mon fichier fait 1,48 MO, je ne sais pas comment te le faire parvenir?
De plus c'est la première fois que je monte ce type de tableau, il est possible qu'il y ait pas mal d'erreur dans mes macros et de choses inutiles. Si tu as une solution pour que je te le face parvenir ??
 

Dull

XLDnaute Barbatruc
Re : Macro impression sous condition

Re Gilles, le Fil

As tu essayer de le compresser? sinon... je n'aime pas beaucoup ça... mais essaye, épurer de toutes données confidentielles, de nous le faire parvenir via ce lien
A te relire

PS. En fait mon Pseudo c'est Dull pas Bull mêmesijelacoincedetempsentemps:)

Bonne Soirée
 

Gilles

XLDnaute Nouveau
Re : Macro impression sous condition

Re Dull

Bull effectivement je me suis un peu trompé sur le coup.....
Voici le fichier Zip, bon tu vas voir, c'est vraiment du travail de débutant qui fait ça pour la toute première fois
En espérant que cela te va
Merci
 

Pièces jointes

  • Teste Egrenés - Bull.zip
    172.6 KB · Affichages: 54

Gilles

XLDnaute Nouveau
Re : Macro impression sous condition

Bonjour Dull

A tu réussi à ouvrir le fichier ?
Si c’est le cas, tu as du voir aussi mon côté débutant …
Je te relance tout de même car je souhaite pouvoir adapter ta macro proposé à mon fichier, a tu la possibilité de m’aider pour cela ?
Merci
 

Dull

XLDnaute Barbatruc
Re : Macro impression sous condition

Salut Gilles, le Forum

J'ai bien réussi à ouvrir ton fichier. Alors comment dire...
déjà quand on travail avec une version Excel il est d'usage d'envoyer le fichier avec cette version (j'ai toujours cru que tu travaillais avec Excel 2003) ensuite, et effectivement, ce sont des bouts de code fait avec l'enregistreur de macro, ce qui est très bien, mais cela génère aussi beaucoup de déchets et cela ne déclare pas les variables.

ex ton Code

Code:
Sub EssAi()
Sheets("Edition").Select
NomCopié = Range("E4")
Sheets("export").Select
Selection.AutoFilter Field:=3, Criteria1:=NomCopié
Rows("3:300").Select
    Selection.Copy
    Sheets("Feuil3").Activate
    Range("A1").Select
    ActiveSheet.Paste
End Sub

Code "nettoyé"

Code:
Option Explicit
Dim NomCopié, DerLig As Long

Sub EssAi2()
NomCopié = Sheets("Edition").Range("E4")
DerLig = Range("A" & Rows.Count).End(xlUp).Row

    Sheets("export").Select: Selection.AutoFilter Field:=3, Criteria1:=NomCopié
    Sheets("export").Range("A3:BM" & DerLig).Copy Destination:=Sheets("Feuil3").Range("A1")
End Sub

Donc risque de plantage. Sur ton fichier d'origine il n'y avait qu'un seul bouton. Là je me retrouve avec 3 boutons lequel est le bon? tu n'a même pas mis la macro que je t'ai confectionnée:confused: J'ai supposé que c'est IMPRESSION EGRENES DES FDR.
Tu me parles de filtre dans la feuille export... mais il n'y a qu'un nom filtrée ou dé-filtré "DESBOURDES"

Tu vois c'est pas évident de travailler sur un fichier dont on ne maitrise pas les tenants et les aboutissants.

Tu devrais repenser ton fichier faire un peu de nettoyage en bien exposer tes questions dans un fichier sur la bonne version.

à te relire

Bonne Journée
 

Gilles

XLDnaute Nouveau
Re : Macro impression sous condition

Re Dull

Dans mon onglet export j’ai un bouton pour exporter un fichier que tu trouveras ci-joint pour exemple. Mon bouton exporte, rajoute le nom dans la colonne C si vide, et copie les cellules T4 à CZ4 dans mon onglet magasinage égrenés.
De là je vais sur mon onglet EDITION, je sélectionne une personne dans la liste déroulante en E4 et je lance la macro GO. La macro filtre les données colonne C onglet EXPORT, copie, et colle en Feuil 3, puis en Feuil1 j’ai des cellules figées avec des formules pour récupérer les données dont j’ai besoin , puis ça passe en Feuil4 et fini dans l’onglet EGRENES FDR avec les données et la mise en page, ensuite j’ai un retour sur mon onglet EDITION.
En réalité mes 2 boutons IMPRESSION lance l’impression, mais aussi copie dans l’onglet MAGASINAGE EGRENES les données individuel suivant si j’envoie IMPRESSION FDR ou GROS PORTEUR, et il ne doit pas y avoir le risque d’une copie en double sinon je me retrouve avec une erreur. D’où l’importance de l’impression sous condition et la remise à zéro après impression.
Je ne sais pas si cela t’aide beaucoup plus, je fais cela pour rendre plus facile le boulot de 3 personnes, tout en étant novice en la matière.
 

Pièces jointes

  • Pdt_MC65T0_SEM_36.xls
    171.5 KB · Affichages: 58

Discussions similaires

Réponses
7
Affichages
292