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 :

Impression de feuille par rapport a une liste deroulante


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    particulier
    Inscrit en
    Août 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : particulier
    Secteur : Services à domicile

    Informations forums :
    Inscription : Août 2023
    Messages : 3
    Par défaut Impression de feuille par rapport a une liste deroulante
    Bonjour à tous,

    Je vous joint une capture d'écran, dans la cellule M4 ce trouve une liste déroulante avec plein de nom de personne.

    A chaque fois que je change de personne ma feuille affiche directement les données sur le tableau etc.

    ce que je voudrais ça serais de faire imprimer toute les différente page correspondant a toute ma liste déroulante.
    car en faisant un par un ça me fait perde une temps monstre.

    Merci d'avance pour votre aide.

    Cordialement Christophe
    Nom : Capturepourimpression.PNG
Affichages : 526
Taille : 62,9 Ko

  2. #2
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Bonjour,

    ça pourrait ressembler à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub ImprimeTout()
        Dim LaSource As Variant
        Dim UneCell As Range
        Dim Maliste As Range
     
        Set Maliste = ThisWorkbook.Sheets("Feuil1").Range("M4")
        LaSource = Split(Maliste.Validation.Formula1, "!") ' feuille en 0, plage en 1
        For Each UneCell In ThisWorkbook.Sheets(Mid(LaSource(0), 2)).Range(LaSource(1)) ' mid pour oter le =
            Maliste.Value = UneCell.Value
            Maliste.Parent.PrintOut
        Next UneCell
    End Sub
    en partant du principe que la liste déroulante est paramétrée par une plage simple dans le style "=Feuil2!$A$2:$A$55", à adapter si besoin.

  3. #3
    Candidat au Club
    Homme Profil pro
    particulier
    Inscrit en
    Août 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : particulier
    Secteur : Services à domicile

    Informations forums :
    Inscription : Août 2023
    Messages : 3
    Par défaut
    bonjour, merci pour ta réponse


    je fais quoi de "feuille en 0, plage en 1" et de "mid pour oter le = "

    je suis zéro sur le vba.


    merci d'avance.

    Pour info ma feuille a imprimer s'appelle "Impression" et la liste déroule M4 ce trouve sur la feuille "Liste Déroulante de "A2 à A127"

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Bonjour, change les noms des feuilles et la plage de cellules et teste ceci:

    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
    Sub ImprimerFeuil1PourChaqueItem()
        Dim ws1 As Worksheet ' Feuil1
        Dim ws2 As Worksheet ' Feuil2
        Dim itemRange As Range
        Dim cell As Range
        Dim originalSelection As String
     
        ' Feuille avec la liste déroulante (Feuil1)
        Set ws1 = ThisWorkbook.Sheets("Feuil1")
     
        ' Feuille avec les items et valeurs associées (Feuil2)
        Set ws2 = ThisWorkbook.Sheets("Feuil2")
     
        ' Plage contenant les items sélectionnables
        Set itemRange = ws2.Range("A1:A4")
     
        ' Conserver la sélection originale
        originalSelection = ws1.Range("M4").Value
     
        ' Itérer à travers chaque item de la liste déroulante
        For Each cell In itemRange
            ' Sélectionner l'item dans la liste déroulante (Feuil1!M4)
            ws1.Range("M4").Value = cell.Value
     
            ' Imprimer la Feuil1
            ws1.PrintOut
     
            ' Attendre un court instant pour laisser le temps à l'impression de se terminer
            Application.Wait Now + TimeValue("00:00:02") ' 2 secondes
     
            ' Passer à l'item suivant
            DoEvents
        Next cell
     
        ' Réinitialiser la sélection de la liste déroulante
        ws1.Range("M4").Value = originalSelection
    End Sub

  5. #5
    Candidat au Club
    Homme Profil pro
    particulier
    Inscrit en
    Août 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : particulier
    Secteur : Services à domicile

    Informations forums :
    Inscription : Août 2023
    Messages : 3
    Par défaut
    Parfait merci a vous deux.


    Franc ton code fonctionne parfaitement .



    Après es ce qu'avec le VBA je peux faire directement imprimer en couleur?


    et sinon pour optimiser es ce qu'il y a moyen de faire une sélection dans la liste déroulante du style si je rajoute une colonne a coté de ma liste déroulante avec OUI ou NON ou une case coché pour dire je veux l'imprimer ou pas.


    Ou sinon comment mettre plusieurs plage? du style A1:A5 et A10:20 ?


    J'en demande beaucoup je sais. merci beaucoup.

  6. #6
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Je ne comprends pas trop ta première question. Si ta feuille Excel est en couleur et que ton imprimante permet l'impression couleur, ta sortie sera en couleur.
    Pour ta deuxième question, j'ai légèrement modifié le code. J'ai ajouté une colonne dans laquelle j'ajoute un x si je veux imprimer, dans le code j'utilise la colonne F, à toi de changer selon tes besoins.

    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
    39
    40
    41
    42
    43
    44
    Sub ImprimerFeuil1PourChaqueItem()
        Dim ws1 As Worksheet ' Feuil1
        Dim ws2 As Worksheet ' Feuil2
        Dim itemRange As Range
        Dim cell As Range
        Dim originalSelection As String
        Dim printColumn As Range
     
        ' Feuille avec la liste déroulante (Feuil1)
        Set ws1 = ThisWorkbook.Sheets("Feuil1")
     
        ' Feuille avec les items et valeurs associées (Feuil2)
        Set ws2 = ThisWorkbook.Sheets("Feuil2")
     
        ' Plage contenant les items sélectionnables
        Set itemRange = ws2.Range("A1:A4")
     
        ' Conserver la sélection originale
        originalSelection = ws1.Range("M4").Value
     
        ' Plage de la colonne "Imprimer"
        Set printColumn = ws2.Range("F1:F4") ' Changez la plage selon votre disposition
     
        ' Itérer à travers chaque item de la liste déroulante
        For Each cell In itemRange
            ' Vérifier si l'élément doit être imprimé (colonne "Imprimer" = "x")
            If printColumn.Cells(cell.Row, 1).Value = "x" Then
                ' Sélectionner l'item dans la liste déroulante (Feuil1!M4)
                ws1.Range("M4").Value = cell.Value
     
                ' Imprimer la Feuil1
                ws1.PrintOut
     
                ' Attendre un court instant pour laisser le temps à l'impression de se terminer
                Application.Wait Now + TimeValue("00:00:02") ' 2 secondes
     
                ' Passer à l'item suivant
                DoEvents
            End If
        Next cell
     
        ' Réinitialiser la sélection de la liste déroulante
        ws1.Range("M4").Value = originalSelection
    End Sub

Discussions similaires

  1. [XL-2007] Remplissage d'une feuille par rapport a une utre
    Par islande dans le forum Excel
    Réponses: 4
    Dernier message: 16/04/2012, 10h00
  2. Réponses: 3
    Dernier message: 15/02/2010, 13h28
  3. Comparer valeur par rapport a une liste
    Par mick_ban dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/08/2008, 10h20
  4. Créer une feuille par élément d'une liste.
    Par Lucci dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/07/2008, 20h54
  5. Tri par rapport à une liste de clés primaires
    Par yoyot dans le forum Langage SQL
    Réponses: 10
    Dernier message: 23/06/2006, 12h48

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