IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Choix des feuilles d'impressions par boite à cocher


Sujet :

Macros et VBA Excel

  1. #21
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Et d'un. Bon.
    Le deuxième, maintenant : 1998 (exemple) --->> mil neuf cent quatre-vingt-dix-huit et non mille neuf cent quatre-vingt-dix-huit

    S'attendre (comme d'hab) au troisième, etc ...
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  2. #22
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Points : 350
    Points
    350
    Par défaut
    Re
    Citation Envoyé par unparia Voir le message
    J'appelle l'attention sur le fait que le choix de traitement fait (le code proposé par ordonc) n'est pas le plus souhaitable.
    Il utilise en effet autant d'impressions (et donc de mises dans le spooler d'impression) que de feuilles à imprimer, ce qui est ralentisseur (mais pas uniquement).

    Il est vraisemblable qu'a échappé la boutade de ce passage de mon message d'hier à 19 h 47
    unparia, non, non je n'avais pas occulté ta remarque.
    Ici, je m'en suis tenu à 2 idées principales :
    - éviter d'inclure dans un formulaire des actions indépendantes ;
    - éviter une prolifération de boutons Je suis sorti, il y a peu, d'une gestion de plein de contrôles "CheckBox"

    Pour en revenir à ta remarquable* boutade, il suffit de supprimer la boucle et changer l'option de la propriété "Multiselect.
    Maintenant se pose la question de l'intérêt de passer par un formulaire ; mais c'est une autre histoire !

    *que j'ai remarquée s'entend . Les boutades… j'aime surtout quand elles ont un caractère plutôt constructif qu'ironique .

  3. #23
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    pour le fun j'en ai fit un avec une listbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Option Explicit
    Sub TEST2()
        Dim donne As Boolean, x
        x = DialogPrintMultiSheet2(ThisWorkbook, donne)
        If donne = True Then Sheets(x).PrintPreview    ':MsgBox Join(x, ",")
    End Sub
    Function DialogPrintMultiSheet2(ByRef Wbk As Workbook, donne As Boolean)
        Dim Obj As Object, bout As Object, j&, UsF, i&
        'on créé la boite de dialog
        Set UsF = ThisWorkbook.VBProject.VBComponents.Add(3)
        With UsF: .Properties("Caption") = "Selection De Sheets à Imprimer": .Properties("Width") = 200: .Properties("Height") = (Wbk.Sheets.Count + 1) * 25: End With
        'on créé les checkbox au nombre de sheets
        Set Obj = UsF.designer.Controls.Add("Forms.ListBox.1", "listesheets", True)
        With Obj: .Top = 0: .Left = 10: .Width = 100: .MultiSelect = 1: .ListStyle = 1: End With
        'on crée le bouton valider
        Set bout = UsF.designer.Controls.Add("Forms.CommandButton.1", "valider", True)
        With bout: .Left = UsF.Properties("Width") - 80: .Top = 12: .Width = 66: .Height = 20: .Caption = "Ok": .BackColor = vbGreen: End With
        'on crée le bouton Annuler
        Set bout = UsF.designer.Controls.Add("Forms.CommandButton.1", "Annuler", True)
        With bout: .Left = UsF.Properties("Width") - 80: .Top = 42: .Width = 66: .Height = 20: .Caption = "Annuler": .BackColor = RGB(255, 150, 150): End With
        With UsF.CodeModule
            j = .CountOfLines
            .insertlines j + 1, "public tbl as String"
            .insertlines j + 2, "public donne as boolean "
            .insertlines j + 3, "Private Sub Valider_Click()" & vbCrLf & "dim i" & vbCrLf & " With listesheets" & vbCrLf & "  For i = 0 To .ListCount - 1" & vbCrLf & "  If .Selected(i) Then tbl = tbl & "" "" & .List(i)" & vbCrLf & "  Next" _
                              & vbCrLf & " End With" & vbCrLf & "donne=true:if tbl="" "" or tbl="""" then donne=false" & vbCrLf & "Me.Hide" & vbCrLf & "End Sub"
            .insertlines j + 13, "Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer):Cancel=true:donne=false: Me.Hide:End Sub"
            .insertlines j + 14, "Private Sub Annuler_Click():Cancel=true:donne=false: Me.Hide :End Sub"
        End With
        VBA.UserForms.Add (UsF.Name)
        With UserForms(UserForms.Count - 1)
            For i = 1 To Wbk.Sheets.Count: .listesheets.AddItem Wbk.Sheets(i).Name: Next
            .Show
            donne = .donne
            If donne = True Then DialogPrintMultiSheet2 = Split(Trim(.tbl), " ") Else MsgBox "annulée"
        End With
        ThisWorkbook.VBProject.VBComponents.Remove (UsF)
    End Function
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. Macro impression avec choix des feuilles
    Par barrym78 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/06/2017, 17h19
  2. Réponses: 1
    Dernier message: 17/09/2014, 20h07
  3. Impression suite à un choix par case à cocher
    Par doudoufly dans le forum VBA Word
    Réponses: 1
    Dernier message: 02/07/2008, 23h05
  4. Choix feuilles de styles par l'utilisateur
    Par Irish dans le forum ASP.NET
    Réponses: 19
    Dernier message: 20/12/2006, 21h15
  5. [VB6] gestion des feuilles par des onglets
    Par kitsune dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/02/2006, 16h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo