Impression des feuilles suivant case dans tableau renseignée

Résolu
Bonjour,
Je voudrais faire des impression de feuilles suivant mes besoins. J'aurrai donc besoin d'une macro, si la colonne D dans la feuille sommaire est renseignée alors faire l'impression de la feuille

Dans le fichier ci-joint, regardez dans l'onglet"sommaire" infos sur les zones a imprimer par feuille
PS : j'ai oublié de mettre un bouton pour lancer l'impression

https://www.cjoint.com/c/GDApywsqnP2

Cordialement

17 réponses

Résumé de la discussion

Impression par feuilles dans Excel selon la colonne D de la feuille sommaire est la problématique centrale, avec demande d'une macro autonome et d'un déclencheur d'impression intégré au fichier joint. Plusieurs participants proposent des vérifications du contenu des zones d'impression, évoquent des erreurs comme subscript out of range et indiquent qu'il faut partager le fichier pour diagnostiquer les références. En cas de réponse utile, les échanges suggèrent d'afficher le contenu d'une feuille nommée wsh, d'examiner les noms, ou de corriger des problématiques d'allocation d'objets. D'autres échanges mentionnent l'absence d'un bouton pour lancer l'impression et la nécessité potentielle d'expliquer les zones d'impression définies, tout en prévoyant d'obtenir des précisions via le lien partagé.

Bobot (l’IA à votre service)
  1. Bonjour,

    Avez-vous des connaissances en VBA Excel ou pas ?
    0
    1. bonjour,
      EXCEL OUI VBA non, je sais suivre ce qui est écrit dans la macro et faire des changement, mais cela s'arrête là.
      0
      1. Re,
        Bien, je vous fais un code pas trop complique
        A+
        0
    2. Désolé,
      mais quand je veurt ouvrir le fichier j'ai un massage d'erreur
      "excel cannot open open the file because the format or extension is not valid
      verify that the file has not been corrupted etc...
      0
      1. Re,
        essayez avec ce lien car vous etes le deuxieme qui signale ce probleme

        https://mon-partage.fr/f/aWRDSDj8/
        0
    3. J'ai chanfge en mettant "xlsm" a la fin du fichier et cela semble marcher

      je vous tien au courant

      merci à vous
      0
      1. re

        il y a trop de feuilles imprimées , je ne trouve pas dans la macro la sélection des zones a imprimer par onglet
        0
        1. Re,

          J'ai chanfge en mettant "xlsm"
          C'etait deja un fichier xlsm !!!!!!!!!!!!!!!!!!!

          Y a huit feuilles maxi imprimees et les zones d'impression sont celles definies dans la feuille sommaire, je regarde car en effet y a un bleme
          La "macro" se trouve dans le module1

          suite:
          code modifie pour parametrage zone d'impression
          Sub Impression_Inventaires()
              With Worksheets("Sommaire")
                  Nb_Imp = Application.CountIf(.Range("D9:D16"), "X")
                  If Nb_Imp > 0 Then
                      MsgBox Nb_Imp & " feuille(s) a imprimmer"
                      For n = 9 To 16
                          If UCase(.Cells(n, 4)) = "X" Then   'impression selectionnee
                              wsh = .Cells(n + 12, 2) 'nom de feuille a imprimmer
                              Zprt = .Cells(n + 12, 3)    'zone d'impression
                              With Worksheets(wsh)
                                  .PageSetup.PrintArea = Zprt
                                  .PrintOut   'lance impression
                              End With
                          End If
                      Next n
                  Else
                      MsgBox "Pas d'impression programmée!"
                  End If
                  .Activate
              End With
          End Sub
          0
      2. Super, j'ai fais quelque test tout est ok, je vais continué à le tester.

        Si je ne rencontre pas de problème jusqu"à samedi nuit je clôturerai la discussion.

        Merci à vous
        J'ai parlé trop vite
        "run time error '9'
        dans la macro ligne : With Worksheets(wsh) est en jaune
        0
        1. Re,

          passez le curseur souris sur wsh quand la ligne est surlignee pour voir son contenu
          Chez moi, y a pas d'erreur...
          0
      3. re
        wsh=empty
        0
        1. Re,

          Vous utilisez le meme fichier?
          Mettez- le a dispo
          0
      4. j'ai aussi
        worksheet(wsh)=<subscript out of range
        selon que je mets le curseur devant ou derrière la ligne
        0
        1. Re,
          Oui, c'est la signification de l'erreur, reference a un objet inconnu
          Mettez votre fichier a dispo
          0
      5. 0
        1. Re,
          Dites voir, vous vous foutez de moi ou pas

          Ou est passee la plage de cellules qui permetait de definir les zones de cellules a imprimer?????????????????????????????????????????
          0
      6. désole je ne vois pas ???
        J'ai juste enlevé les commentaires que j'avais mis et arrangé la mise en forme en faisant attention de ne pas décaler de cellule
        0
        1. la je parle de la feuille Excel et non pas de la macro
          macro je n'ai rien touché ou enlevé
          0
          1. Re,
            Ah Bon, a droite le fichier que je vous ai modifie et a gauche celui que vous venez de mettre a dispo

            0
            1. ok d'accord, j'avais pas que la macro utilisé ce tableau
              j'ai retélécharger votre fichier remis la bonne macro et je vais veiller a cacher les cellules sans les supprimées.

              Merci et désolé

              cordialement
              0
              1. Re,
                Y a pas d"lezard. Le code utilise ces cellules pour parametrer l'impression
                0
            2. re
              je vais continué à le tester.

              Si je ne rencontre pas de problème jusqu"à samedi nuit je clôturerai la discussion.
              0
              1. Bonjour,
                Une autre solution pour ne pas avoir ces cellules de parametrage, utilisez deux Tableaux avec le contenu de ces cellules,
                ex:
                Sub Impression_Inventaires_1()
                    Dim TFeuille, TZoneImp, Nb_Imp As Integer, NF As Integer, n As Integer
                    
                    TFeuille = Array("Zone Process & ligne 4", "Zone APV L1", "Vortex et Pamoma" & _
                                                "Zone Cermex L1", "Zone APV L2", "Zone Vortex L2", "Zone Cermex L2" & _
                                                "Zone SKA L1&L2")
                    TZoneImp = Array("A1:I14", "A1:I10", "A1:I10", "A1:I10", "A1:I10", "A1:I10", "A1:I17", "A1:I17")
                    With Worksheets("Sommaire")
                        Nb_Imp = Application.CountIf(.Range("D9:D16"), "X")
                        If Nb_Imp > 0 Then
                            MsgBox Nb_Imp & " feuille(s) a imprimmer"
                            NF = 0
                            For n = 9 To 16
                                If UCase(.Cells(n, 4)) = "X" Then   'impression selectionnee
                                    With Worksheets(TFeuille(NF))
                                        .PageSetup.PrintArea = TZoneImp(NF) 'Zone d'impression
                                        .PrintOut   'lance impression
                                    End With
                                End If
                                NF = NF + 1
                            Next n
                        Else
                            MsgBox "Pas d'impression programmée!"
                        End If
                        .Activate
                    End With
                End Sub
                
                
                
                
                0
            3. Bonjour,
              je travail cette nuit je le testerais ce soir. Mais la première version est bonne suffira juste que je protège la feuille et de rajouter dans la macro le faite que le bouton d'impression reste fonctionnel.
              0
              1. Bonjour f894009,

                test ok, je garde la première version de la macro, protèger les cellules et la feuille.

                Merci
                0