Macro pour mise en page

MpA

XLDnaute Nouveau
Bonjour!

Grace à votre aide, j'ai réussi à monter le fichier désiré!!! encore une fois Merci!!

Mais je suis encore bloquée!! et je n'arrive pas à trouver la solution (faute de temps...)

alors je me réessais avec vous!

J'ai joint le fichier cette fois pour etre plus facile à comprendre!

sur la feuille 1 il y a un premier bouton "cliquez ici 1" pour séparer les données entre deux feuilles selon certains critères.

Le "cliquez ici 2" se voulant être pour partir la macro de mise en page, mon probleme est que je ne sais pas comment lui dire de prendre juste les cellules où il y a des données, parce que si je n'ai que 100 noms sur la feuil2 je ne veux pas qu'il me mette des lignes et des chiffres jusqu'à la lignes 150 et d'avoir à imprimer 2 pages de trop... vous comprenez?

alors ce que je rechercher c comment écrire la macro pour qu'elle s'exécute exemple de la cellule a2 à z42 (si il y a des données jusqu'à la ligne 42).

J'espère avoir été clair! c'est pas évident à expliquer par écrit!

merci d,avance de votre aide!

Mp ;-)
 

Pièces jointes

  • test.zip
    24.9 KB · Affichages: 23
  • test.zip
    24.9 KB · Affichages: 16
  • test.zip
    24.9 KB · Affichages: 21
G

Guest

Guest
Re : Macro pour mise en page

Bonjour,

A la fin de la macro MiseEnForm, la feuille Feuil3 est toujours sélectionnée. Rajouter ces 3 lignes:
Code:
    With ActiveSheet
        'Définir la plage d'impression suivant le nombre de noms de la feuille (colonne 2)
        .PageSetup.PrintArea = .Range("A1:O" & .Cells(.Rows.Count, 2).End(xlUp).Row).Address
    End With

Juste avant le end Sub

A+
 
G

Guest

Guest
Re : Macro pour mise en page

Re,

Voici ta macro Macro1 réécrite, si j'ai bien tout suivit avec ses select et activate multiples. Elle s'adapte au nombre de ligne.

En fait tu fais la même copie sur les deux feuilles C'est celà? Sinon précise les critères.

Code:
Sub Macro1()
    Dim sh1 As Worksheet, sh2 As Worksheet, sh3 As Worksheet
    Set sh1 = Sheets("Feuil1")
    Set sh2 = Sheets("Feuil2")
    Set sh3 = Sheets("Feuil3")
    Application.ScreenUpdating = False
    sh1.Rows("2:2000").ClearContents
    sh3.Rows("2:2000").ClearContents
    With sh2
        For i = 2 To .Range("A65535").End(xlUp).Row
            If .Cells(i, 7).Value = "" Then
                With .Range(.Cells(i, 1), .Cells(i, 20))
                    .Copy Destination:=sh1.Range("B" & sh1.Rows.Count).End(xlUp)(2)
                    .Copy Destination:=sh3.Range("B" & sh3.Rows.Count).End(xlUp)(2)
                End With
            End If
        Next i
    End With
    Application.ScreenUpdating = True
End Sub

A+
 

MpA

XLDnaute Nouveau
Re : Macro pour mise en page

Ma macro 1 sert à séparer les données de la feuil2 entre la feuil1 et la feuil3 selon le critère suivant: si pas de date de fermeture = feuil1 si date de fermeture = feuil3

Ma deuxième macro, je voudrais qu'elle fasse la mise en page de la feuil1 et feuil3 (donnée centré, colonne a numéroté, mettre des contours autour des cellules...) et faire en sorte que le tout "fit" sur une page format légal paysage.

Pour le moment, exemple sur la feuil3, la macro va jusqu'à la ligne 146, mais si j'ai des données jusqu'à la ligne 80, j'ai pas besoin que la macro me mette des contours sur les cellules 81 à 146 etc.. parce qu'en faisant cela, lorsque j,arrive pour imprimer, ca imprime jusqu'à la ligne 146.. donc je me retrouve avec des feuilles avec des carrés vides... :confused: j'essaie d'être clair.. mais c pas évident!!

Merci de ton aide Hasco!
 
G

Guest

Guest
Re : Macro pour mise en page

RE,

Voici pour la macro 1 et ses tests:
Code:
Sub Macro1()
    Dim sh1 As Worksheet, sh2 As Worksheet, sh3 As Worksheet
    Set sh1 = Sheets("Feuil1")
    Set sh2 = Sheets("Feuil2")
    Set sh3 = Sheets("Feuil3")
    Application.ScreenUpdating = False
    sh1.Rows("2:2000").ClearContents
    sh3.Rows("2:2000").ClearContents
    With sh2
        For i = 2 To .Range("A65535").End(xlUp).Row
            'Si pas de date -> direction Feuil1
            If .Cells(i, 7).Value = "" Then
                .Range(.Cells(i, 1), .Cells(i, 20)).Copy Destination:=sh1.Range("B" & sh1.Rows.Count).End(xlUp)(2)
            Else
                 'Sinon direction Feuil3
                .Range(.Cells(i, 1), .Cells(i, 20)).Copy Destination:=sh3.Range("B" & sh3.Rows.Count).End(xlUp)(2)
            End With
        End If
    Next i
End With
Application.ScreenUpdating = True
End Sub

Pour la macro de mise en forme essaie de t'inspirer de ce que j'ai fait pour Macro1 en te demandant toujours Quelle Action pour quelle(s) cellule(s)

A+
 

Discussions similaires