Il est de bon ton de se souhaiter la bonne année. Mais vous, et vous seul, pourrez faire en sorte que cette année soit bonne, meilleure que celle qui vient de s'écouler. Apprenez à ne compter que sur vous, car personne n'est plus qualifié que vous-même pour bâtir, réparer ou améliorer votre propre vie. Personne ne fera les choses à votre place. D'ailleurs, tout ce que les autres peuvent faire, c'est souhaiter que vous le fassiez. Et ne croyez pas que tout ceux qui vous entourent vous apporteront des solutions : certains font juste partie de vos problèmes. Transformez vos résolutions en actes, et dans douze mois, retournez-vous et souriez-vous fièrement : C'était long. C'était difficile. Mais ça y est : 2017 était une bonne année, merci Moi.

DDE

Avec Word

Voici un exemple simple qui ouvre Word, y insère deux lignes de texte, et y applique des bullets. Attention : Il ne faut pas d'Option Explicit, car la variable appWord n'a pas été définie, et je ne sais pas ce que c'est.

Dim docWord As Word.Document
Set appWord = CreateObject("Word.Application.8")
Set docWord = appWord.Documents.Add()
appWord.Visible = True
docWord.Content.InsertAfter "This is a simple example for Word!"
docWord.Content.InsertAfter vbCrLf
docWord.Content.InsertAfter "Another Line"
docWord.Content.ListFormat.ApplyBulletDefault

Avec Excel

Ecriture dans un fichier Excel

Cet exemple crée un fichier excel dans lequel on ajoute un onglet, et dans lequel on écrit dans la cellule active (A1) le texte "Ca marche". On sauvergarde ensuite le fichier .XLS ainsi créé.

Dim objexcel As Object
Set objexcel = CreateObject("Excel.Application")
objexcel.workbooks.Add
objexcel.activecell.formula = "Ca marche"
objexcel.workbooks(1).saveas "C:\atelier\link.xls"
objexcel.Quit
Set objexcel = Nothing

Utilisation d'une fonction Excel

Attention : Même si on a Excel en Français, les fonctions (ici la fonction Somme) DOIT être écrite en anglais (SUM)

ATTENTION : avant d'utiliser Excel par OLE, il est nécessaire d'aller dans du code quelconque VB, et de faire Outils/Référence, et cocher la case "Microsoft Excel8.0 object library"

Les fonctions doivent être écrites en anglais. La liste complète se trouve dans MemoExcel, mais également, on peut faire, dans le code VB, demander Affichage/Explorateur d'objets, demander dans la liste déroulante du haut la bibliothèque "Excel", et rechercher la classe "WorkSheetFunction"

Exemple 1

Dim AppXL As New Excel.Application
MsgBox AppXL.Application.roman("4")
AppXL.Quit

Exemple 2

Dim xl As Object
Set xl = CreateObject("Excel.Sheet")
Set xl = xl.application.activeworkbook.activesheet
xl.range("A1").Value = "3"
xl.range("A2").Value = "4"
xl.range("A3").formula = "=
SUM(A1:A2)"
MsgBox xl.range("A3")
Set xl = Nothing

La même fonction, mais déclarée plus complètement

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlsheet As Excel.Worksheet
Set xlApp = CreateObject("Excel.Application.8")
Set xlBook = xlApp.Workbooks.Add
Set xlsheet = xlBook.Worksheets(1)
xlsheet.Range("A1").Value = "3"
xlsheet.Range("A2").Value = "4"
xlsheet.Range("A3").Formula = "=SUM(A1:A2)"
MsgBox xlsheet.Range("A3")
xlsheet.Range("A1").Font.ColorIndex = 3 ‘ *
Set xlsheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing

* : attention aux différences d’écritures. Lors de l’enregistrement d’une macro au sein d’Excel, on voit par exemple apparaître la propriété Selection, qui représente une sélection. Si on recopie ce code tel quel dans un Appel DDE depuis Word (par exemple), une erreur de compilation survient (Propriété non disponible). Il faut donc être attentif aux sélections, et les déclarer explicitement, comme dans la ligne de code en rouge