Première ligne vide

ReBonjour,

Pour moi ce n'est pas clair. Il y a des feuilles qui n'ont rien à voir avec la question ou je ne comprends rien. Mon interprétation est-elle correcte :

Sur la feuille "Données", vous voulez insérer le contenu de la feuille "signature" en bas. Est-ce correct ?

Que faire de la feuille compte et en-tete ? quelles autres feuilles exclure/inclure ou non ?

Pourriez-vous fournir un fichier content un exemple de la feuille à modifier "avant modif" et "après modif" (modification faite manuellement) afin que l'on comprenne le principe ?

Merci beaucoup

En pièce jointe vous trouverez un fichier avec le résultat attendue sur les feuilles de couleur rouge.

"Sur la feuille "Données", vous voulez insérer le contenu de la feuille "signature" en bas. Est-ce correct ?" : Non je me sert de cette feuille pour créer de nouvelles feuilles à chaque changement de compte. Et c'est sur ces nouvelles feuilles que je souhaite intégrer la signature en bas.

"Que faire de la feuille compte et en-tete ? quelles autres feuilles exclure/inclure ou non ?" : la feuille entête me sert à copier ces 4 lignes sur chaque feuille en rouge. La feuille compte me sert pour inclure dans les feuilles en rouge le nom du compte concerné

Ce que j'avais oublié de demander mais si cela n'est pas faisable ce n'est pas grave je le ferai à la main, c'est d'avoir les totaux en bas des colonnes F, G et H sur chaque feuille en rouge, d'ajouter dans la cellule de la colonne E : "Total" et d'avoir une bordure juste au dessus des 3 totaux.

Ah super, c'est beaucoup plus clair, il manquait bien les feuilles rouges.

Ci-après une proposition de macro. essayez de la lancer sur des feuilles sans totaux et dites moi si c'est bon

Public Sub AjouterSignaturesSurFeuillesRouges()
  ' recup toutes les feuilles rouges
  Dim redWS As Collection: Set redWS = New Collection
  Dim ws As Worksheet
  For Each ws In ThisWorkbook.Worksheets
    If ws.Tab.Color = vbRed Then redWS.Add ws
  Next ws

  If redWS.Count < 1 Then Exit Sub

  ' recup signature
  Dim signature As Range
  Set signature = ThisWorkbook.Worksheets("signature").UsedRange

  ' traitement des feuilles rouges: totaux + signature
  Application.ScreenUpdating = False
  Dim i As Long, correctOff As Long
  For Each ws In redWS
    ' pour alignement des totaux
    correctOff = 0
    For i = 6 To 8
      correctOff = WorksheetFunction.Max(correctOff, ws.Cells(ws.Rows.Count, i).End(xlUp).Row)
    Next i

    ' ajout des totaux
    For i = 6 To 8    ' col F a H
      With ws.Cells(correctOff, i).Offset(1)
        .Formula = "=SUM(" & ws.Cells(1, i).Address & ":" & .Offset(-1).Address & ")"

        .Borders(xlEdgeTop).LineStyle = xlContinuous
        .Borders(xlEdgeTop).Weight = xlThin
      End With
    Next i

    ' ajout de la signature
    signature.Copy ws.Cells(ws.Rows.Count, "F").End(xlUp).Offset(4) ' on peut ajuster ici le decalage: 4 = 4 lignes en dessous
    Application.CutCopyMode = False
  Next ws
  Application.ScreenUpdating = True
End Sub

Oui c'est parfait merci

Est-il possible d'avoir dans la 1ère cellule du 1er total (colonne F) l'inscription : "Total" ?

Si je peux aussi demander, je suis en mode paysage et je souhaiterai ajuster les longueurs des colonnes pour qu'il n'y ait qu'une page en largeur et x pages en hauteur.

A chaque nouvelle page, je souhaiterai avoir ma ligne 4 qui soit répétée.

Vous voulez le "total" en F ou E ?? Car sur l'exemple il était en E...

Un peu galère les mises en page j'aime pas ça... Je regarderai

Dans le fichier exemple les totaux sont bien sur les colonnes F G et H et avant je souhaiterai avoir l'inscription "Total" en E

Pour ajouter le mot "total" en E :

    ' ajout des totaux
    For i = 6 To 8    ' col F a H
      With ws.Cells(correctOff, i).Offset(1)
        .Formula = "=SUM(" & ws.Cells(1, i).Address & ":" & .Offset(-1).Address & ")"

        .Borders(xlEdgeTop).LineStyle = xlContinuous
        .Borders(xlEdgeTop).Weight = xlThin
      End With
    Next i

    ' === BLOC A AJOUTER
    ' ajout du mot "total"
    With ws.Cells(correctOff, 5).Offset(1)
        .Value = "Total"
        .Borders(xlEdgeTop).LineStyle = xlContinuous
        .Borders(xlEdgeTop).Weight = xlThin
    End With    
    ' === BLOC A AJOUTER    

    ' ajout de la signature
    signature.Copy ws.Cells(ws.Rows.Count, "F").End(xlUp).Offset(4) ' on peut ajuster ici le decalage: 4 = 4 lignes en dessous

Merci beaucoup c'est exactement ce que je cherchais.

Il ne me reste plus si vous le pouvez qu'à ajuster les colonnes

Bon j'ai regardé, ce n'est pas trop compliqué. Alors placez-vous sur votre feuille "modèle", celle que vous dupliquez pour créer les autres feuilles rouges.

Tout d'abord pour la largeur des colonnes, allez dans l'onglet "mise en page" > orientation > paysage.

image

En bas à droite de la fenetre excel cliquez sur la vue "page" pour avoir le rendu "en direct".

image

Ensuite ajustez vos largeurs de colonne pour que tout rentre une page.

Maintenant, pour répéter les 4 premières lignes sur toutes les pages à l'impression : cliquez sur "impression des titres" puis sélectionnez "lignes à répéter en haut" : 1:4

image image

Faites ok, c'est tout bon votre mise en page est prete et sera conservée pour chaque duplicata.

Trop cool, je vous remercie.

Dernière petite question, les colonnes F G et H sont en format monétaire. Comment puis-je faire pour que les totaux le soient également.

C'est bon j'ai trouvé il me suffit de sélectionner les colonnes et d'aller dans format de cellule.

Je vous remercie beaucoup pour votre aide.

Jéjé

Avec numberformat. Voir le code complet ci-après :

Public Sub AjouterSignaturesSurFeuillesRouges()
  ' recup toutes les feuilles rouges
  Dim redWS As Collection: Set redWS = New Collection
  Dim ws As Worksheet
  For Each ws In ThisWorkbook.Worksheets
    If ws.Tab.Color = vbRed Then redWS.Add ws
  Next ws

  If redWS.Count < 1 Then Exit Sub

  ' recup signature
  Dim signature As Range
  Set signature = ThisWorkbook.Worksheets("signature").UsedRange

  ' traitement des feuilles rouges: totaux + signature
  Application.ScreenUpdating = False
  Dim i As Long, correctOff As Long
  For Each ws In redWS
    ' pour alignement des totaux
    correctOff = 0
    For i = 6 To 8
      correctOff = WorksheetFunction.Max(correctOff, ws.Cells(ws.Rows.Count, i).End(xlUp).Row)
    Next i

    ' ajout du mot "total"
    With ws.Cells(correctOff, 5).Offset(1)
        .Value = "Total"
        .Borders(xlEdgeTop).LineStyle = xlContinuous
        .Borders(xlEdgeTop).Weight = xlThin
    End With

    ' ajout des totaux
    For i = 6 To 8    ' col F a H
      With ws.Cells(correctOff, i).Offset(1)
        .Formula = "=SUM(" & ws.Cells(1, i).Address & ":" & .Offset(-1).Address & ")"
        ' ========================== FORMATTAGE ==========================
        .NumberFormat = "[$€-x-euro2] # ##0,00"
        ' ou bien pour les euros a la fin .NumberFormat = "#,##0.00"" €""
        ' ========================== FORMATTAGE ==========================

        .Borders(xlEdgeTop).LineStyle = xlContinuous
        .Borders(xlEdgeTop).Weight = xlThin
      End With
    Next i

    ' ajout de la signature
    signature.Copy ws.Cells(ws.Rows.Count, "F").End(xlUp).Offset(4) ' on peut ajuster ici le decalage: 4 = 4 lignes en dessous
    Application.CutCopyMode = False
  Next ws
  Application.ScreenUpdating = True
End Sub

Je vous en prie, n'oubliez pas de cloturer le fil, bonne fin de journée

EDIT : oei, salut Saboh12617, c'est devenu plus compliqué

Rechercher des sujets similaires à "premiere ligne vide"