Sauvegarder plusieurs cellules dans une autre feuille

Bonjour à tous,

Je suis entrain de réaliser un fichier, permettant de réaliser des pointage de travail.

Ce fichier est modulé, transformé, au fil du temps.

Je souhaiterais par l'intermédiaire d'un bouton de sauvegarde, enregistrer seulement les données de plusieurs cellules.

Cela à pour but, quand je modifier ou rajoute un élément, réinjecter dans le classeur, les valeur des cellules. (cela évite que l'on ressaisisse manuellement la totalité des valeur.

Dans mon exemple joint, les valeur à enregistrer de la feuille "Pointage" sont les cellules:

F14:J14, qui sont les heures réalisées

K15:L15 qui sont les heures du Samedi et Dimanche

F16:J16 qui sont les heures non réalisées.

Il en vas de même pour les autres cellules suivantes

F21:J21 K22:L22 F23:J23 et ainsi de suite.

Ces valeur seront stockées dans la feuille "Sauv".

pour les heures réalisées, elles seront stockées à partir de la cellule B9

les heures du Samedi ou dimanche => cellule C9

heures non réalisées => cellule D9

Une copie de mon fichier est joint.

J'ai commencé à réaliser un code pour enregistrer ces valeurs, mais j'ai quelques difficultés.

Sub Sauvegarde()

For ligne1 = 14 To 378

Sheets("Pointage").Select

Range(Cells(ligne1, 6), Cells(ligne1, 10)).Select ' cells ( ligne, colonne)

Selection.Copy

Sheets("Sauv").Select

Range("B6").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=True

ligne1 = ligne1 + 8

Next

End Sub

42pointage.xlsm (129.94 Ko)

Merci encore de votre aide

titi32600

Bonjour,

Sub Sauvegarde()
    Dim Sem, s%, ln%, wsS As Worksheet
    Set wsS = Worksheets("Sauv")
    s = 9
    Application.ScreenUpdating = False
    With Worksheets("Pointage")
        For ln = 14 To 378 Step 7
            Sem = .Range("F" & ln).Resize(3, 7).Value
            wsS.Range("B" & s).Resize(7, 3).Value = WorksheetFunction.Transpose(Sem)
            s = s + 7
        Next ln
    End With
End Sub

Recommandations :

  • toujours déclarer ses variables
  • éliminer tout Select, Selection... de son code
  • toujours qualifier ses expressions (pas de Range sans la feuille à laquelle elle appartient)
  • éviter copier-coller chaque fois que possible (et ça l'est le plus souvent)
  • ne pas ajouter un module chaque fois qu'on ajoute une procédure !

Cordialement.

Bonjour Mferrand Titi32600 le forum

moi je voyais plutôt un stockage sur une seule ligne de toutes les heures de manière à avoir un récapitulatif de 52 lignes

enfin c'est mon avis

Bonne journée

Papou

Salut Mferrand

Merci encore de ton aide et de tes recommandations qui me seront bien entendu très utiles.

Ton exemple me convient à merveille.

titi32600

Salut paritec

en fait, si j'ai pris l'option de sauvegarder les valeur en dessous des autres, c'est pour des questions esthétiques.

mais peu importe la manière, c'est juste pour créer par la suite un fichier de sauvegarde des valeurs en extension CSV.

titi32600

Bonjour,

Ma contribution au sujet...

Sub Sauvegarde()
Dim iR%, iRC%, i%, a, b, c, d
Dim WsS As Worksheet, WsC As Worksheet
Set WsS = Worksheets("Pointage")    'Source
Set WsC = Worksheets("Sauv")        'Cible
WsC.Range("B9:D372").ClearContents
d = WsC.Range("B9:D372").Value
For iR = 14 To 378 Step 7
    With WsS
        a = .Range(.Cells(iR, 6), .Cells(iR, 12)).Value
        b = .Range(.Cells(iR + 1, 6), .Cells(iR + 1, 12)).Value
        c = .Range(.Cells(iR + 2, 6), .Cells(iR + 2, 12)).Value
    End With
    With WsC
        On Error Resume Next
        For i = 1 To 7
        d(iRC + i, 1) = a(1, i)
        d(iRC + i, 2) = b(1, i)
        d(iRC + i, 3) = c(1, i)
        Next
        iRC = iRC + 7
    End With
Next
WsC.Range("B9:D372") = d
End Sub

A+

Re titi32600 le forum

si cela te convient, pour moi c'est parfait, simplement pour lire des données, quand tu as une colonne avec 260 lignes ou 52 lignes une par semaine, perso l’esthétique ne représente rien l'aspect pratique prime de loin pour moi.

bonne journée

Papou

salut Galopin

ton exemple est très bien aussi, car il faut que je pense à faire l'inverse en cas de perte de données.

c'est à dire que je dois utiliser cette sauvegarde pour la réinjecter dans le tableau d'origine "pointage", et bien sur dans les bonnes cellules.

titi32600

Re titi32600 le forum

c'est à dire que je dois utiliser cette sauvegarde pour la réinjecter dans le tableau d'origine "pointage"

oui bah pour moi c'est que pour cela que ta feuille sauv peut servir, c'est pour cela que toutes les données sur une même ligne serait encore plus normal et logique

a+

Papou

Salut paritec

Cela ne me pose pas de problème pour effectuer une sauvegarde en ligne plutôt qu'en colonne.

Comme tu l'as dis, la feuille "Sauv" ne sert juste que pour la sauvegarde des données de la fiche pointage.

Mon seul but de faire une sauvegarde, c'est de stocker ces données, et de pouvoir les remettre dans un tableau vierge.

titi32600

Bonjour à tous !

Paritec : j'avais comme toi pensé à un recueil synthétique de 52 lignes... mais ce n'était visiblement pas ce que recherchait titi ! Cela reste tout de même compact.

Bonne journée.

Effectivement au début j'avais pensé au sauvegarder en colonne, mais je suis ouvert à d'autre proposition.

N'étant pas assez calé, toutes idées est bonne à mes yeux.

titi32600

Mferrand & Paritec

je n'ai pas compris le principe du recueil synthétique?

titi32600

C"est moi qui ai utilisé ce terme... Je pensais que tu voulais conserver une récapitulation hebomadaire de tes trois catégories horaires. Mais en fait tu souhaitais conserver les résultats journaliers.

Cordialement.

Bonjour MFerrand Titi32600 le forum

Oui moi je pense que dans le cas d'une sauvegarde, et c'est le but, il est impératif de tout conserver pour pouvoir recomposer la feuille complète en cas de besoin. Et sur une seule ligne c'est simple c'est ligne 1 semaine 1 etc etc.

Et aussi j'ajouterais que je le sauvegarderais pas uniquement dans le fichier source, mais aussi dans un autre fichier.

Bonne journée

Papou

Bonjour Paritec

c'est en forgeant qu'on devient forgeron,

Effectivement ce sera plus clair si je réalise un tableau dans "sauv" en fonction d'une semaine complète par ligne

ma seule contrainte, est que je dois séparer les heures travaillées et celles non travaillées.

j'ai reformulé le tableau en ce sens.

j'ai joint une copie

14pointage.xlsm (121.58 Ko)

Re Titi32600 le forum

Je te ferai cela demain matin, là plus le temps

a+

papou

On va laisser ça à Paritec. Bon weekend à tous !

Et bonjour MFerrand titi32600 le forum

Non tu peux le faire moi la je n’ai plus de PC avant demainAM

Je répond avec mon tel

A plus

Papou

Sans doute, mais chez moi c'est déjà l'heure du journal télévisé, je suis au milieu d'une réponse sur un autre sujet, et la priorité devient le repas... ! Et quelques pauses à parsemer... Tu peux donc prendre ton temps. Bon weekend !

Rechercher des sujets similaires à "sauvegarder feuille"