Lancement d'une macro Excel à partir de Word/copier uniquement la valeur de la c [Résolu]

Signaler
Messages postés
33
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
29 février 2012
-
Messages postés
33
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
29 février 2012
-
Bonjour,


J'ai un léger problème VBA/Word/Excel à soumettre à votre sagacité



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 


 




Voilà les données :


Dans un fichier Word, j'ai plusieurs langues et des codes qui sont communs à toutes les langues.


Dans un fichier Excel, j'ai une feuille/langue avec en 1ère colonne le code, l'intitulé en anglais dans la 2ème colonne (comme l'anglais est souvent utilisé, j'ai déjà décodé dans une autre macro dans Word, voilà pourquoi j'ai écrit " If Selection.Text <> "ID : 041 eng " Then d = Trim(Right(Selection.Text, 4 ))", parce qu'alors je n'ai pas besoin de décoder) l'intitulé dans la langue dans la 3ème colonne.



 




Les 2 premières macros ci-dessous me permettent :


de sélectionner la langue du texte,


de sélectionner le code


de couper le code


d'ouvrir Excel



 


 





Sub Command5_Click()





'Déclaration des variables






    Dim appExcel As Excel.Application 'Application Excel






    Dim wbExcel As Excel.Workbook 'Classeur Excel






    Dim wsExcel As Excel.Worksheet 'Feuille Excel





'Ouverture de l'application






    Set appExcel = CreateObject("Excel.Application")





'Ouverture d'un fichier Excel






    Set wbExcel = appExcel.Workbooks.Open("C:\Documents and Settings\menegfa\Desktop\New Folder\plandeclassement.xls")





'wsExcel correspond à la première feuille du fichier






 
   Set wsExcel = wbExcel.Worksheets(1)






    appExcel.Visible = True






 






End Sub





 



 






Sub extrairelngue()





'

 






Dim d As String






    Selection.Find.ClearFormatting






 







    With Selection.Find






        .Text = "ID : 041 ??? "






        .Forward = True






        .Wrap = wdFindContinue






        .Format = False






        .MatchCase = False






        .MatchWholeWord = False






        .MatchAllWordForms = False






        .MatchSoundsLike = False






        .MatchWildcards = True






    End With






    Selection.Find.Execute






           








            If Selection.Text <> "ID : 041 eng " Then d = Trim(Right(Selection.Text, 4))






    MsgBox d






     








    With Selection.Find






        .Text = "<SubjectHeadingText>"






        .Replacement.Text = ""






        .Forward = True






        .Wrap = wdFindContinue






        .Format = False






        .MatchCase = False






        .MatchWholeWord = False






        .MatchAllWordForms = False






        .MatchSoundsLike = False






        .MatchWildcards = False






    End With






    Selection.Find.Execute






    Selection.MoveRight unit:=wdCharacter, Count:=1






 







    With Selection






    .StartIsActive = True






    .Extend Character:=Chr(60)






    Selection.MoveEnd unit:=wdCharacter, Count:=-1






 






End With






 Selection.Cut






 






Call Command5_Click






 







         End Sub





 





 




Dans le fichier Excel


J'ai une macro par langue



 




Sub cherchecodecze()










Dim MyDataObj As New DataObject

Dim d As String

 

MyDataObj.GetFromClipboard

d = MyDataObj.GetText

 

Sheets("cze").Select

 

    Range("B2:B250").Select

 Cells.Find(What:=d, After:=ActiveCell _

        , LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns, _

        SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate

 

  

         ActiveCell.Offset(0, 1).Activate

 

    Selection.Copy

 Sheets("Sheet1").Select

End Sub

 

Problème(s) :

 

Quand je colle le résultat de la macro Excel "manuellement"dans Word, ça me colle une cellule et pas que le texte (et ça m'oblige à faire un clic droit pour "copy text only", certes, c'est pas la mort mais bon)
Connaissez vous une solution pour que dans Excel ne soit copiée que la valeur de la cellule et pas toute la cellule , (en modifiant la macro Excel, pas <?xml:namespace prefix st1 ns "urn:schemas-microsoft-com:office:smarttags" /??><st1:city w:st="on"><st1:place w:st="on">celle</st1:place></st1:city> de Word)?

 

D'autre part, j'aimerais bien à partir de Word lancer la macro correspondante à la langue sans devoir cliquer sur le bouton de la macro dans Excel.

Mais pour cela je pense qu'il faudrait que je fasse des Select Case en fonction de la valeur retournée par ma string d

Faut-il que je déclare les macros d'Excel dans Command5_Click pour pouvoirles appeler à la fin de ma macro Sub extrairelngue ?

 (je voulais signaler que les String d déclarées dans Excel et dans Word n'ont rien à voir entre elles)

 

D'avance merci pour vos réponses et vos conseils

 

 

Bonne après-midi !

2 réponses

Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Concernant le lancement de la macro :

appExcel.Application.Run "'C:\Documents and Settings\menegfa\Desktop\New Folder\plandeclassement.xls'!Module1.cherchecodecze"

concernant la copie cela me parait difficile. Peut etre en passant par les fonctions du presse papier (ClipBoard) du VBA.
La meilleur solutionserait quand meme de le gerer l'ors du collé dans word.

A+
Messages postés
33
Date d'inscription
lundi 29 septembre 2008
Statut
Membre
Dernière intervention
29 février 2012

Merci Bigfish,

Parce que tu mérites bien une majuscule !!

Bonne journée