La sauvegarde prend en compte toute les valeurs et formats d'une ligne

sellig 29

XLDnaute Occasionnel
Bonjour à tous,

Actuellement, la macro sauvegarde à chaque exécution les colonnes de A à R les unes à la suite des autres dans la feuille "Sauvegarde" jusqu'à la dernière valeur, format ou formule trouvée sur une ligne quelle qu'elle soit ,cela génère des blancs inutile dans la sauvegarde
J'aurais souhaité sauvegarder uniquement la partie du tableau supérieure jusqu'à la dernière cellule renseignée colonne C
Pouvez vous m'apporter votre aide pour modifier le code?

Merci d'avance pour votre aide
 

Pièces jointes

job75

XLDnaute Barbatruc
Re : La sauvegarde prend en compte toute les valeurs et formats d'une ligne

Bonjour sellig 29,

Code:
Sub Imprimer()
With Sheets("Sauvegarde")
  Sheets("Saisie").Cells.Copy .[A1] 'pour copier les formats
  .UsedRange = Sheets("Saisie").UsedRange.Value 'copie les valeurs
  .Range(.Columns("S"), .Columns(.Columns.Count)).Clear
  .Rows(.Cells(.Rows.Count, "C").End(xlUp).Row + 1 & ":" & .Rows.Count).Clear
  .Activate
  '.PrintOut
End With
End Sub
Pour ne pas copier le bouton lui affecter la propriété "Ne pas déplacer ou dimensionner avec les cellules".

Fichier joint.

A+
 

Pièces jointes

sellig 29

XLDnaute Occasionnel
Re : La sauvegarde prend en compte toute les valeurs et formats d'une ligne

Merci Job75 pour votre réponse, cela correspond presque à ce que je souhaiterais, il subsiste 2 petits "détails" :o:
- La dernière valeur dans la colonne C ne sera pas forcément une valeur issue d'une formule (ça pourra être également, directement une valeur numérique ou texte), je ne l'avais pas précisé!
- Chaque sauvegarde écrase la précédente, j'aurai souhaité que chaque sauvegarde prenne la suite de la précédente sans laisser de ligne vide entre elle! Le code initial intégrait cette subtilité, l'idéal serait de pouvoir concilier les 2 codes?
 

job75

XLDnaute Barbatruc
Re : La sauvegarde prend en compte toute les valeurs et formats d'une ligne

Re,

1) La dernière cellule en colonne C est déterminée quel que soit ce qu'elle contient, formule ou valeur.

2) Si l'on veut conserver la sauvegarde précédente utiliser :

Code:
Sub Imprimer()
Application.ScreenUpdating = False
With Sheets("Sauvegarde")
  .Copy 'nouveau document
  ThisWorkbook.Sheets("Saisie").Cells.Copy .[A1] 'pour copier les formats
  .UsedRange = ThisWorkbook.Sheets("Saisie").UsedRange.Value 'copie les valeurs
  ActiveSheet.UsedRange.EntireRow.Copy: .[A1].Insert 'insert la sauvegarde précédente
  ActiveSheet.[A1].Copy ActiveSheet.[A1] 'vide le presse-papier
  ActiveWorkbook.Close False
  If Application.CountA(.Rows(1)) = 0 Then .Rows(1).Delete
  .Range(.Columns("S"), .Columns(.Columns.Count)).Clear
  .Rows(.Cells(.Rows.Count, "C").End(xlUp).Row + 1 & ":" & .Rows.Count).Clear
  .Activate
  '.PrintOut
End With
End Sub
Mais ce ne sera pas terrible si l'on clique plusieurs fois de suite sur le bouton, non ??

Fichier (2).

A+
 

Pièces jointes

sellig 29

XLDnaute Occasionnel
Re : La sauvegarde prend en compte toute les valeurs et formats d'une ligne

Merci Job75, ça fonctionne parfaitement sur votre fichier joint :), par contre lorsque je l'adapte sur mon fichier définitif, ça ne le fait pas :mad:... Il y a surement un petit truc que je zappe:confused:, seulement la ligne 1 de copiée et chaque sauvegarde (1 ligne) écrase la précédente!
 

job75

XLDnaute Barbatruc
Re : La sauvegarde prend en compte toute les valeurs et formats d'une ligne

Re,

Je préfère cette version (3) car on ne crée pas de nouveau document :

Code:
Sub Imprimer()
Dim prem As Boolean, cel As Range, P As Range
With Sheets("Sauvegarde")
  prem = Application.CountA(.Cells) = 0
  Set cel = .Cells(.UsedRange.Rows.Count + 1 + prem, 1)
  Set P = Sheets("Saisie").UsedRange
  If prem Then P.Parent.Cells.Copy cel Else P.Copy cel 'pour copier les formats
  cel.Resize(P.Rows.Count, P.Columns.Count) = P.Value 'copie les valeurs
  .Range(.Columns("S"), .Columns(.Columns.Count)).Clear
  .Rows(.Cells(.Rows.Count, "C").End(xlUp).Row + 1 & ":" & .Rows.Count).Clear
  .Activate
  '.PrintOut
End With
End Sub
A+
 

Pièces jointes

sellig 29

XLDnaute Occasionnel
Re : La sauvegarde prend en compte toute les valeurs et formats d'une ligne

Tous mes remerciements Job75, c'est impec :) En même temps, je viens de comprendre pourquoi le précédent fichier ne fonctionnait pas, les valeurs n'étaient plus colonne C... :rolleyes: Je dois avoir besoin de repos...
Bon weekend
 

Discussions similaires

  • Question Question
Microsoft 365 Tableau
Réponses
24
Affichages
985

Statistiques des forums

Discussions
315 295
Messages
2 118 156
Membres
113 439
dernier inscrit
Santino007