définir une zone impression en fonction de valeur de cellule

kiki31140

XLDnaute Junior
Bonjour forum, bonjour tous

Voici ma nouvelle problématique
dans mon fichier test joint, j'ai une vingtaine de ligne sur 3 colonnes : commercial , client, montant
J'ai réalisé un tri puis des sous-totaux pour chaque commercial
Mon vrai fichier de travail comprends au moins 10 000 lignes

Je n'ai rien trouvé dans les discussions sur ce que je souhaite faire :
dans un premier temps, faire une impression (2 pages maxi) pour chaque commercial
dans un deuxième temps, faire une impression seulement des totaux et sous totaux
je ne suis pas réfractaire aux boites de dialogue

par avance , merci pour votre aide
KIKI
 

Pièces jointes

  • test_mr2.xlsm
    11 KB · Affichages: 10

kiki31140

XLDnaute Junior
Bonjour et Super merci youki
c'est exactement ce que je cherche.
Est-ce qu'il est possible d'intégrer dans la boite de dialogue un ligne total et qu'ensuite dans l'onglet IMP, on aurait les sous-totaux de tous les commerciaux.
j'ai cherché des commandes VBA autour de la fonction sous-total, je n'ai rien trouvé
Je cherchais comment réduire les lignes pour ne voir que les sous-totaux
merci encore
kiki
 

kiki31140

XLDnaute Junior
Bonsoir Forum, bonsoir Youki
j'ai essayé d'adapter la macro au fichier d'origine.
Je n'avais pas toutes les données au début de la discussion
Voici la nouvelle petite problématique :
la colonne commercial est en h et je dois pouvoir lancer la macro depuis n'importe quelle feuille (les differentes feuilles s'appellent mois_année)

j'ai retouché la macro de youki.
Elle lance bien la liste dans la listebox, par contre, la macro beug sur le nom de la feuille active.
voici l'extrait :

Private Sub ListBox1_Click()
Feuil4.[A2:J45000].ClearContents
r = 2
For lig = 2 To Worksheets(ActiveSheet.Name).[A65000].End(10).Row
If Worksheets(ActiveSheet.Name).Cells(lig, 2) = ListBox1 Then
Feuil4.Range("H" & r & ":G" & r).Value = Worksheets(ActiveSheet.Name).Range("H" & lig & ":G" & lig).Value
r = r + 1
End If
Next
Feuil4.Select
Unload UserForm1
End Sub

--------------------
je mets le reste du code car ça beug aussi sur les totaux :
Sub commercial()
Set dico = CreateObject("Scripting.Dictionary")
a = Range("H2:H" & [A65000].End(xlUp).Row) ' tableau a(n,1)
For i = LBound(a) To UBound(a)
If Left(a(i, 1), 5) <> "Total" Then dico(a(i, 1)) = ""
Next i
UserForm1.Caption = "CHOIX DU COMMERCIAL"
UserForm1.ListBox1.List = Application.Transpose(dico.keys)
UserForm1.Show
End Sub
Sub total()
Feuil4.[A2:J45000].ClearContents
r = 2
For lig = 2 To Worksheets(ActiveSheet.Name).[A65000].End(10).Row
If Left(Sheets().Cells(lig, 1), 5) = "Total" Then
Worksheets(ActiveSheet.Name).Range("H" & r & ":G" & r).Value = Worksheets(ActiveSheet.Name).Range("H" & lig & ":G" & lig).Value
r = r + 1
End If
Next
Worksheets(ActiveSheet.Name).Select
Unload UserForm1

End Sub

------------------------------------------

merci d'avance pour le coup de main
bonne soirée
christian
 

youky(BJ)

XLDnaute Barbatruc
Bonsoir Christian,
Sans fichier exemple dur dur de voir !
Déjà le End(10) je sais pas ou tu là pioché mais pour moi c'est (3) ou xlUp
For lig = 2 To Worksheets(ActiveSheet.Name).[A65000].End(10).Row
Le Worksheets(ActiveSheet.Name). n'a pas lieu d'être car c'est la feuil active donc
For lig = 2 To [A65000].End(3).Row
Pour le reste sans fichier exemple je peux pas aller plus loin et ne vois rien d'autres.
Bruno
 

kiki31140

XLDnaute Junior
Bonsoir bruno
le 10 est pour le nombre de colonne à mettre dans la feuille d'impression (peut-être que j'ai mal interpréter le code)
je te mets mon fichier ... j'ai enlevé pas mal de données
merci encore
 

Pièces jointes

  • MARGES TEST_mr - Copie.xlsm
    88.1 KB · Affichages: 13

youky(BJ)

XLDnaute Barbatruc
Bonjour,
Essai ceci . . .
Bruno
VB:
Private Sub ListBox1_Click()
Feuil4.[A2:J45000].ClearContents
r = 2
For lig = 2 To [H65000].End(3).Row
If Cells(lig, 2) = ListBox1 Then
Feuil4.Range("H" & r & ":G" & r).Value = Range("H" & lig & ":G" & lig).Value
r = r + 1
End If
Next
Feuil4.Select
Unload UserForm1
End Sub
 

kiki31140

XLDnaute Junior
Bonjour Bruno
merci pour ton aide précieuse
j'ai lancé la maco "commercial"
ça se fonctionne, , j'ai bien la première ligne de titre de colonne qui s'affiche, par contre rien en dessous.
j'ai lance "total"
ça bloque ici : If Left(Sheets().Cells(lig, 1), 5) = "Total" Then
sur sheets

merci d'avance
christian
 

youky(BJ)

XLDnaute Barbatruc
Cadeau en plus
Ce fichier crée un menu temporaire dans le ruban>complément >
A toi de jouer si cela te plait.
J'ai un fichier pour choisir les icones, si besoin je le mets à dispo
A tester
Bruno
 

Pièces jointes

  • MenuEssai.xlsm
    16.6 KB · Affichages: 18

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 847
dernier inscrit
Djigbenou