OVH Cloud OVH Cloud

VBA

3 réponses
Avatar
Andrew
Bonsoir

Par souci de simplification et pour un utilisateur d'âge certain j'ai créé
un document Publisher pour tenir des comptes d'une association de
bienfaisance. Ce fichier sous la forme d'un livret récapitule les divers
versementt effectués
Chaque page de ce livret est réservé à un bénéficiaire et contitent un
tableau de trois colonnes. Si au départ l'idée pouvait paraître acceptable,
je me rends compte que ce fichier devient ingérable (40 pages environ) et
qu'il ne permet pas de "travailler" les données qu'il contient.

J'aimerais savoir s'il est possible par code VBA de transférer les données
directement dans un fichier excel

J'ai déja une routine qui me copie un tableau. En revanche je ne sais pas
comment activer excel dans la ma routine oun s'il possible de le faire


Merci d'avance de votre aide préceuse

Andrew

3 réponses

Avatar
Clément Marcotte
Bonjour,

En revanche je ne sais pas comment activer excel dans la ma routine oun
s'il possible de le faire



Avec quelque chose comme cela:

Ouvrir Excel à partir d'une macro Publisher et écrire 35 dans la cellule a10
de la "Feuil1"

Sub Ecrire35dansunefeuilleExcel()
'Ouvre Excel, crée un nouveau claSSEUr
'et met 35 dans la cellule a10 de la feuille1
'du nouveau classeur.
Dim appxl As Object, lafeuille As Object
Set appxl = CreateObject("excel.application")
'Par expérience, un Excel non visible
'c'est presque pas tuable par VBA
'et il faut passer par le gestionnaire
'des tâches ou l'API Windows
'pour réussir à s'en débarasser
appxl.Visible = True
appxl.workbooks.Add
appxl.sheets("Feuil1").Range("a10").Value = 35
'xlapp.quit
End Sub

La même chose que précédemment, sauf qu'Excel tourne déjà sur la machine

Sub Ecrire35dansunefeuilleExcel_1()
'Utilise le classeur actif d'une instance existante
'd'Excel, et met 35 dans la cellule a10 de la feuille1
'du classeur actif.
Dim appxl As Object, lafeuille As Object
Set appxl = GetObject(, "excel.application")
'Par expérience, un Excel non visible
'c'est presque pas tuable par VBA
'et il faut passer par le gestionnaire
'des tâches ou l'API Windows
'pour réussir à s'en débarasser
appxl.Visible = True
appxl.sheets("Feuil1").Range("a10").Value = 35
'xlapp.quit
End Sub


"Andrew" a écrit dans le message de news:
44b9488f$
Bonsoir

Par souci de simplification et pour un utilisateur d'âge certain j'ai créé
un document Publisher pour tenir des comptes d'une association de
bienfaisance. Ce fichier sous la forme d'un livret récapitule les divers
versementt effectués
Chaque page de ce livret est réservé à un bénéficiaire et contitent un
tableau de trois colonnes. Si au départ l'idée pouvait paraître
acceptable, je me rends compte que ce fichier devient ingérable (40 pages
environ) et qu'il ne permet pas de "travailler" les données qu'il
contient.

J'aimerais savoir s'il est possible par code VBA de transférer les données
directement dans un fichier excel

J'ai déja une routine qui me copie un tableau. >
Merci d'avance de votre aide préceuse

Andrew





Avatar
Andrew
Merci Monsieur Clément

C'est exactement ce que je cherchais

La ligne suivante serait-elle profitable

set appxl = nothing ?

pour terminer la routine et libérer ainsi la variable objet

Merci encore et bonne soirée


"Clément Marcotte" a écrit dans le message
de news:
Bonjour,

En revanche je ne sais pas comment activer excel dans la ma routine oun
s'il possible de le faire



Avec quelque chose comme cela:

Ouvrir Excel à partir d'une macro Publisher et écrire 35 dans la cellule
a10 de la "Feuil1"

Sub Ecrire35dansunefeuilleExcel()
'Ouvre Excel, crée un nouveau claSSEUr
'et met 35 dans la cellule a10 de la feuille1
'du nouveau classeur.
Dim appxl As Object, lafeuille As Object
Set appxl = CreateObject("excel.application")
'Par expérience, un Excel non visible
'c'est presque pas tuable par VBA
'et il faut passer par le gestionnaire
'des tâches ou l'API Windows
'pour réussir à s'en débarasser
appxl.Visible = True
appxl.workbooks.Add
appxl.sheets("Feuil1").Range("a10").Value = 35
'xlapp.quit
End Sub

La même chose que précédemment, sauf qu'Excel tourne déjà sur la machine

Sub Ecrire35dansunefeuilleExcel_1()
'Utilise le classeur actif d'une instance existante
'd'Excel, et met 35 dans la cellule a10 de la feuille1
'du classeur actif.
Dim appxl As Object, lafeuille As Object
Set appxl = GetObject(, "excel.application")
'Par expérience, un Excel non visible
'c'est presque pas tuable par VBA
'et il faut passer par le gestionnaire
'des tâches ou l'API Windows
'pour réussir à s'en débarasser
appxl.Visible = True
appxl.sheets("Feuil1").Range("a10").Value = 35
'xlapp.quit
End Sub


"Andrew" a écrit dans le message de news:
44b9488f$
Bonsoir

Par souci de simplification et pour un utilisateur d'âge certain j'ai
créé un document Publisher pour tenir des comptes d'une association de
bienfaisance. Ce fichier sous la forme d'un livret récapitule les divers
versementt effectués
Chaque page de ce livret est réservé à un bénéficiaire et contitent un
tableau de trois colonnes. Si au départ l'idée pouvait paraître
acceptable, je me rends compte que ce fichier devient ingérable (40 pages
environ) et qu'il ne permet pas de "travailler" les données qu'il
contient.

J'aimerais savoir s'il est possible par code VBA de transférer les
données directement dans un fichier excel

J'ai déja une routine qui me copie un tableau. >
Merci d'avance de votre aide préceuse

Andrew









Avatar
Clément Marcotte
Bonjour,

La ligne suivante serait-elle profitable

set appxl = nothing ?

pour terminer la routine et libérer ainsi la variable objet

Merci encore et bonne soirée



Oui, En fait je l'avais laissée en commentaire, le temps de voir le résultat
dans Excel, puisque je n'avais rien prévu pour enregistrer le classeur.