Insérer des lignes dans excel depuis vba d'access

  • Initiateur de la discussion Initiateur de la discussion informatixo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

I

informatixo

Guest
Bonjour,

J'ai trouvé une solution paliative à mon problème que je vais évoquer mais j'aimerais avoir l'opinion de quelqu'un pour savoir si ce que je voulais faire au début est réalisable.

Tout d'abord Windows XP PRO SP1 et access et excel 2003.

J'ai une base de données et je me sers d'une requête pour éditer un état sous acces.

J'ai réalisé une macro sous access qui me permet d'exporter les données de cette fameuse requête vers excel en utilisant la commande "copier vers" et en mettant "oui" à "Lancement auto." pour qu'il me laisse le classeur ouvert pour pouvoir voir le résultat directement dans access..

Je me retrouve donc avec un classeur excel "essai.xls" ouvert avec le contenu de ma requête sur la première feuille.

Ce que je voudrais faire, c'est insérer 2 lignes et écrire des informations sur les 4 premières cellules de la première ligne. C'est-à-dire, écrire "Période du :" en A1, la date de début obtenue par une requête SQL en A2, "au" en A3 et la date de fin obtenue par une requête SQL en A4.

Pour cela j'ai écris une deuxième commande dans la macro access à la suite de "copier vers" qui est "executer code" où j'exécute une fonction que j'ai créé depuis l'environnement VBA.

------------------------------------------------------------------------------------------------
Private Function insertiondansexcel()
' Macro excel.

' Permet d'insérer 2 lignes sur une feuille de tableur et d'y ajouter la période.

' Déclaration des variables nécessaires pour travailler sur le classeur excel.
Dim appexcel As Excel.Application
Dim classeurexcel As Excel.Workbook
Dim feuilleexcel As Excel.Worksheet

'je n'ai pas encore mis les requêtes SQL pour obtenir la date de début et de fin pour ce test.

'Ouverture de l'application
Set appexcel = CreateObject("Excel.Application")

'Ouverture d'un fichier Excel
Set classeurexcel = appexcel.Workbooks.Open("essai.xls")

'feuilleExcel correspond à la première feuille du fichier
Set feuilleexcel = classeurexcel.Worksheets(1)

feuilleexcel.Rows("1:1").Select
Selection.Insert Shift:=xlDown
Selection.Insert Shift:=xlDown
feuilleexcel.Range("A1").Value = "Période du :"
feuilleexcel.Range("C1").Value = "au"

End Function
------------------------------------------------------------------------------------------------

Le problème que j'ai quand j'exécute cette macro c'est que je n'arrive pas insérer les lignes et les données dans excel car le classeur excel est ouvert et donc la ligne de code "Set classeurexcel = appexcel.Workbooks.Open("essai.xls")" ne fonctionne pas et access me renvoie une erreur puisque le classeur excel est déjà ouvert.

J'ai donc essayé de mettre "Set classeurexcel = appexcel.ActiveWorkbook" à la place mais encore une malchance car le classeur est ouvert mais pas actif donc encore un message d'erreur.

Suite à celà j'ai donc trouvé comme solution paliative dont je parlais au départ, de mettre "non" à "Lancement auto." de "copier vers".

Ainsi l'export ce fait sans avoir le classeur ouvert et quand "executer code" vient s'exécuter ma fonction avec le "Set classeurexcel = appexcel.Workbooks.Open("essai.xls")" fonctionne.

Existe t-il un code me permettant de faire quelquechose du style "set classeurexcel = prend le classeur ouvert" ? Ou bien une commande qui me permette de redonner le focus au classeur pour pouvoir me servir du "Active Workbook" ?

Ainsi je pourrais laisser "Lancement auto." de "Copier vers" à "oui" et tout faire d'un seul coup sans être obliger de faire l'export vers excel en silence et rouvrir le classeur derrière pour insérer ces 2 lignes et cette période.

Voilà désolé pour la longueur et j'espère avoir été assez clair. Je remercie par avance toutes les personnes qui vont prêter attention à ce fil et qui pourront me venir en aide.

informatixo
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
92
  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
649
Retour