[RESOLU] > VBA - Mettre une formule sous la forme d'une macro

neal

XLDnaute Junior
Bonjour
je suis en train d'essayer de créer une macro pour obtenir automatiquement sur une ligne les 24 derniers mois glissants sous la formme "aaaamm".
Sur excel, aucun problèmes, j'utilise cette formule :

=SI((MOIS(DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI())-15;1)))>=10;ANNEE(DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI())-15;1))&MOIS(DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI())-15;1));ANNEE(DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI())-15;1))&"0"&MOIS(DATE(ANNEE(AUJOURDHUI());MOIS(AUJOURDHUI())-15;1)))

==> le "-15" correspond au 15ème mois avant la date d'aujourd'hui. J'écris le 29/11/2011, le résultat de la formule est ici "201008"


Ce que je voudrais, c'est créer une boucle qui écrive le résultat de ce calcul dans les cellules correspondantes, sans afficher les formules dans les cellules, juste le résultat "aaaamm"

La date du jour se trouve en cellule X1.
La date du 23ème mois avant la date du jour se trouve en A1.


Un peu d'aide ?
Merci d'avance.
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : [VBA] Mettre une formule sous la forme d'une macro

Bonjour,

pas sûr d'avoir tout compris, regarde peut être ceci si cela peut t'aider à avancer...

Code:
Option Explicit
Sub test()
Dim x As Integer, y As Byte
y = 24
For x = 1 To 24
    Cells(1, y).Value = Format(DateAdd("m", -x, Date), "yyyymm")
    y = y - 1
Next x
End Sub

bon après midi
@+
 

MichD

XLDnaute Impliqué
Re : [VBA] Mettre une formule sous la forme d'une macro

Bonjour

Voici une façon de faire pour traduire en VBA une formule déjà présente dans une cellule.

Suppose que ta formule est dans la cellule B1 de la feuil1, utilise cette macro.
Cette dernière va copier dans la cellule C1 (ou celle disponible dans ta feuille)
la formule traduite en anglais et répondant à la syntaxe VBA. Il ne te reste plus
qu'à faire un copier-coller du contenu de la cellule C1 vers une ligne de ton code vba.
Habituellement, il ne reste plus qu'à insérer les adresses des plages de cellules dans
le cas de plages dynamiques.

VB:
'---------------------------------------
Sub Test()
With Worksheets("Feuil1")
    .Range("C1") = "'" & .Range("B1").Formula
End With
'---------------------------------------[/HIGHTLIGHT]
End Sub

Et tu obtiendras ceci :

'=IF((MONTH(DATE(YEAR(TODAY()),MONTH(TODAY())-15,1)))>=10,YEAR(DATE(YEAR(TODAY()),MONTH(TODAY())-15,1))&MONTH(DATE(YEAR(TODAY()),MONTH(TODAY())-15,1)),YEAR(DATE(YEAR(TODAY()),MONTH(TODAY())-15,1))&"0"&MONTH(DATE(YEAR(TODAY()),MONTH(TODAY())-15,1)))
 

neal

XLDnaute Junior
Re : [VBA] Mettre une formule sous la forme d'une macro

Merci pour vos réponses.
Je me disais bien qu'il y avait un moyen beaucoup plus simple pour obtenir ce que je voulais ...

Par contre, Pierrot :
A quoi sert le "Option Explicit" que tu as mis au début de ta macro ?
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 206
Messages
2 086 210
Membres
103 158
dernier inscrit
laufin