Imprimer une liste déroulant avec une condition

Bonjour à tous,

Je suis en train de réaliser une base de donnée avec une feuille (Fiche résidence) avec une liste déroulante sur la cellule C3.

J'ai créé une macro afin d'imprimer toutes les fiches mais je souhaiterais y mettre une condition qui pourrait me permettre d'imprimer que les fiches par agence, pour faire simple si l'agence en cellule C5 est égal à la cellule G6 alors merci de m'imprimer que ces fiches.

Ci-dessous la macro actuelle qui m'imprime la totalité des fiches pour l'instant :

Sub Impression()

Dim Liste As String, C As Range

With Sheets("Fiche résidence")

Liste = .Range("C3").Validation.Formula1

Liste = Right(Liste, Len(Liste) - 1)

For Each C In Range(Liste)

.[C3] = C.Value

.PrintOut

Next C

End With

End Sub

Merci par avance pour votre aide,

15impression.xlsm (841.80 Ko)

Bonjour Mirakfr,

Pour être sûr d'avoir compris le problème :

Veux-tu n'imprimer que les codes dont l'agence est sélectionnée ? (Par exemple, pour l'agence 3 n'imprimer que les fiches "8012-11; 8021-11; 8022-2; 8023-1..." )

Bonjour GVIALLES,

Oui c'est bien ca, imprimer les fiches de l'agence sélectionnée.

Bonjour Mirakfr,

Je te propose d'aménager ton code de la façon suivante :

Option Explicit
Sub Impression()
    Dim Liste As String, C As Range, oListeCodes As Range
    Dim lAgence As Long, lRow As Long

    'On récupère l'agence choisie
    lAgence = Sheets("Fiche résidence").Range("G6")

    'On réfère la liste des codes de la feuille "Gardiens"
    lRow = Sheets("Gardiens").UsedRange.Rows.Count 'On récupère le numéro de la dernière ligne de "Gardiens"
    Set oListeCodes = Sheets("Gardiens").Range(Sheets("Gardiens").Cells(3, 1), Sheets("Gardiens").Cells(lRow, 1))

    With Sheets("Fiche résidence")
        'Liste = .Range("C3").Validation.Formula1
        'Liste = Right(Liste, Len(Liste) - 1)
        For Each C In oListeCodes
            'Si l'agence du code est dans l'agence choisie, on l'imprime
            If C.Offset(, 2).Value = lAgence Then
                .[C3] = C.Value
                .PrintOut
            End If
        Next C
    End With

    'On fait le ménage
    Set oListeCodes = Nothing
End Sub

Merci 1000 fois GVIALLES, ca à l'air de fonctionner nickel.

Je vais finir ma base et faire des tests mais à priori tout semble parfait.

Merci

Rechercher des sujets similaires à "imprimer liste deroulant condition"