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 :

Selection dans une listbox et impression d'un TCD [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 13
    Points : 17
    Points
    17
    Par défaut Selection dans une listbox et impression d'un TCD
    bonjour à toutes et tous,


    dans le cadre de mon travail, j'ai créé un fichier excel avec des TCD.

    je souhaite, via un userform avec ListBox et Bouton, que l'utilisateur puisse sélectionner dans la listbox les items qui correspondent aux valeurs du champ de page de mon TCD et imprimer automatiquement chaque page de mon TCD correspondantes...

    par exemple, j'ai une liste de 13 noms, qui permettent de filtrer mon tableau. Si l'utilisateur sélectionne les noms 1-5 et 8 et bien cela lance automatiquement l'impression des tcd correspondants...

    j'ai réussi à faire les codes suivants, le premier fonctionne nickel, mais je ne sais imprimer qu'une feuille à la fois... et le second imprime 12 fois le même marché!

    Je présume que je dois me baser sur le premier et créer une boucle, mais j'ai besoin de votre aide pour y parvenir!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    If List_Selection.ListIndex = -1 Then Exit Sub
     
        ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields(" "). _
         CurrentPage = List_Selection.List(List_Selection.ListIndex)
        ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotCache.Refresh
     
        Me.Hide
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
        Me.Show
    et le second code que j'ai fait, mais qui imprime 12 fois la même page!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        Private Sub But_Imprimer_Click()
         Dim i As Integer
         Dim marche As String
         marche = List_Impression.Value  ' <- c'est ici que je n'arrive pas à intégrer toutes les noms de mes marchés
     
         For i = 0 To List_Impression.ListCount - 1
     
            ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields(" "). _
                CurrentPage = marche ' <- variable déclarée ci-dessus et qui fonctionne à condition que je clique sur une ligne de ma listbox  et qui imprime 12 fois ce marché... alors que moi je souhaite imprimer une fois chaque marché présent dans la listbox!
           ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotCache.Refresh
            ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
        Next
     
        End Sub
    Merci d'avance pour vos conseils!

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut marche en boucle, pour que la boucle marche !
    Bonsoir.

    Tu peux essayer de mettre la variable marche dans la boucle. Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim i As Integer
         Dim marche As String
     
         For i = 0 To List_Impression.ListCount - 1
     
            marche = List_Impression(i).Value  
            ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields(" "). _
                CurrentPage = marche ' <- variable déclarée ci-dessus et qui fonctionne à condition que je clique sur une ligne de ma listbox  et qui imprime 12 fois ce marché... alors que moi je souhaite imprimer une fois chaque marché présent dans la listbox!
           ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotCache.Refresh
            ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
        Next
     
        End Sub
    C'est pour l'idée, je n'ai pas essayé !

    Cordialement,

    PGZ

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 13
    Points : 17
    Points
    17
    Par défaut
    Bonjour Pgz,


    j'ai essayé avec ton code, mais il m'affiche une erreur d'execution '13' - incompatibilité de type sur la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    marche = List_Selection(i).Value
    merci en tout cas pour ton idée, je continue à chercher!

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2014
    Messages : 19
    Points : 36
    Points
    36
    Par défaut
    Bonjour fabian123,

    Il n'est pas évidant de te proposer une solution sans ton fichier, mais voici ma suggestion :

    - Vérifie que le paramètre "Multiselect" de List_Impression est à 1 ou 2;
    - Puisque le paramètre "Value" est NULL dans le cas d'une multi-sélection, utilise le paramètre "List";
    - Dans ta boucle, introdruis une condition pour contrôler que l'item en cours de List_impression a été selectionné.

    Et comme je ne suis pas sûr d'être clair, voici le code :

    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
     
     Dim i As Integer
      Dim marche As String
     
      '------------------------------------------------------
      ' Choisit l'une ou l'autre ligne ou modifie le paramètre
      ' directement dans la fenêtre des propriété
        List_Impression.MultiSelect = fmMultiSelectExtended
        List_Impression.MultiSelect = fmMultiSelectMulti
      '------------------------------------------------------
      For i = 0 To List_Impression.ListCount - 1
        If List_Impression.Selected(i) = True Then 'Si le ième item est sélectionné...
          marche = List_Impression.List(i)         'alors on le récupère
     
          With ActiveSheet.PivotTables("Tableau croisé dynamique3")
            .PivotFields(" ").CurrentPage = marche
            .PivotCache.Refresh
          End With
     
          ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
        End If
      Next
    Si çà marche, n'oublie pas de clore la conversation et n'hésite surtout pas à voter pour ma contribution

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 13
    Points : 17
    Points
    17
    Par défaut
    Bonjour Kassy!

    Ca fonctionne nickel!


    Un tout grand merci!


    juste pour ma compréhension, dans la boucle que j'avais essayé, je n'avais pas mis de WITH, est-ce à cause de cela que je ne savais imprimer qu'une seule feuille et pas ma sélection?

    En tout cas un tout grand merci!

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2014
    Messages : 19
    Points : 36
    Points
    36
    Par défaut
    Bonjour Fabian,

    Non, j'ai utilisé le bloc "with" pour une meilleurs lecture (du moins pour moi).

    Et pour comprendre où se trouvait les problèmes, le mieux est d'exécuter les différents code en mode pas-à-pas, observer ce qui se passe, de les décortiquer et d'utiliser l'aide microsoft.

  7. #7
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut




    Bonjour,

    je n'aurais pas mieux conseillé : !


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Selection dans une listbox
    Par MatthieuT42 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/06/2015, 10h37
  2. [XL-2007] Test si il y a une selection dans une listbox
    Par Ltspitfire dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/12/2014, 11h59
  3. Interdire la selection dans une listBox
    Par beaf05 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/01/2012, 11h04
  4. Conserver selection dans une listbox
    Par Schopenhauer dans le forum Tkinter
    Réponses: 11
    Dernier message: 03/07/2011, 11h43
  5. la selection dans une listbox
    Par etoile_de_vie dans le forum C#
    Réponses: 4
    Dernier message: 23/09/2008, 14h57

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