Macro copie/colle tableau

Bonjour,

J'ai essayé d'effectuer une macro afin de copier coller le tableau de la feuille "Mai" dans une nouvelle feuille nommée à la date du jours (exemple aujourdhui : 26/05/2021) de plus la macro doit masquer automatiquement les colonnes B G H I K L M N O P R T, j'ai essayé mais le tableau ne se colle pas. Enfin j'aimerais que le tableau se copie seulement à la ligne du jours mais automatiquement chaque jours de la semaine.

J’espère avoir été clair, n'hésitez pas si vous avez besoin de complément.

Je vous remercie par avance.

Samara

J'ai réussi à masquer les colonnes mais pas les lignes.

Bonjour

Enfin j'aimerais que le tableau se copie seulement à la ligne du jours mais automatiquement chaque jours de la semaine.

Donc dans la nouvelle feuille vous ne voulez voir que les jours depuis la date du jour. Exemple : Mai 26/06/21, vous ne voulez voir que les jours jusque fin de mois ? ou ceux depuis début du mois comme dans le feuille Mai bis
si oui, c'est juste masquer ou supprimer les lignes ?

Testez ce code qui fonctionne juste pour les colonnes. Le code crée une nouvelle feuille à la fin

Sub test()
ActiveSheet.Copy after:=Sheets(Sheets.Count)
With ActiveSheet
    .Columns("U:AA").Delete
    .Columns("B:B").EntireColumn.Hidden = True
    .Columns("G:I").EntireColumn.Hidden = True
    .Columns("K:p").EntireColumn.Hidden = True
    .Columns("R:R").EntireColumn.Hidden = True
    .Columns("T:T").EntireColumn.Hidden = True
End With
End Sub

Pour cette nouvelle feuille, comment voulez vous la nommer ?

Crdlt

En effet, pour les lignes je veux voir afficher les lignes antérieur à la date d'aujourdhui et supprimer ou masquer les lignes suivantes.

L'idéal serait que la feuille porte comme nom la date du jour (soit la date de la dernière ligne du tableau).

J'ai réussi à masquer les colonnes mais pas les lignes.

Sub Macro2()
' Copier le tableau dans nouvelle feuille
Range("A3:T35").Select
Selection.Copy
Sheets.Add After:=ActiveSheet
Range("A3").Select
ActiveSheet.Paste
Range("b:b,g:g,h:h,i:i,k:k,l:l,m:m,n:n,o:o,p:p,r:r,t:t").EntireColumn.Hidden = True

End Sub

Merci.

La feuille Mai bis est l'exemple que la macro doit faire.

S'ajoute à cela si c'est possible de supprimer les lignes samedi dimanche en marrons.

Re

Oubliez votre code et utilisez celui ci

Sub test()
Dim dlg As Byte, i As Byte

ActiveSheet.Copy after:=Sheets(Sheets.Count)
With ActiveSheet
    .Name = Format(Day(Date), "00") & "-" & Format(Month(Date), "00") & "-" & Year(Date)
    .Columns("U:AA").Delete
    .Range("B:B,G:I,K:P,R:R,T:T").EntireColumn.Hidden = True
    dlg = Range("A" & Rows.Count).End(xlUp).Row
    For i = 5 To dlg
        If Range("A" & i) > Date Then Range("A" & i).EntireRow.Hidden = True
    Next i
End With
End Sub

Crdlt

Edit :Voyez déjà si cela convient. On verra ensuite pour les samedis et dimanches

C'est parfait !!

Re

Voici le code pour tenir compte des samedis et dimanches

Sub test()
Dim dlg As Byte, i As Byte

ActiveSheet.Copy after:=Sheets(Sheets.Count)
With ActiveSheet
    .Name = Format(Day(Date), "00") & "-" & Format(Month(Date), "00") & "-" & Year(Date)
    .Columns("U:AA").Delete
    .Range("B:B,G:I,K:P,R:R,T:T").EntireColumn.Hidden = True
    dlg = .Range("A" & .Rows.Count).End(xlUp).Row

    For i = 5 To dlg
        If IsDate(.Range("A" & i)) Then
            If WorksheetFunction.Weekday(.Range("A" & i)) = 7 Or _
                WorksheetFunction.Weekday(.Range("A" & i)) = 1 Then .Range("A" & i).EntireRow.Delete: i = i - 1
            If .Range("A" & i) > Date Then .Range("A" & i).EntireRow.Hidden = True
        End If
    Next i
End With
End Sub

Cordialement

C'est parfait vous êtes un génie !!

Dernière requête, serait il possible de supprimer la ligne total (même principe que pour les samedis/dimanches) ?

Merci infiniment.

Dernière requête, serait il possible de supprimer la ligne total (même principe que pour les samedis/dimanches) ?

Il vous suffit de rajouter cette ligne juste au dessus de la ligne --> NEXT i

If .Range("A" & i) Like "*Total*" Then .Range("A" & i).EntireRow.Hidden = True

NB : reprenez bien le code que j'ai mis dans mon post précédent car j'y ai rajouté des points devant les instructions Range présente dans la boucle For

Bonne journée

c'est très aimable de votre part.

Merci beaucoup!!

Savez-vous si il est possible lors du collage d'imposer une taille pour l'impression du tableau ?

Merci

RE

Savez-vous si il est possible lors du collage d'imposer une taille pour l'impression du tableau ?

Oui mais ce n'est pas toujours simple. Voici une idée ce que vous pourriez faire

1. Mettre en page manuellement votre feuille de référence du mois complet selon votre imprimante. Choisissez le mode portrait et régler les marges. Exemple dans votre fichier mettez en page la feuille MAI
2. Ajoutez cette partie de code juste avant le END SUB.

With Activesheet.PageSetup 
 .Zoom = False 
 .FitToPagesTall = 1 
 .FitToPagesWide = 1 
End With

Crdlt

Bonjour,

Pour les paramètres d'impressions cela fonctionne très bien.

J'aimerais cependant masquer la ligne vide et la ligne avec la date du jours ?

Merci

Bonjour

J'aimerais cependant masquer la ligne vide et la ligne avec la date du jours

Pour masquer la date du jour, modifiez la ligne suivante (on ajoute un signe = )

If .Range("A" & i) >= Date Then .Range("A" & i).EntireRow.Hidden = True

Pour la ligne vide, vous parlez de la ligne en dessous de TOTAL ? Si oui, pourquoi ne la supprimer vous pas, elle ne sert à rien je pense

Oui la supprimer je voulais dire.

On parle bien de la ligne après la valeur TOTAL ? ou de celles qui seraient situées avant ?

La ligne après celle de TOTAL, il suffit simplement de la supprimer du tableau de la feuille MAI.

C'est fait.

Merci !!!

Rechercher des sujets similaires à "macro copie colle tableau"