Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1387 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Macro VBA Actualisation automatique Formule mensuelle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Macro VBA Actualisation automatique Formule mensuelle

n°2135645
Karabatic1​3
Posté le 10-04-2012 à 21:53:32  profilanswer
 

Bonjour, :hello:  
 
J'aimerais développer une macro sous Excel mais j'ai un peu de mal avec sa programmation.
J'ai une feuille n°1 excel de gestion préparé avec tous les mois de l'année que je remplis au fur et à mesure toutes les fin de mois.
J'ai une autre feuille n°2 qui utilise ces données mensuelles afin de calculer la marge que j'ai par rapport au prévisionnel de mon projet.  
 
J'aimerais qu'à chaque fois que je rentre des données dans mon mois écoulé, le calcul de cette marge se fasse automatiquement sans que j'ai besoin de changer les colonnes dans ma formule.  
 
Par exemple, Feuil2!Marge Mars = Feuil1!Réalisé Mars - Feuil2!Prévisionnel Mars
 
Une fois que j'ai copié mes données du mois d'Avril, j'aimerais que ma macro s'éxécute et que la cellule qui contenait ma Marge de Mars soit remplie automatiquement par la Valeur de ma Marge en Avril. Peut-être qu'il faudrait que Excel fasse le calcul pour Mars tant que Avril est vide par exemple et ainsi de suite pour tous les mois mais je n'y arrive pas à rendre ça automatique.
 
J'aimerais ensuite étendre ce calcul à plusieurs projets qui sont alignés ligne par ligne mais je pense pouvoir m'en sortir si j'ai le début du code pour une cellule.
 
J'espère avoir été clair sinon je peux m'expliquer plus en détail.  
J'aimerais que vous me donniez des pistes pour le code afin que je puisse implémenter ça à mon tableur.
 
Merci énormément pour votre aide  :D  

mood
Publicité
Posté le 10-04-2012 à 21:53:32  profilanswer
 

n°2135674
vave
Nice to meet me
Posté le 11-04-2012 à 07:43:08  profilanswer
 

Bonjour,
 
Voici comment tu pourrais boucler sur tes feuilles pour trouver la dernière renseignée :

Code :
  1. Sub test()
  2. Dim mois(5) As String ' à modifier pour mettre mois(11) + le nom des onglets dans l'ordre
  3.      mois(0) = "janvier"
  4.      mois(1) = "fevrier"
  5.      mois(2) = "mars"
  6.      mois(3) = "avril"
  7.      mois(4) = "mai"
  8.      '... etc
  9. Dim sh As Worksheet
  10. Dim i As Integer
  11. For i = 0 To 4 ' à modifier en "... To 11"
  12.     If Sheets(mois(i - 1)).Cells(1, 1).Value = "" Then
  13.         Set sh = Sheets(mois(i-1))
  14.         Exit For
  15.     End If
  16. Next i
  17. MsgBox "La page non vide est : " & sh.Name
  18. Set sh = Nothing
  19. End Sub


 
En gros, tu crées un tableau contenant tous tes noms d'onglet. Le tableau va de 0 à 11 => 1 par mois.
Tu boucle sur les noms de feuilles de 0 à 11 et dès que tu trouves une cellule non renseignée (j'ai mis cells(1, 1) dans l'exemple = A1) tu récupères la feuille d'avant (Set sh = Sheets(mois(i-1))).
 
Il faudra penser à gérer les erreurs car dans cet exemple, si le premier onglet est vide, ça doit planter. Le cas où il n'y a aucun onglet de vide n'est pas géré non plus.
 
Ensuite, si tu veux que la macro se lance à chaque modification, il faudra que tu la mettes dans ThisWorkbook, dans l'événement SheetSelectionChange ou autre, tu trouvera facilement sur google.


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
n°2135790
Karabatic1​3
Posté le 11-04-2012 à 20:31:11  profilanswer
 

Merci beaucoup de ta proposition mais ce n'est pas exactement ce que je veux. Mes données de tous les mois sont dans une seule et même feuille c'est seulement ma marge qui est dans une autre... Mais ce n'est pas mon problème principal.
 
C'est plutôt de faire une boucle qui part de décembre et qui dit tant que le mois m n'est pas rempli je passe au mois précédent m-1. A chaque fois que je rentre des nouvelles données mensuelles, il faut que la macro le voit et qu'elle recalcule ma marge.
 
J'ai essayé d'écrire une macro mais j'ai un problème avec mes boucles imbriquées. On me dit qu'il manque un End For ou qqchose.  
Si vous pouviez m'aider à la corriger, je vous remercie d'avance.
 

Code :
  1. Sub Worksheet_Change(ByVal Target As Range)
  2.    If Target.Address = "$C11:CS43" Then
  3.        For i = 0 To 11
  4.            If Sheets("Feuil1" ).Cells(11, 12 - i).Value = "" Then Next i
  5.            Else: Sheets("Feuil2" ).Cells(8, 17).Value =Sheets("Feuil1" ).Cells(11, 12 - i).Value -Sheets("Feuil1" ).Cells(11, 12 -  (i - 1)).Value
  6.            End If
  7.    End If
  8.    Sheets("Feuil2" ).Select
  9. End Sub

n°2135791
vave
Nice to meet me
Posté le 11-04-2012 à 20:39:07  profilanswer
 

Il manque un next i entre les 2 end if.


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
n°2135792
Karabatic1​3
Posté le 11-04-2012 à 20:45:10  profilanswer
 

Ok super pour ta réponse rapide. Je vais tester ça demain au boulot!
Je laisse le Next i après le Then quand même du coup ou pas?
Qu'est-ce que je mets à la place du coup?
 
Merci d'avance

n°2135845
vave
Nice to meet me
Posté le 12-04-2012 à 07:07:27  profilanswer
 

Ah ouais, je l'avais pas vu celui là.
Tu vires cette condition et tu mets juste :

Code :
  1. For i = 0 To 11
  2.            If Sheets("Feuil1" ).Cells(11, 12 - i).Value <> "" Then
  3.                   Sheets("Feuil2" ).Cells(8, 17).Value =Sheets("Feuil1" ).Cells(11, 12 - i).Value -Sheets("Feuil1" ).Cells(11, 12 -  (i - 1)).Value
  4.            End If
  5. Next i


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Macro VBA Actualisation automatique Formule mensuelle

 

Sujets relatifs
Exceution script VBA Excel 2010Lire .txt de 370 MB avec VBA
VBA : Transférer une matrice dans un tableur ExcelFormulaire en VBA dans feuille Excel
[VBA] Callback / TimeoutExcel 2010 : activation macro
Wordpress - Changer un Copyright automatique?Fête d'ami - VBA dans Excel 2007
besoin d'une petite ligne VBA pour Accesscouleur de cellule tableau automatique fichier odt php
Plus de sujets relatifs à : Macro VBA Actualisation automatique Formule mensuelle


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR