Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Blaise Cacramp
Selon : Bonjour ou bonsoir
D'utiliser du VBA automation pour faire une sortie en Excel (relativement facile) ou en Word (si vraiment nécessaire)
Voici un exemple de code de base. Il faut bien entendu adapter sSql et l'écriture des champs Rst. N'hésitez pas à utiliser la touche magique "F1" sur les mots-clé
Cdt, Blaise ---- ---- ---- « Sub Demo_Xl_Rst() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim L As Long Dim C As Integer
Dim sSql As String Dim Rst As New ADODB.Recordset
sSql = "SELECT Tbl_Poste.CP_Code, Tbl_Poste.CP_Localite" _ & " FROM Tbl_Poste;" Rst.Open sSql, CurrentProject.Connection, adOpenStatic If Rst.EOF Then Beep MsgBox "pas d'enregistrements" Exit Sub 'pas d'enregistrements Else Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add 'dans le cas d'un classeur vierge ' ou Set xlBook = xlApp.Workbooks.Open("x:cheminnom.xlt") 'dans le cas d'un modèle _ recommandé quand la mise en forme est prévisible Set xlSheet = xlBook.Worksheets("Feuil1") 'ou son vrai nom dans un modèle (conseillé) xlApp.Calculation = xlCalculationManual 'Recommandé si vous écrivez des formules dans les cellules _ Accélère le traitement spectaculairement s'il y en a beaucoup xlApp.Visible = False 'ou True (False plus rapide dans le cas d'un grand tableau) _ Laisser à True lors des tests DoCmd.Hourglass True 'mettre en remarque durant la phase de tests
With xlSheet ' Ecrire quelques valeurs For L = 1 To Rst.RecordCount For C = 1 To 2 .Cells(L, C) = Rst(C - 1) Next C Rst.MoveNext Next L End With Rst.Close DoCmd.Hourglass False xlApp.Visible = True '(s'il avait été à false en début de procédure) xlApp.Calculation = xlCalculationAutomatic 'remettre le calcul automatique en route ' Libérer les variables objet Set Rst = Nothing Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing End If End Sub
»
"le Nordiste" a écrit dans le message de news:
Bonjour,
J'ai quelque srequêtes et tables résultant de requêtes.
j'aimerais présenter le résultat de certaines requêtes ne donnant qu'un seul enregistrement et moins de 5 champs chacune dans un seul document.
Que me conseiller vous et comment faire.
merci pour votre aide
Selon : Bonjour ou bonsoir
D'utiliser du VBA automation pour faire une sortie en Excel (relativement
facile) ou en Word (si vraiment nécessaire)
Voici un exemple de code de base. Il faut bien entendu adapter sSql et
l'écriture des champs Rst. N'hésitez pas à utiliser la touche magique "F1"
sur les mots-clé
Cdt, Blaise
---- ---- ----
«
Sub Demo_Xl_Rst()
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim L As Long
Dim C As Integer
Dim sSql As String
Dim Rst As New ADODB.Recordset
sSql = "SELECT Tbl_Poste.CP_Code, Tbl_Poste.CP_Localite" _
& " FROM Tbl_Poste;"
Rst.Open sSql, CurrentProject.Connection, adOpenStatic
If Rst.EOF Then
Beep
MsgBox "pas d'enregistrements"
Exit Sub 'pas d'enregistrements
Else
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add 'dans le cas d'un classeur
vierge
' ou Set xlBook = xlApp.Workbooks.Open("x:cheminnom.xlt") 'dans le
cas d'un modèle _
recommandé quand la mise en forme est prévisible
Set xlSheet = xlBook.Worksheets("Feuil1") 'ou son vrai nom dans
un modèle (conseillé)
xlApp.Calculation = xlCalculationManual 'Recommandé si vous
écrivez des formules dans les cellules _
Accélère le traitement
spectaculairement s'il y en a beaucoup
xlApp.Visible = False 'ou True (False plus rapide dans le cas
d'un grand tableau) _
Laisser à True lors des tests
DoCmd.Hourglass True 'mettre en remarque durant la phase de tests
With xlSheet
' Ecrire quelques valeurs
For L = 1 To Rst.RecordCount
For C = 1 To 2
.Cells(L, C) = Rst(C - 1)
Next C
Rst.MoveNext
Next L
End With
Rst.Close
DoCmd.Hourglass False
xlApp.Visible = True '(s'il avait été à false en début de
procédure)
xlApp.Calculation = xlCalculationAutomatic 'remettre le calcul
automatique en route
' Libérer les variables objet
Set Rst = Nothing
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
End If
End Sub
»
"le Nordiste" <jean-paul.bataille@sfr.com> a écrit dans le message de news:
2aae3bf6-0d05-4313-9493-b0fdeac95e61@g25g2000vbl.googlegroups.com...
Bonjour,
J'ai quelque srequêtes et tables résultant de requêtes.
j'aimerais présenter le résultat de certaines requêtes ne donnant
qu'un seul enregistrement et moins de 5 champs chacune dans un seul
document.
D'utiliser du VBA automation pour faire une sortie en Excel (relativement facile) ou en Word (si vraiment nécessaire)
Voici un exemple de code de base. Il faut bien entendu adapter sSql et l'écriture des champs Rst. N'hésitez pas à utiliser la touche magique "F1" sur les mots-clé
Cdt, Blaise ---- ---- ---- « Sub Demo_Xl_Rst() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim L As Long Dim C As Integer
Dim sSql As String Dim Rst As New ADODB.Recordset
sSql = "SELECT Tbl_Poste.CP_Code, Tbl_Poste.CP_Localite" _ & " FROM Tbl_Poste;" Rst.Open sSql, CurrentProject.Connection, adOpenStatic If Rst.EOF Then Beep MsgBox "pas d'enregistrements" Exit Sub 'pas d'enregistrements Else Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add 'dans le cas d'un classeur vierge ' ou Set xlBook = xlApp.Workbooks.Open("x:cheminnom.xlt") 'dans le cas d'un modèle _ recommandé quand la mise en forme est prévisible Set xlSheet = xlBook.Worksheets("Feuil1") 'ou son vrai nom dans un modèle (conseillé) xlApp.Calculation = xlCalculationManual 'Recommandé si vous écrivez des formules dans les cellules _ Accélère le traitement spectaculairement s'il y en a beaucoup xlApp.Visible = False 'ou True (False plus rapide dans le cas d'un grand tableau) _ Laisser à True lors des tests DoCmd.Hourglass True 'mettre en remarque durant la phase de tests
With xlSheet ' Ecrire quelques valeurs For L = 1 To Rst.RecordCount For C = 1 To 2 .Cells(L, C) = Rst(C - 1) Next C Rst.MoveNext Next L End With Rst.Close DoCmd.Hourglass False xlApp.Visible = True '(s'il avait été à false en début de procédure) xlApp.Calculation = xlCalculationAutomatic 'remettre le calcul automatique en route ' Libérer les variables objet Set Rst = Nothing Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing End If End Sub
»
"le Nordiste" a écrit dans le message de news:
Bonjour,
J'ai quelque srequêtes et tables résultant de requêtes.
j'aimerais présenter le résultat de certaines requêtes ne donnant qu'un seul enregistrement et moins de 5 champs chacune dans un seul document.
Que me conseiller vous et comment faire.
merci pour votre aide
le Nordiste
Bonjour et merci Blaise,
Je teste ton code dans la journée et te tient au courant. L'idée de passer directement sous XL me plait bien. J'ai XL2007, j'espére que ça va aller.
À bientot
Bonjour et merci Blaise,
Je teste ton code dans la journée et te tient au courant.
L'idée de passer directement sous XL me plait bien.
J'ai XL2007, j'espére que ça va aller.
Tout à fait ce que je recherchais. Bien sur il me faut adapter mais c'est trés proche de mon besoin.
J'apprécie les diverses versions -classeur vierge ou avec modéle-
Bonnes fêtes de Noël et de fin d'année
Blaise Cacramp
Merci aussi Le Nordiste (ch'ti ?) pour ton retour. Je dois dire que je n'utilise plus que cela pour les rapports. Et cela arrange les managers qui sont plus à l'aise avec Excel. Il peuvent ainsi colorer à leur guise, prendre des nombres, faire d'autres calculs ... Au début, pour trouver le code Excel facilement, j'enregistrais des macros que je copiais / collais / *adaptais car il faut quand même comprendre*. Après, la mémoire peut souvent suffire.
Autre chose : depuis lors, j'ai ajouté une autre ligne (22) dans l'exemple :
21 Rst.Close 22 .Range(xlSheet.Cells(1, 2), xlSheet.Cells(L, 2)).Font.Italic = True ' sans le xlSheet devant les .cells, l'erreur 1004 se déclenchera à la seconde éxécution. 23 End With
Joyeuses fêtes aussi, Blaise
"le Nordiste" a écrit dans le message de news:
MERCI ! Blaise,
Tout à fait ce que je recherchais. Bien sur il me faut adapter mais c'est trés proche de mon besoin.
J'apprécie les diverses versions -classeur vierge ou avec modéle-
Bonnes fêtes de Noël et de fin d'année
Merci aussi Le Nordiste (ch'ti ?) pour ton retour.
Je dois dire que je n'utilise plus que cela pour les rapports. Et cela
arrange les managers qui sont plus à l'aise avec Excel. Il peuvent ainsi
colorer à leur guise, prendre des nombres, faire d'autres calculs ...
Au début, pour trouver le code Excel facilement, j'enregistrais des macros
que je copiais / collais / *adaptais car il faut quand même comprendre*.
Après, la mémoire peut souvent suffire.
Autre chose : depuis lors, j'ai ajouté une autre ligne (22) dans l'exemple :
21 Rst.Close
22 .Range(xlSheet.Cells(1, 2), xlSheet.Cells(L,
2)).Font.Italic = True ' sans le xlSheet devant les .cells, l'erreur 1004
se déclenchera à la seconde éxécution.
23 End With
Joyeuses fêtes aussi, Blaise
"le Nordiste" <jean-paul.bataille@sfr.com> a écrit dans le message de news:
dd800688-cf37-4027-9447-bfebff3e029a@d10g2000yqh.googlegroups.com...
MERCI ! Blaise,
Tout à fait ce que je recherchais.
Bien sur il me faut adapter mais c'est trés proche de mon besoin.
J'apprécie les diverses versions -classeur vierge ou avec modéle-
Merci aussi Le Nordiste (ch'ti ?) pour ton retour. Je dois dire que je n'utilise plus que cela pour les rapports. Et cela arrange les managers qui sont plus à l'aise avec Excel. Il peuvent ainsi colorer à leur guise, prendre des nombres, faire d'autres calculs ... Au début, pour trouver le code Excel facilement, j'enregistrais des macros que je copiais / collais / *adaptais car il faut quand même comprendre*. Après, la mémoire peut souvent suffire.
Autre chose : depuis lors, j'ai ajouté une autre ligne (22) dans l'exemple :
21 Rst.Close 22 .Range(xlSheet.Cells(1, 2), xlSheet.Cells(L, 2)).Font.Italic = True ' sans le xlSheet devant les .cells, l'erreur 1004 se déclenchera à la seconde éxécution. 23 End With
Joyeuses fêtes aussi, Blaise
"le Nordiste" a écrit dans le message de news:
MERCI ! Blaise,
Tout à fait ce que je recherchais. Bien sur il me faut adapter mais c'est trés proche de mon besoin.
J'apprécie les diverses versions -classeur vierge ou avec modéle-