Impression - chaque option liste validation données dynamique

Résolu/Fermé
Yrmouf Messages postés 126 Date d'inscription samedi 4 août 2012 Statut Membre Dernière intervention 22 septembre 2020 - Modifié par crapoulou le 27/09/2016 à 16:11
Yrmouf Messages postés 126 Date d'inscription samedi 4 août 2012 Statut Membre Dernière intervention 22 septembre 2020 - 29 sept. 2016 à 16:12
Bonjour à tous,

J'ai parcouru le web sans grand succès pour trouver une macro qui permette de lancer une impression en fonction d'une liste de validation de données dynamiques (ce doit être cela qui pose problème d'ailleurs!

Merci d'avance à celui qui pourra m'aider

Sub PrintAll()
    Dim strValidationRange As String
    Dim rngValidation As Range
    Dim rngrotation As Range
     
     ' éteinte de la mise à jour de l'écran
    Application.ScreenUpdating = False
     
     ' Identification de la source de la donnée de validation (qui est dynamique : =DECALER(Feuil1!$G$2;0;0;NBVAL(feuil1!$G:$G);1) vu que la liste est amenée à être modifiée)
    strValidationRange = Range("L5").Validation.Formula1
     
     ' Sélection de chaque choix de cellule de la liste (mais vu que la liste est dynamique et corresponds à une formule je crois que ça bloque le choix des cellules)
 
    For Each rngrotation In strValidationRange
        Range("L5").Value = rngrotation.Value
'impression de la page
        ActiveSheet.PrintOut
    Next
     
    Application.ScreenUpdating = True
End Sub


Merci à ceux qui pourront m'aider

Bonne journée

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

1 réponse

thev Messages postés 1851 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 15 avril 2024 681
Modifié par thev le 27/09/2016 à 20:17
Bonjour,

Concernant l'utilisation des fonctions DECALER et NBVAL en VBA:
1- la fonction DECALER n'est pas disponible en tant que telle. Elle est remplacée par la propriété Offset d'un objet Range
2- La fonction NBVAL doit être traduite en VBA par COUNTA.
Votre formule n'est donc pas directement utilisable en l'état.

Ci-dessous les instructions que je vous conseille, avec récupération de la cellule de début à partir de votre formule :

Dim cell_début As Range, cell_fin As Range

Set cell_début = Range(Split(Split(Range("L5").Validation.Formula1, "(")(1), ";")(0))
Set cell_fin = cell_début.EntireColumn.Find("*", SearchDirection:=xlPrevious)
For Each rngrotation In Range(cell_début, cell_fin)

--

Autre code possible plus proche de votre formule

Dim cell_début As Range

Set cell_début = Range(Split(Split(Range("L5").Validation.Formula1, "(")(1), ";")(0))
Set strValidationRange = cell_début.Resize(Application.CountA(cell_début.EntireColumn))
For Each rngrotation In strValidationRange

 
1
Yrmouf Messages postés 126 Date d'inscription samedi 4 août 2012 Statut Membre Dernière intervention 22 septembre 2020 5
29 sept. 2016 à 16:12
Bonjour Thev,

Je n'ai pas très bien compris la fonction Split mais cela fonctionne bien!

Merci beaucoup :)

Bonne journée
0