VBA : problème sur une macros basé sur un SI
Cédric
-
eriiic Messages postés 25847 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 25847 Date d'inscription Statut Contributeur Dernière intervention -
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,
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,
A voir également:
- VBA : problème sur une macros basé sur un SI
- Excel compter cellule couleur sans vba - Guide
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
2 réponses
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+
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+
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
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