OVH Cloud OVH Cloud

Conseil + Aide sur Automation

1 réponse
Avatar
keawee
Bonjour,

J'ai plusieurs probl=E8mes et j'aimerais avoir vos conseils

Probl=E8me 1:

J'ai un probl=E8me concernant ma proc=E9dure et plus=20
pr=E9cis=E9ment sur la d=E9claration de mes variables. Si je=20
type mes variables comme ceci, cela ne marche pas :

'Dim db As Database
'Dim rs As Recordset
'Dim fichier As String

Mais par contre comme ceci cela marche


Dim db As Variant
Dim rs As Variant
Dim fichier As Variant

Pourquoi d'apr=E8s vous ?.

Probl=E8me 2 :

J'ai un autre probl=E8me sur la partie de mon code o=F9 je=20
sauve et je ferme ma WorkBook. Je souhaite simplement=20
fermer et quitter ma workbook sans qu'il m'affiche le=20
message si je souhaite r=E9ellement sauver et quitter mon=20
fichier, mais pour faire cela je pense que je dois=20
utiliser Set Warning.=20
Par contre, il me dit que je dois changer mon fichier "en=20
lecture seule " alors que si je
regarde mon fichier, tout le monde peux faire ce qu'ils=20
veulent. pourquoi ce probl=E8me ?

Probl=E8me 3 :

Je n'arrive pas =E0 ouvrir mon fichier Excel en utilisant=20
ceci, pourquoi d'apr=E8s vous ?.:

'stAppName =3D fichier & "\Copie de GPPR_POP.xls"
'Call Shell(stAppName, 1)

Voici le code en entier:

Private Sub DataTransfertToExcel()
=20
'Dim db As Database
'Dim rs As Recordset
'Dim fichier As String
=20
Dim db As Variant
Dim rs As Variant
Dim fichier As Variant
Dim stAppName As String
=20
fichier =3D Application.CurrentProject.Path
=20
Set db =3D DBEngine.OpenDatabase(fichier=20
& "\ProductPerformance.mdb")
Set rs =3D db.OpenRecordset("Board Revenue Part 2=20
Final",
dbOpenDynaset)



Dim XL_App As Object
Set XL_App =3D CreateObject("Excel.Application")
Dim XL_classeur As Object
Dim XL_feuille As Object
Dim Rg As Range
Dim Nb As Long
Dim Sh As Worksheet
=20
With XL_App
Set XL_classeur =3D .Workbooks.Open(fichier=20
& "\Copie de
GPPR_POP.xls")
Set Sh =3D XL_classeur.Sheets("Revenue")
=20
With Sh
Set Rg =3D .Range("A7")
End With
=20
Rg.CurrentRegion.Clear
=20
If rs.EOF =3D False Then
Nb =3D rs.Fields.Count - 1

For a =3D 0 To Nb
Rg(, 1 + a) =3D rs.Fields(a).Name
Next
Rg.Resize(, Nb + 1).Font.Bold =3D True
Rg.Offset(1).CopyFromRecordset rs
Rg.CurrentRegion.EntireColumn.AutoFit
Rg.CurrentRegion.WrapText =3D True
Rg.CurrentRegion.BorderAround bordure,=20
xlHairline, 0
Rg.CurrentRegion.Borders.LineStyle =3D=20
xlContinuous

Else

MsgBox "Aucun enregistrement trouv=E9."
End If
=20
'.ActiveWorkbook.Save
.ActiveWorkbook.Close
.Quit
End With
db.Close
Set XL_App =3D Nothing
Set XL_classeur =3D Nothing
Set XL_feuille =3D Nothing
=20
'stAppName =3D fichier & "\Copie de GPPR_POP.xls"
'Call Shell(stAppName, 1)

End Sub

Merci de votre aide

Keawee

1 réponse

Avatar
Raymond
Bonsoir.

problème touffu que tu vas résoudre en plusieurs fois.

1 - déclarations:
Dim db As DAO.Database
Dim rs As DAO.Recordset
(cocher la référence microsoft DAO 3.6 object library)

2 - sous Excel il faut utiliser:
.DisplayAlerts = False
.ActiveWorkbook.SaveAs ("C:Feuilles.XLS")
.DisplayAlerts = True
(pourquoi différent de access ? que pour nous embêter)


3 - pour gérer des feilles excel tu as des modèles sur mon site:
http://access.seneque.free.fr/excel.htm

Quand tu auras amélioré ta procédure et si tu as encore un problème n'hésite
pas à revenir dans cette même conversation.
--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"keawee" a écrit dans le message de
news:4cb701c37643$8b288200$
Bonjour,

J'ai plusieurs problèmes et j'aimerais avoir vos conseils

Problème 1:

J'ai un problème concernant ma procédure et plus
précisément sur la déclaration de mes variables. Si je
type mes variables comme ceci, cela ne marche pas :

'Dim db As Database
'Dim rs As Recordset
'Dim fichier As String

Mais par contre comme ceci cela marche


Dim db As Variant
Dim rs As Variant
Dim fichier As Variant

Pourquoi d'après vous ?.

Problème 2 :

J'ai un autre problème sur la partie de mon code où je
sauve et je ferme ma WorkBook. Je souhaite simplement
fermer et quitter ma workbook sans qu'il m'affiche le
message si je souhaite réellement sauver et quitter mon
fichier, mais pour faire cela je pense que je dois
utiliser Set Warning.
Par contre, il me dit que je dois changer mon fichier "en
lecture seule " alors que si je
regarde mon fichier, tout le monde peux faire ce qu'ils
veulent. pourquoi ce problème ?

Problème 3 :

Je n'arrive pas à ouvrir mon fichier Excel en utilisant
ceci, pourquoi d'après vous ?.:

'stAppName = fichier & "Copie de GPPR_POP.xls"
'Call Shell(stAppName, 1)

Voici le code en entier:

Private Sub DataTransfertToExcel()

'Dim db As Database
'Dim rs As Recordset
'Dim fichier As String

Dim db As Variant
Dim rs As Variant
Dim fichier As Variant
Dim stAppName As String

fichier = Application.CurrentProject.Path

Set db = DBEngine.OpenDatabase(fichier
& "ProductPerformance.mdb")
Set rs = db.OpenRecordset("Board Revenue Part 2
Final",
dbOpenDynaset)



Dim XL_App As Object
Set XL_App = CreateObject("Excel.Application")
Dim XL_classeur As Object
Dim XL_feuille As Object
Dim Rg As Range
Dim Nb As Long
Dim Sh As Worksheet

With XL_App
Set XL_classeur = .Workbooks.Open(fichier
& "Copie de
GPPR_POP.xls")
Set Sh = XL_classeur.Sheets("Revenue")

With Sh
Set Rg = .Range("A7")
End With

Rg.CurrentRegion.Clear

If rs.EOF = False Then
Nb = rs.Fields.Count - 1

For a = 0 To Nb
Rg(, 1 + a) = rs.Fields(a).Name
Next
Rg.Resize(, Nb + 1).Font.Bold = True
Rg.Offset(1).CopyFromRecordset rs
Rg.CurrentRegion.EntireColumn.AutoFit
Rg.CurrentRegion.WrapText = True
Rg.CurrentRegion.BorderAround bordure,
xlHairline, 0
Rg.CurrentRegion.Borders.LineStyle xlContinuous

Else

MsgBox "Aucun enregistrement trouvé."
End If

'.ActiveWorkbook.Save
.ActiveWorkbook.Close
.Quit
End With
db.Close
Set XL_App = Nothing
Set XL_classeur = Nothing
Set XL_feuille = Nothing

'stAppName = fichier & "Copie de GPPR_POP.xls"
'Call Shell(stAppName, 1)

End Sub

Merci de votre aide

Keawee