Aide macro selection

Bonjour,
J'ai crée une macro qui sélectionne des colonnes, puis les imprime. Le soucie c'est que parfois je dois imprimer 5 cellules comme je peux en imprimer 50. Existe t'il un moyen pour que la macro sélectionne automatiquement toutes les cellules à imprimer ce qui me permettrait à chaque fois d'éviter de définir la zone d'impression. Cordialement.

3 réponses

  1. Contributeur
    Bonjour,

    Si tu pouvais nous mettre un exemple de structure des données, sans éléments personnels, se serait plus facile de t'aider.
    Pour communiquer ton classeur tu le télécharges sur https://www.cjoint.com/ et tu mets ici le lien obtenu.
    0
    1. Je vous ai répondu dans un nouveau commentaire.
      0
  2. http://cjoint.com/data3/3Bhk0noCgcu.htm

    http://cjoint.com/data3/3Bhk1k0Mbjm.htm

    La il y a ce que j'obtiens en effectuant ma macro. Le but de final de ma macro et d'imprimer ce document.
    Et donc je voudrai que ma macro reconnaisse automatiquement les cellules à imprimer à savoir 27 dans le premier exemple ou 7 dans le deuxième sans que je sois obliger à chaque fois de définir la zone d'impression.
    0
    1. Contributeur
      Bonjour,

      Tu redefines la zone d'impression dans ta macro :
      Dim lig As Long, col As Integer
      With ActiveSheet
      col = .UsedRange.Columns.Count
      lig = .UsedRange.Rows.Count
      .PageSetup.PrintArea = "$A$1:$" & Chr(col + 64) & "$" & lig
      End With
      0
      1. Merci beaucoup cela marche désormais.
        Et j'ai juste une dernière question, est'il possible de faire la même chose mais cette fois ci pour mettre une bordure verticale noir entre chaque colonne ? En utilisant le m^me principe à savoir ne mettre une bordure que de A1 à A7 ou de A1 à A27.
        0
      2. Contributeur
        En utilisant le même principe :
        Dim lig As Long, col As Integer, idx As Integer
        With ActiveSheet
        col = .UsedRange.Columns.Count
        lig = .UsedRange.Rows.Count
        For idx = 1 To col
        With .Cells(1, 1).Offset(0, idx - 1).Resize(lig, 1).Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThick
        End With
        Next idx
        End With
        UsedRange présente la particularité qu'il ne tient pas compte des delete pendant la session et dans ce cas donc tu peux remplacer par ceci qui donne le même résultat.
                col = .Cells(1, 1).End(xlToRight).Column
        lig = .Cells(.Rows.Count, 1).End(xlUp).Row
        0