Problème de génération d'onglet

Bonjour,

J'ai automatisé un contrôle de comparaison entre deux onglets qui doit se faire mensuellement et qui doit s'incrémenter au fil des mois qui passent.

J'ai fait un code permettant de génération d'un onglet avec pour nom une variable allant de 1 à 12 correspondant au mois de l'année civile.

Mon code doit comparer des données et il le fait parfaitement si le premier mois de l'exercice comptable est janvier soit le 1 mais si l'exercice comptable est différent de janvier elle ne fonctionne plus. Et j'avoue je coince quant à la création du code pour qu'il gère la différence entre l'exercice comptable et l'exercice civile.

Merci d'avance pour votre aide

J'ai mis le code dans le fichier Word à coté et surligner en rouge le passage qui me bloque à mon avis.

Cordialement,

Anugraha.

7sub-ifu.docx (20.07 Ko)

Bonjour,

C'est bien joli de nous donner le code dans un fichier Word mais le mieux est que tu ôtes la protection du projet VBA afin que nous ayons accès au code pour pouvoir exécuter des tests et faire les modifs nécessaires !

Quand je vois tous les "Activate" et "Select" et bien rien que là, il y a du taf pour tous les supprimer car il ne sert à rien de sélectionner pour travailler sur l'objet et surtout, ça ralenti l'exécution du code et fait scintiller l'écran ce qui est assez désagréable pour l'utilisateur !

Bonjour Anugraha et

1) tu peux amplement alléger ton code et son fonctionnement en supprimant les SELECT

Exemple, tu peux remplacer

Worksheets("Balance traité").Activate
  Cells.Select
  Selection.Copy
  Worksheets(Sheets.Count).Select

  Range("A1").Select
  ActiveSheet.Paste

Par

Worksheets("Balance traité").Cells.Copy Destination:=Worksheets(Sheets.Count).Range("A1")

2) Tu défini une variable qui servira de compteur :

Dim NbOnglet as Integer

Et dans ton code tu incrémentes ce compteur

  ' crée l'onglet IFU mois
  If P = 1 Then
  .....
  End If

  Sheets.Add After:=Sheets(Sheets.Count)
  ' Incrémenter le nombre d'onglet créé
  NbOnglet = NbOnglet + 1

  ActiveSheet.Name = "IFU " & moi

  ' Peu importe le mois, c'est le nombre d'onglet qui compte
  If NbOnglet = 1 Then
    Worksheets("IFU").Cells.Copy Destination:=Worksheets(Sheets.Count).Range("A1")
  Else
    Worksheets(Sheets.Count - 3).Cells.Copy Destination:=Worksheets(Sheets.Count).Range("A1")
  End If

J'espère que ce sera assez clair pour toi

Edit : Salut Thèze, effectivement tu as raison

Voilà A+

Bonjour,

Merci pour votre aide et vos conseils et désolé j'ai joint la mauvaise version du fichier d'où la protection.

Je suis encore en cours d'apprentissage en VBA

J'ai apporté les modifications du code que vous m'avez proposé et ça marche nickel mais maintenant j'ai un autre souci qui fonctionnait auparavant.

Je dois récupérer l'ensemble des données présentes dans l'onglet créé concernant le mois précédent et les cumuls au niveau des lignes TOTAL IFU N et TOTAL CREDIT D'IMPOT dans les onglets générés doivent s'agréger mois après mois afin que le TOTAL IFU N de l'onglet nouvellement créer reprennent à la fois les données de l'onglet du mois précédent et les données du mois nouvellement généré.

Voici ci-joint une version du fichier non protégé.

Encore merci d'avance

Anugraha

8macro-ifu-v7.xlsm (363.92 Ko)
Rechercher des sujets similaires à "probleme generation onglet"