macro a partire d'une liste deroulante

tibo.v1

XLDnaute Junior
Bonjour,
je voudrais créer une macro qui me permettrais d'imprimer depuis un meme onglet tous les elements dependant de ma liste deroulante en meme temps
paramètre :
1- liste deroulante
2- j'ai 2 zones d'impression f1 et f2

description par étape :
1- selectionner la zone d'impression f1
2- selectionner dans la liste deroulante le 1er critere
3- puis impression
4- selectionner dans la liste deroulante le 2eme critere
5- puis impression
6- selectionner dans la liste deroulante le 3eme critere
7- puis impression
8- selectionner la zone d'impression f2
9- selectionner dans la liste deroulante le 1er critere
10- puis impression
11- selectionner dans la liste deroulante le 2eme critere
12- puis impression
13- selectionner dans la liste deroulante le 3eme critere
14- puis impression
 

mth

XLDnaute Barbatruc
Re : macro a partire d'une liste deroulante

Bonjour,

Très bonne idée tout ça.... mais ... aurais-tu un extrait de fichier pour que l'on voie le début de ton code, ou au moins la structure du fichier, la liste déroulante en question, et tutti quanti ?
Sans élément on risque de parler dans le vide ...

Bonne journée,

mth
 

mth

XLDnaute Barbatruc
Re : macro a partire d'une liste deroulante

Bonjour tibo.v1

Un petit essai avec ce code:

Code:
Option Explicit
Sub imprim()
Application.ScreenUpdating = False
Dim i As Byte, j As Byte
With Sheets("Feuil1")
    For i = 1 To 5
        .Range("F3") = i
            For j = 1 To 2
                .PageSetup.PrintArea = "Page" & j
                ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
            Next j
    Next i
End With
Application.ScreenUpdating = True
End Sub

J'ai nommé Page1 la zone =Feuil1!$F$5:$H$9, et page2 la zone =Feuil1!$J$5:$L$9

Vois si cela peut t'aider,

Bon après-midi,

mth
 
Dernière édition:

mth

XLDnaute Barbatruc
Re : macro a partire d'une liste deroulante

re :)

la même dans l'autre sens, en relisant ta question je pense que dans la macro de tout à l'heure je n'imprimais pas les pages dans l'ordre souhaité ...
donc :

Code:
Option Explicit
Sub imprim()
Application.ScreenUpdating = False
Dim i As Byte, j As Byte
With Sheets("Feuil1")
    For j = 1 To 2
        .PageSetup.PrintArea = "Page" & j
            For i = 1 To 5
                .Range("F3") = i
                ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
            Next i
    Next j
End With
Application.ScreenUpdating = True
End Sub

Bien à toi,

mth
 
Dernière édition:

tibo.v1

XLDnaute Junior
Re : macro a partire d'une liste deroulante

ton appli marche mais je nage dans ton texte
a quoi correpond i et j
car je penses que c'est avec eux que je vais devoir jouer pour adapter ton appli dans mon classeur

question en plus mais si je comprends la formule peut j'aurais la reponse, si je veux imprimer séparement la page 1 de la page 2, je fais comment ?

merci
 

mth

XLDnaute Barbatruc
Re : macro a partire d'une liste deroulante

re :)

Voici le code avec les commentaires :
Code:
Sub imprim()
Application.ScreenUpdating = False [COLOR=darkgreen]'bloque le rafraichissement de l'écran[/COLOR]
Dim i As Byte, j As Byte 'définition des variables i et j
With Sheets("Feuil1") [COLOR=darkgreen]' Travaille sur la feuille 1, ouverture par WITH, fermeture par Een With[/COLOR]
    For j = 1 To 2 [COLOR=darkgreen]' de j = 1 à 2, soit pour zone d'iompression 1, et ensuite zone d'impression 2[/COLOR]
        .PageSetup.PrintArea = "Page" & j 'définit [COLOR=darkgreen]la zone d'impression j (donc Page1, puis Page2)[/COLOR]
            For i = 1 To 5 [COLOR=darkgreen]'i = 1 à 5, soit du 1er au dernier choix de la liste déroulante[/COLOR]
                .Range("F3") = i [COLOR=darkgreen]'on impose la valeur de la liste déroulante à i[/COLOR]
[COLOR=darkgreen]                               ' donc successisvement 1, puis 2, 3 4 et enfin 5[/COLOR]
                ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)" [COLOR=darkgreen]'imprime[/COLOR]
            Next i [COLOR=darkgreen]'passe au choix suivant de la liste déroulante[/COLOR]
    Next j [COLOR=darkgreen]' passe à la deuxième zone d'impression[/COLOR]
End With
Application.ScreenUpdating = True [COLOR=darkgreen]' rétablit le rafraichissement de l'écran[/COLOR]
End Sub

Pour n'imprimer qu'une zone à la fois, tu peux faire deux macros séparées sur deux boutons différents ?
Par exemple pour n'imprimer que la zone PAGE1 ça pourrait donner:

Code:
Option Explicit
Sub imprim()
Application.ScreenUpdating = False 'bloque le rafraichissement de l'écran
Dim i As Byte
With Sheets("Feuil1") ' Travaille sur la feuille 1, ouverture par WITH, fermeture par END with
    .PageSetup.PrintArea = "Page1" 'définit la zone d'impression Zone nommée Page1
        For i = 1 To 5 'i = 1 à 5, soit du 1er au dernier choix de la liste déroulante
            .Range("F3") = i 'on impose la valeur de la liste déroulante à i
                                ' donc successisvement 1, puis 2, 3 4 et enfin 5
            ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)" 'imprime
        Next i 'passe au choix suivant de la liste déroulante
End With
Application.ScreenUpdating = True ' rétablit le rafraichissement de l'écran
End Sub

Bien à toi,

mth
 

tibo.v1

XLDnaute Junior
Re : macro a partire d'une liste deroulante

merci de tes explications c'est beaucoup plus clair
j'ai quand meme un probleme sur l'impression des 2 pages en meme temps, 1ere macro
quand j'applique la macro sur mon document il beug sur la ligne ".PageSetup.PrintArea = "Page" & j"
voila ma macro :
Sub tout()
Application.ScreenUpdating = False
Dim i As Byte, j As Byte
With Sheets("piscine")
For i = 1 To 2
.Range("G1") = i
For j = 2 To 3
PageSetup.PrintArea = "Page" & j
ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
Next j
Next i
End With
Application.ScreenUpdating = True
End Sub

tu as une explication ?
 

Discussions similaires

Réponses
18
Affichages
505
Réponses
26
Affichages
3 K

Statistiques des forums

Discussions
311 709
Messages
2 081 766
Membres
101 815
dernier inscrit
sgep59