Piloter excel par ole avec access ou vb

Contenu du snippet

Copiez-collez le code ci-dessous dans un module de votre application.
Puis utilisez-le tel quel.
Un exemple est fourni à la fin.

Il a été fait avec Access. Quelques adaptations très succinctes sont à faire pour qu'il tourne avec VB. Remplacez simplement la clause Public de la variable Excel_Application (dans l'entête) par un vulgaire Dim. Et enlevez le "Compare database". C'est tout.

Source / Exemple :


Option Compare Database
Option Explicit

'(c) J. PRESTREAU, 2000

Public Excel_Application As Excel.Application

Public Sub Excel_Atteindre_cellule(Coordonnées_cellule As String)

With Excel_Application
   .Range(Coordonnées_cellule).Select
End With

End Sub

Public Sub Excel_Création_Lien_OLE()

Set Excel_Application = CreateObject("Excel.Application")

End Sub

Public Sub Excel_Dans_cellule_Saisir_valeur(Coordonnées_cellule As String, valeur As Variant)

With Excel_Application
   .Range(Coordonnées_cellule).FormulaR1C1 = valeur
End With

End Sub

Public Sub Excel_Enregistrer_Classeur_courant(Optional Nom_fichier As String)

With Excel_Application
   If IsNull(Nom_fichier) Then
      .ActiveWorkbook.Save
   Else
      .ActiveWorkbook.SaveAs Nom_fichier
   End If
End With

End Sub

Public Sub Excel_insérer_colonne()

With Excel_Application
   .Selection.Insert Shift:=xlToRight
End With

End Sub

Public Sub Excel_insérer_ligne()

With Excel_Application
   .Selection.Insert Shift:=xlDown
End With

End Sub

Public Function Excel_Lire_valeur(Coordonnées_cellule As String) As Variant

With Excel_Application
   Excel_Lire_valeur = .Range(Coordonnées_cellule).FormulaR1C1
End With

End Function

Public Sub Excel_Saisir_valeur(valeur As Variant)

With Excel_Application
   .ActiveCell.FormulaR1C1 = valeur
End With

End Sub

Public Sub Excel_Nouveau_classeur(Optional Modèle As String)

With Excel_Application
   .Visible = True
   If Modèle = "" Then
      .Workbooks.Add
   Else
      .Workbooks.Add Modèle
   End If
   .WindowState = xlMaximized
End With
   
End Sub

Public Sub Excel_Quitter()

Excel_Application.Quit

End Sub

Public Sub Excel_Quitter_sans_sauver()

Dim Classeur As Workbook

With Excel_Application
   
   For Each Classeur In .Workbooks
      Classeur.Saved = True
   Next
   
   .Quit

End With

End Sub

Public Sub Excel_Suppression_Lien_OLE()

Set Excel_Application = Nothing

End Sub

Sub Excel_Test(Optional paramètre_requis As String)

If paramètre_requis = "" Then
   Debug.Print ("Paramètres requis pour le test" & vbCrLf & vbCrLf & "La syntaxe est" & vbCrLf & "Excel_Test 1 ou" & vbCrLf & "Excel_Test 2 ou" & vbCrLf & "Excel_Test 3")
Else
   Excel_Création_Lien_OLE
   Select Case paramètre_requis
      Case 1, 2, 3
         Excel_Nouveau_classeur
         Excel_Dans_cellule_Saisir_valeur "B2", "Jacques PRESTREAU"
         Excel_Atteindre_cellule "C4"
         Excel_Saisir_valeur "2 bis, avenue Xxxx"
         Excel_Atteindre_cellule "E1"
         Excel_Saisir_valeur "Développeur Access et VB"
         Excel_Dans_cellule_Saisir_valeur "A3", Mid(Excel_Lire_valeur("C4"), 5, 6)
         Select Case paramètre_requis
            Case 1
               Excel_Quitter 'Demande si on veut enregistrer les modifs
            Case 2
               Excel_Enregistrer_Classeur_courant "Démo d'un classeur fait par VBA.xls"
               Excel_Quitter 'Fichier sauvé, donc quitte sans message
            Case 3
               Excel_Quitter_sans_sauver 'Quitte sans sauver les modifs
         End Select
      Case Else
         Debug.Print "Le paramètre ne peut être que 1 ou 2 ou 3"
   End Select
End If
   
End Sub

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.