chastada
Messages postés2Date d'inscriptionmardi 24 juin 2008StatutMembreDernière intervention25 juin 2008
-
24 juin 2008 à 09:12
chastada
Messages postés2Date d'inscriptionmardi 24 juin 2008StatutMembreDernière intervention25 juin 2008
-
25 juin 2008 à 09:23
Bonjour,
je suis confronté au problème suivant:
J'ai une macro, Mamacro, dans un fichier Excel qui doit insérer des lignes dans une feuille.
Si la macro est exécutée directement dans l'environnement Excel, aucun souci.
Maintenant, cette macro est appellée, depuis une autre application Office (Project) via la commande
//après ouverture du fichier Excel contenant la macro
Excel.run "MonfichierExcel.xls!Mamacro()"
L'appel à la macro fonctionne (vérifier par de l'écriture dans des cellules) mais certaines instructions de la macro
ne marchent pas. Entre autre, le copier coller, l'insertion de ligne,
la suppression de ligne... c'est balo me direz vous.
Est ce que quelqu'un saurait m'expliquer pourquoi certaines commandes ne marchent pas.
Y'a t-il un paramétrage quelconque à faire lors de l'ouverture du classeur Excel? Est ce un bug Excel?
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 24 juin 2008 à 15:15
Salut,
donne nous le code de ta macro et le code qui te permet de l'executer pour que l'on puisse t'aider... par ce que la... pas simple dans c'est condition !
chastada
Messages postés2Date d'inscriptionmardi 24 juin 2008StatutMembreDernière intervention25 juin 2008 25 juin 2008 à 09:23
Salut,
Bon j'ai planché pour faire un petit exemple simple à votre demande, et oh surprise ca marche...
En fait, l'exemple que je souhaitais vous envoyer était un appel d'une macro d'un fichier Excel à partir d'un autre fichier Excel. Ca a marché. Dans mon problème, l'appel se fait depuis un application MS Project. J'ai alors essayé la même chose avec un exemple project. Et là ca ne marchait pas. J'ai investigué et l'explication est la suivante:
Dans ma macro Project, j'utilisais des application.workbook.open pour ouvrir le fichier Excel, puis des application.run ("Lefichier.xls!mamacro"). En fait, à partir du moment ou je manipulais des fichier Excel, il valait mieux utiliser Excel.workbook.open et Excel.run ("Lefichier.xls!mamacro"). Et là ca marche sans problème.
A titre d'information, voici le code de la macro du fichier Excel appelé La_macro_appellee.xls:
Sub testLocal()
MacroAppeleeEcriture
If VBA.StrComp(ActiveWorkbook.Sheets("test").Cells(2, 1).Value, "Texte pour vérifier le décalage", vbTextCompare) <> 0 Then appel = MsgBox("L'écriture a échoué", vbApplicationModal + vbInformation + vbOKOnly, "Test macro")
End If
MacroAppeleeDecalage
If VBA.StrComp(ActiveWorkbook.Sheets("test").Cells(3, 1).Value, "Texte pour vérifier le décalage", vbTextCompare) <> 0 Then appel = MsgBox("Le décalage a échoué", vbApplicationModal + vbInformation + vbOKOnly, "Test macro")
End If MacroAppeleeCopie
If VBA.StrComp(ActiveWorkbook.Sheets("test").Cells(4, 1).Value, "Texte pour vérifier le décalage", vbTextCompare) <> 0 Then appel = MsgBox("La copie a échoué", vbApplicationModal + vbInformation + vbOKOnly, "Test macro")
End If
End Sub Sub MacroAppeleeEcriture()
ActiveWorkbook.Sheets("test").Cells(2, 1) = "Texte pour vérifier le décalage"
End Sub Sub MacroAppeleeDecalage()
ActiveWorkbook.Sheets("test").Rows("2:2").Select
Selection.Insert Shift:= xlDown
End Sub
Sub MacroAppeleeCopie()
ActiveWorkbook.Sheets("test").Rows("2:2").Select
Selection.Copy
ActiveWorkbook.Sheets("test").Rows("2:2").Select
Selection.Insert Shift: =xlDown
End Sub
Voici le code de la macro appelante du fichier MS Project
Sub testDeporte()
Excel.Workbooks.Open ("La_macro_appellee.xls")
Excel.Run ("La_macro_appellee.xls!MacroAppeleeEcriture")
If VBA.StrComp(Excel.Workbooks("La_macro_appellee.xls").Sheets("test").Cells(2, 1).Value, "Texte pour vérifier le décalage", vbTextCompare) <> 0 Then appel = MsgBox("L'écriture a échoué", vbApplicationModal + vbInformation + vbOKOnly, "Test macro")
End If
Excel.Run ("La_macro_appellee.xls!MacroAppeleeDecalage")
If VBA.StrComp(Excel.Workbooks("La_macro_appellee.xls").Sheets("test").Cells(3, 1).Value, "Texte pour vérifier le décalage", vbTextCompare) <> 0 Then appel = MsgBox("Le décalage a échoué", vbApplicationModal + vbInformation + vbOKOnly, "Test macro")
End If Excel.Run ("La_macro_appellee.xls!MacroAppeleeCopie")
If VBA.StrComp(Excel.Workbooks("La_macro_appellee.xls").Sheets("test").Cells(4, 1).Value, "Texte pour vérifier le décalage", vbTextCompare) <> 0 Then appel = MsgBox("La copie a échoué", vbApplicationModal + vbInformation + vbOKOnly, "Test macro")
End If
Excel.Workbooks("La_macro_appellee.xls").Close SaveChanges: =False
End Sub Dans cette dernière macro, Si Excel est remplacé par application, les insertion et copie ne marchent pas.
en tout cas, merci pour votre aide indirecte qui m'a fait réfélchir