XL 2013 [Résolu] Sélectionner un tableau dans lequel il faut trouver la dernière cellule

bellenm

XLDnaute Impliqué
Bonjour à tous,

j'ai déjà réussis à trouver beaucoup de réponse sur ce forum mais cette fois j'y ai pas trouver mon bonheur!

Voici mon problème:
* il faudrait d'abord sélectionné des cellules pour les imprimer.
* ces cellules commence en "AC3:AC ?" là il faudrait sélectionné la dernière cellule dans la colonne "AC" qui ne serait pas remplie de données mais elles le sont par une formule "=d2" par exemple mais s'il n'y a rien en "D2" cette cellule est évidement vide.
*la sélection serait "AC1:...."
* puis envoyer la sélection vers l'imprimante.

Un grand merci à tous ceux qui si colleront.

Marc
 

Pièces jointes

  • dernier ligne remplie.xlsx
    66.5 KB · Affichages: 54
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonsoir à tous

Cela semble faire l'affaire
VB:
Sub a()
Dim DerLigne As Long
DerLigne = Columns("AI:AI").SpecialCells(xlCellTypeFormulas, 1).Count + 3
ActiveSheet.PageSetup.PrintArea = Range(Cells(1, "AC"), Cells(DerLigne, "AK")).Address
'juste pour tester
ActiveSheet.PrintPreview
End Sub
Pour imprimer, changer la dernière ligne du code VBA avec la ligne adéquate qu'on trouvera en utilisant l'enregistreur de macros ;)
 

Staple1600

XLDnaute Barbatruc
Re à tous

Bonsoir Staple1600,
Je ne comprend pas le sans de ta dernière phrase car sa fonctionne pour imprimer!
Marc
Ma macro affiche l'aperçu avant impression.
Je t'invitais juste à utiliser l'enregisteur de macros quand tu imprimes une feuille pour tu vois l'instruction VBA dans la macro enregistée.
Tu aurais ainsi vu que pour directement imprimer sans passer par l'aperçu l'instruction sera
ActiveSheet.PrintOut Copies:=1, Collate:=True
Instruction que l'on peut simplifier en
ActiveSheet.PrintOut
Donc la macro serait alors devenue si tu avais mis les mains dans le cambouis ;)
VB:
Sub a()
Dim DerLigne As Long
DerLigne = Columns("AI:AI").SpecialCells(xlCellTypeFormulas, 1).Count + 3
ActiveSheet.PageSetup.PrintArea = Range(Cells(1, "AC"), Cells(DerLigne, "AK")).Address
ActiveSheet.PrintOut
End Sub
 

bellenm

XLDnaute Impliqué
Bonjour Staple1600,

Merci pour ta dernière réponse,
mais j'ai aimer le PrintPreview car je ne connaissais pas cette fonction car jamais utiliser dans mes fichier donc je l'adapte maintenant sur les feuille que je dois imprimer donc moins d'erreur et de feuille gâchée!

Merci et a +

Marc
 

job75

XLDnaute Barbatruc
Re,

Bon ceci fonctionne bien pour n'importe quel filtrage avec le filtre automatique :
Code:
Sub Imprimer()
With ActiveSheet
  .[AC3:AK1000].AutoFilter 1, "?*" 'adapter le critère
  .PageSetup.PrintArea = .Range("AC1", .AutoFilter.Range).Address
  '.PrintPreview
  .PrintOut
  .AutoFilterMode = False
End With
End Sub
A+
 

job75

XLDnaute Barbatruc
Re,

Dans le fichier joint on peut choisir le critère de filtrage dans la liste d'une ComboBox :
Code:
Private Sub ComboBox1_GotFocus()
Dim d As Object, c As Range, a
Set d = CreateObject("Scripting.Dictionary")
[AC1] = "=""Tout"""
For Each c In [AC:AC].SpecialCells(xlCellTypeFormulas)
  If c <> "" Then d(c.Value) = ""
Next
[AC1] = ""
a = d.keys
If d.Count > 1 Then: tri a, 1, UBound(a)
ComboBox1.List = Application.Transpose(a)
ComboBox1 = ""
ComboBox1.DropDown
End Sub

Private Sub ComboBox1_Change()
If ComboBox1.ListIndex = -1 Then Exit Sub
Dim critere$
critere = IIf(ComboBox1 = "Tout", "?*", ComboBox1)
[AC3:AK1000].AutoFilter 1, critere
PageSetup.PrintArea = Range("AC1", AutoFilter.Range).Address
'PrintPreview
PrintOut
AutoFilterMode = False
End Sub

Sub tri(a, gauc, droi)     ' Quick sort
Dim ref, g, d, temp
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
    Do While a(g) < ref: g = g + 1: Loop
    Do While ref < a(d): d = d - 1: Loop
    If g <= d Then
      temp = a(g): a(g) = a(d): a(d) = temp
      g = g + 1: d = d - 1
    End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub
La liste déroulante est triée alphabétiquement par la macro Quick sort.

Le choix du critère lance l'impression.

A+
 

Pièces jointes

  • dernier ligne remplie(1).xlsm
    81.9 KB · Affichages: 32

bellenm

XLDnaute Impliqué
Bonsoir Job75,

Merveilleux ce que tu as créer car je n'y pensais même pas cela inimaginable!
Je pense que je vais me servir de ce code car il y a d'abord le choix pour tout imprimer ou par catégorie!
Dans mon cas puisque c'est pour la gestion de commande de notre club cela peut-être aussi des catégorie de magasin où l'on doit ce procurer les produits nécessaire au club ainsi que du bar.

Merci Job75.

Marc
 

bellenm

XLDnaute Impliqué
Bonjour Job75,

Ta formule a été insérer parfaitement sur ma feuille malgré les quelques soucis avec la combo box (pas expert)

Comme tu as pus le voir sur le fichier de base sur la ligne 2 cellule "AH à AK" il y avait trois formules, j'en ai laisser tomber une. Y t'il un moyen pour que ces cellules soit correct avec le choix d'impression.
La première m'indique le nombre d'article total (remis sur la cellule"AI2") de la sélection que l'on imprime ainsi que son montant en cellule"AK2", crois tu cela réalisable ?

Marc
 

Discussions similaires

Statistiques des forums

Discussions
312 199
Messages
2 086 158
Membres
103 139
dernier inscrit
Bidi