dupliquer une feuille de mon classeur chaque mois

dupliquer une feuille de mon classeur chaque mois - VB/VBA/VBS - Programmation

Marsh Posté le 17-01-2019 à 18:42:36    

bonjour  
 
je me suis inspiré de certain code et voici mon code

Code :
  1. Public Function FeuilleExiste(FeuilleAVerifier As String) As Boolean
  2. 'fonction qui vérifie si la "FeuilleActive" existe dans le Classeur actif
  3. On Error GoTo SiErreur
  4. Dim Feuille As Worksheet
  5. Dim SheetName As String
  6.    
  7.     SheetName = ActiveWorkbook.ActiveSheet.Name
  8.     FeuilleExiste = False
  9.     For Each Feuille In Worksheets
  10.         If Feuille.Name = SheetName Then
  11.             FeuilleExiste = True
  12.             Exit Function
  13.         End If
  14.     Next Feuille
  15. Exit Function
  16. SiErreur:
  17. MsgBox "Une erreur s'est produite..."
  18. FeuilleExiste = CVErr(xlErrNA)
  19. End Function
  20. Sub Test()
  21. 'Utilisation de la fonction "FeuilleExiste" puis ajout d'une nouvelle feuille
  22. Dim SheetName As String
  23. Dim i As Integer
  24.    
  25.     SheetName = ActiveWorkbook.ActiveSheet.Name
  26.     If FeuilleExiste(SheetName) = True Then
  27.         'MsgBox "La Feuille " & SheetName & " existe !"
  28.        
  29. 'ajoute uen Feuille tout à la fin du Classeur en comptant les Feuilles avec la méthode Worksheets.Count et la nommée
  30.         'Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = Format(Date - 2, "mmmm" ) & "-" & Format(Date, "yy" ) & "_KPI "
  31.         Sheets(SheetName).Copy After:=Sheets(Sheets.Count)
  32.         ActiveSheet.Name = Format(Date + 14, "mmmm" ) & "-" & Format(Date, "yy" ) & "_KPI "
  33.        
  34.         'entre la date du 1er jour du mois en cours dans la cellule C3
  35.        
  36.         ActiveSheet.Range("C3" ) = DateSerial(Year(Date), Month(Date) + 1, 1)
  37.        
  38.         'recuperation du numéro de colonne de la cellule contenant la date du dernier jour du mois en cours     numérodecolonnedelacelluleactive  ActiveCell.column
  39.         'DerniereColonneUtilisee = Cells(3, Columns.Count).End(xlToLeft).Column 'où 3 est le numéro de la ligne
  40.        
  41.         For Each cell In ActiveSheet.Range("C3:AG3" )
  42.             If Month(cell.Value) <> Month(ActiveSheet.Range("C3" )) Then
  43.                    i = cell.Column
  44.                    Columns(Val(i)).Delete Shift:=xlToLeft
  45.             End If
  46.         Next
  47.        
  48.     Else
  49.         MsgBox "La Feuille 'Test_1' n'existe pas!"
  50.     End If
  51.    
  52. End Sub


 
ce code vérifit si la feuillet à dupliquer existe, si vrai duplique la feuille dans le même classeur. j'insere dans la cellule C3 la date du mois précedent et jusque là il n'y a pas de problème. vue que le nombre de jour de chaque mois varie, je parcours la ligne de ma nouvelle feuille en vérifiant si le mois de cellule C3 et identique aux autres cellules sinon supprime la colonne contenant le mois différent du mois de C3. c'est là que commence mes difficultés, il me supprime ces colonnes sur la feuille original. et depuis je ne parviens pas à cela.
je demande votre apport pour restifier mon ou mes erreurs


Message édité par bodiallo le 19-01-2019 à 08:46:36
Reply

Marsh Posté le 17-01-2019 à 18:42:36   

Reply

Marsh Posté le 30-01-2019 à 10:18:24    

Tu as intérêt à définir des variables pour ton classeur et ta feuille source ainsi que pour ton classeur et ta feuille cible.
 
Pas mal d'infos ici : https://silkyroad.developpez.com/VBA/FeuilleDeCalcul/
 
Puis à les utiliser dans ton code à la place de "ActiveSheet" qui correspond à ta feuille active (qui peut changer en plus selon ton code si tu utilises `Select` notamment).


Message édité par pass-by le 30-01-2019 à 10:18:52
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed