Hellboy écrit:
Bonjour Marc
Tes explications son claire, mais très peu de vision sur l'erreur qui se produit. Te serait-il possible de joindre ton fichier ou en montrer un peu plus sur ton code s.v.p.
Hellboy écrit:
Bonjour Marc
Tes explications son claire, mais très peu de vision sur l'erreur qui se produit. Te serait-il possible de joindre ton fichier ou en montrer un peu plus sur ton code s.v.p.
Bonjour Philippe,
Merci pour ta réponse.
C'est un peu compliqué car c'est un dialogue entre Access et Excel.
Pour ce qui est de ma grille de réservation, j'ai avancé un tout petit peu.
Ce que j'ai fais, c'est créer une variable (datum) qui reprend le nom du mois et du jour (sans espace).
je sélectionne ensuite la feuille grille, là, j'aimerais seulement qu'il prenne la valeur de la variable 'datum' et qu'il la mette dans zone de liste + enter, cela le positionnerais alors en B8 (octobre03).
Cela serait une petite avancée pour le premier message que j'ai posté aujourd'hui avant midi.
Voici le classeur excel maj.
A bientôt et merci !
Marc
PS:
Voici mon code qui permet de transférer des données de Access vers Excel + commentaires (cela pourra peut être servir pour quelqu'un d'autre)
Private Sub btnValiderDonneesReservationSalleInfo_Click()
' declaration des variables DAO
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim AppExcel As Excel.Application
Dim wbexcel As Excel.Workbook
Dim ValSQL As String
Dim Errormsgbox As String
Dim datum As String 'cette variable va mémoriser la valeur mois + jour (exemple octobre03) pour rechercher la zone portant ce nom dans l'autre feuille
'en cas d'erreur, on va à TraitementErreur (TraitementErreur est une étiquette)
'On Error GoTo TraitementErreur
'ici, je fais perdre le focus au bouton (le focus va sur la liste de choix 'Mois') pour que le bouton puisse être
'caché (visible=false)
Me!Mois.SetFocus
Me!btnValiderDonneesReservationSalleInfo.Visible = False
' ouverture de la table Table DonneesReservationSalleInfo
Set db = CurrentDb
Set rst = db.OpenRecordset('DonneesReservationSalleInfo')
'on ouvre le fichier excel (occupation)
Set AppExcel = CreateObject('Excel.Application')
'je cache la feuille
AppExcel.Visible = True
'je sélectionne la bonne feuille du classeur
Set wbexcel = AppExcel.Workbooks.Open('Z:\\occupation', ReadOnly:=False)
wbexcel.Sheets('DonneesReservationSalleInfo').Select
' ajouter un nouvel enregistrement dans la table 'DonneesReservationSalleInfo'
rst.AddNew
' remplissage des champs dans la table 'DonneesReservationSalleInfo'
rst('Mois') = Mois.Value
rst('Jours') = Jours.Value
rst('HeureDebut') = HeureDebut.Value
rst('HeureFin') = HeureFin.Value
rst('Utilisateur') = Utilisateur.Value
' maj de la table avec le nouvel enregistrement
rst.Update
'Programmation de la requête
ValSQL = 'SELECT * FROM [rqtDonneesReservationSalleInfo]'
'dans le fichier excel, je sélectionne la ligne 1A
AppExcel.Cells(1, 1).Select
'Je sélectionne la ligne libre (juste après celle qui est occupée par des données)
Do Until AppExcel.ActiveCell.Value = ''
AppExcel.ActiveCell.Offset(1, 0).Select
Loop
'Je vais au premier enregistrement de la table 'DonneesReservationSalleInfo'
rst.MoveFirst
'jusqu'à la fin de tous les enregistrements dans la requête
While Not rst.EOF
'je remplis la sheet excel
AppExcel.ActiveCell.Value = rst![N°].Value
AppExcel.ActiveCell.Offset(0, 1).Value = rst![Mois].Value
AppExcel.ActiveCell.Offset(0, 2).Value = rst![Jours].Value
AppExcel.ActiveCell.Offset(0, 3).Value = rst![HeureDebut].Value
AppExcel.ActiveCell.Offset(0, 4).Value = rst![HeureFin].Value
AppExcel.ActiveCell.Offset(0, 5).Value = rst![Utilisateur].Value
AppExcel.ActiveCell.Offset(0, 6).Value = Now
AppExcel.ActiveCell.Offset(0, 7).Value = rst![Mois] & rst![Jours]
datum = AppExcel.ActiveCell.Offset(0, 7).Value
AppExcel.ActiveCell.Offset(1, 0).Select
AppExcel.Worksheets('grille').Select
AppExcel.Application.Goto Reference:=datum
'je supprime les enregistrements de la table, un enregistrement à la fois vue qu'on doit cliquer sur le bouton pour
'enregistrer le changement dans la table
rst.Delete
rst.MoveNext
'voir aussi l'évènement sur le close du formulaire et sur l'activation du formulaire (petit carré en haut à gauche)
Wend
'je ferme le tout (excel) et je sauve
'wbexcel.Save
'wbexcel.Close
'AppExcel.Quit
'je supprime toutes les valeurs des listes de choix
Me!Mois.Value = ''
Me!Jours.Value = ''
Me!HeureDebut.Value = ''
Me!HeureFin.Value = ''
Me!Utilisateur.Value = ''
'TraitementErreur:
' If Err.Number = 3021 Then
' Errormsgbox = 'Matricule non trouvé dans cette année !'
' AppExcel.Quit
'
' Else
' Errormsgbox = 'L'erreur suivante s'est produite : ' & vbCrLf & Err.Number & Err.Description
'
' End If
' MsgBox Errormsgbox, vbCritical
'
End Sub