Macro avec liste dynamique

Bonjour à vous,

J'ai depuis longtemps un code de Banzaï64 qui me permet de lancer une impression en informant une cellule d'une feuille "Feuille mensuelle" depuis la base d'une autre feuille "DONNEES variables". Une fois que la cellule est renseignée, l'ensemble de mon document se met à jour et une impression est lancée.

Dans le code, il y a un indice de ligne qui permet de déterminer à partir de où excel va cherche les infos. Reste que, c'est une base de noms et comme toute base, les noms changent. Si bien que, l'indice de la ligne ne convient pas au nom que je souhaite ou carrément à une cellule vide ce qui arrête la macro. Je corrige le code aux besoins, mais c'est plus moi qui gère cela, alors cela pose des soucis.

Je souhaiterai avoir les mêmes fonctionnalités, information et d'impression selon une liste, mais il serait souhaitable que la liste soit dynamique. "listedim1" c'est un nom que pourrait donner avec le gestionnaire de noms que je maîtrise, contrairement à la VBA.

En espérant être clair dans ma demande. J'ai mis, ci-dessous le code actuel et un second code que j'ai tenté d'adapter.

Merci d'avance pour l'aide proposée.

Cordialement,

Leakim

Sub Print()

Dim Ligne As Long
Dim F1 As Worksheet

  Set F1 = Sheets("DONNEES variables")
  Ligne = 48

  With Sheets("Feuille mensuelle")
    While F1.Cells(Ligne, "A") <> ""
      .Range("R3") = F1.Cells(Ligne, "A")
      .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
      '.PrintPreview   ' Pour les tests
     Ligne = Ligne + 1
    Wend
  End With
End Sub
Sub ajout_feuilles()

Dim nom, c

For Each c In Range("liste")
nom = c.Value
Sheets.Add Count:=1, after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = nom
Next c

End Sub

Bonjour Leakim,

Pour réaliser les impressions suivant les indications portées dans la plage nommée "listedim1"

Option Explicit
Sub Impression()
Dim Cel As Range
Dim F1 As Worksheet
    Set F1 = Sheets("DONNEES variables")
    With Sheets("Feuille mensuelle")
        For Each Cel In F1.Range("listedim1")
            If Cel <> "" Then
                .Range("R3") = Cel
                '.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
                .PrintPreview   ' Pour les tests
            End If
        Next Cel
    End With
End Sub

A+

Bonjour Frangy,

Merci pour ton retour c'est juste nickel !

Le code tourne super.

Merci

Leakim

Rechercher des sujets similaires à "macro liste dynamique"