Sauvegarde feuille sur nouvel onglet +...

alain.raphael

XLDnaute Occasionnel
Bonsoir à Tous,

Dans le fichier joint, je cherche à sauvegarder (copier-coller) une feuille (nommée "Rapport") sur un nouvel onglet (avec date du jour) à l'aide d'un bouton. Cette macro devra aussi rendre cette feuille "Rapport" à son état d'origine (avec les champs libre). Au fur et à mesure des rapports, j'ai donc plusieurs onglets-sauvegardes.
De plus, elle devra aussi alimenter un onglet "base de donnée" au fur et à mesure des sauvegardes.

J'ai aussi un autre bouton (afin de créer un nouvel employé), qui doit se positionner en-dessous le précédent, et qui peut influencer le code VBA.

Bref, le fichier exemple est plus explicite...

Merci
 

Pièces jointes

  • Essai macro.xlsx
    16.3 KB · Affichages: 17

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Alain, bonjour le forum,

En pièce jointe ton fichier modifié avec le code ci-dessous :

VB:
Private Sub CommandButton1_Click()
Dim OF As Worksheet 'déclare la variable OF (Onglet Fiche)
Dim PL As Range 'déclare la variable PL (PLage)
Dim BD As Worksheet 'déclare la variable BD (onglet Base de Données)
Dim TP(0 To 5) As String 'déclare la variable TP (Tableau des Plages)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Dim I As Byte 'déclare la variable I (Incrément)

Set OF = Worksheets("Rapport") 'définit l'onglet OF
Set PL = Application.Union(OF.Range("E4:G4"), OF.Range("E5"), OF.Range("E8:G8"), OF.Range("E9:G9"), OF.Range("E10:G10"), OF.Range("E11:G11"), OF.Range("E12:G12")) 'définit la plage PL
Set BD = Worksheets("Base de données") 'définit l'onglet BD
OF.Copy after:=OF 'copy l'ongelt OF après lui-même
ActiveSheet.Name = "Rapport " & CStr(Day(Date)) & "_" & CStr(Month(Date)) & "_" & CStr(Year(Date)) 'renomme l'onglet actif
TP(0) = "E4:G4" 'définit la plage 0
TP(1) = "E8:G8" 'définit la plage 1
TP(2) = "E9:G9" 'définit la plage 2
TP(3) = "E10:G10" 'définit la plage 3
TP(4) = "E11:G11" 'définit la plage 4
TP(5) = "E12:G12" 'définit la plage 5
Set DEST = BD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST
For I = 0 To 5 'boucle sur les 5 colonnes de la base de donnée
  DEST.Offset(0, I).Value = OF.Range(TP(I)).Value 'récupère les données de la fiche
Next I 'prochaine colonne de la boucle
PL.ClearContents 'vide le contenu de la fiche
End Sub
 

Pièces jointes

  • Alain_ED_v01.xlsm
    27.9 KB · Affichages: 15

Discussions similaires

Statistiques des forums

Discussions
311 724
Messages
2 081 938
Membres
101 844
dernier inscrit
pktla