VBA : problème sur une macros basé sur un SI

Fermé
Cédric - 30 mars 2009 à 20:58
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 1 avril 2009 à 12:44
Bonjour,

Je suis étudiant et je cherche à développer une macros basé sur un SI pour mon épreuve d'oral en fin d'année.

Mon classeur excel (Classeur test.xls) est basé sur une liste déroulante (des dates) qui me reporte des montants sur tous mes tableaux de coûts situés dans les feuilles suivantes (il s'agit d'une application de contrôle de gestion).

Je souhaite donc faire une macro qui me sélectionne mon résultat analytique, ouvre un nouveau classeur (analyse.xls) existant et colle ce résultat analytique dans ce nouveau classeur ouvert. Je souhaite qu'il le colle à différents endroits selon la période. C'est pourquoi j'ai pensé à une fonction SI.

Mon code VBA est donc celui-ci

[quote] Sub MacroTest()

Workbooks.Open Filename:= _
"G:\Tableaux de couts\analyse.xls"

Windows("Classeur test.xls").Activate
If DateChoixTxt = mai_2008 Then

Windows("Classeur test.xls").Activate
Sheets("Résultat analytique").Select
Range("D7:D9").Select
Selection.Copy

Windows("analyse.xls").Activate
Sheets("Ecart").Select
Range("B4:B6").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

Else

Windows("Classeur test.xls").Activate
Sheets("Résultat analytique").Select
Range("D7:D9").Select
Selection.Copy

Windows("analyse.xls").Activate
Sheets("Ecart").Select
Range("E4:E6").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

End If

End Sub /quote

La cellule contenant la date est une cellule avec une fonction qui me renvoie la date au format mai 2008.

Le code a l'air bon.
Et pourtant, j'ai beau tester des tas de trucs, quand je lance la macro, elle colle toujours dans les cellules B4:B6, sans tenir compte de la condition.

J'ai peut-être fait une erreur dans la syntaxe. A vrai dire, je ne suis qu'un débutant en VBA.
Je sollicite donc votre aide, après des heures à avoir planché sur le sujet sans résultat.

Merci d'avance pour votre aide,

Cordialement,

2 réponses

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 644
1 avril 2009 à 11:52
Bonjour,

Que sont DateChoixTxt et mai_2008 ?
Si ce sont des variables elles ne sont pas initialisées à moins que ce soient des variables globales, si ce sont des cellules nommées alors la syntaxe n'est pas bonne.
Telle que tu nous présente ta macro il est normal que le IF soit toujours vrai car ces deux variables n'étant pas initialisées elles sont égales.

Il faut nous donner plus de précisions.

A+
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
1 avril 2009 à 12:44
Bonjour,

Ta date dans la cellule (même si le format est mmm_aaaa) est bien une date valide et complète comme 01/05/09.
Essaie avec If DateChoixTxt = datevalue("01/05/2009").
Bien sûr il faut que ta date dans le cellule soit au 1er du mois, et le format de la date entre " " dépend du format 'date courte' de ton système.
eric
0