Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

problème avec un switch en VBA Access...

1 réponse
Avatar
Fred Pasc
Bonjour,

Sous Access 2000, j'ai un formulaire avec un groupe d'option (Cadre1). Le
choix de ce groupe d'option est récupérer dans une zone de texte (Valeur).
En fonction de cette valeur, je souhaite qu'une donnée soit envoyé dans un
classeur Excel après l'appui sur un bouton. Le problème est qu'aucune donnée
n'apparait dans mon classeur Classeur1 et que celui-ci devient en lecture
seule car il est utilisé par Access.
Mon code fonctionnait bien lorsqu'il n'y avait pas le switch. Voici son état
actuel:

Private Sub Commande0_Click()
Dim XL_App As New Excel.Application
Dim XL_Classeur As Object
Dim XL_Feuille As Object
With XL_App
Set XL_Classeur = .Workbooks.Open("C:\Classeur1.xls")
Set XL_Feuille = XL_Classeur.Sheets("Avril 2003")
With XL_Feuille
Me!Cadre1 = Switch( _
Me![Valeur] = 1, (.Range("A1").Value = "O"), _
Me![Valeur] = 2, (.Range("A2").Value = "X"))
End With
.ActiveWorkbook.Save
.ActiveWorkbook.Close
.Quit
End With
Set XL_App = Nothing
Set XL_Classeur = Nothing
Set XL_Feuille = Nothing
End Sub


Voilà, j'espère que je me suis bien exprimé. Je suis ouvert à toutes
tentatives d'aide.
Merci d'avance

A+
Fred

1 réponse

Avatar
Fred Pasc
J'ai finalement réussi mais j'ai remplacé le switch par un select case qui
lui fonctionne.

Voici donc mon code :

Private Sub Commande0_Click()
Dim XL_App As New Excel.Application
Dim XL_Classeur As Object
Dim XL_Feuille As Object
With XL_App
Set XL_Classeur = .Workbooks.Open("C:Documents and
Settingsstagiaire2Mes documentsStage Informatique M.PascassioProjet
PrincipalTest de BDGrilleLOTOClasseur5.xls")
Set XL_Feuille = XL_Classeur.Sheets("Avril 2003")
With XL_Feuille
Select Case Me!Valeur ' Évalue le nombre aléatoire.
Case 1: .Range("A1").Value = ""
Case 2: .Range("A2").Value = "X"
Case 0: Exit Sub
End Select
End With
.ActiveWorkbook.Save
.ActiveWorkbook.Close
.Quit
End With
Set XL_App = Nothing
Set XL_Classeur = Nothing
Set XL_Feuille = Nothing
End Sub

Petite question supplémentaire cependant, comment je peux faire pour dire,
si le choix est 1 mettre A dans la case 1 et B dans la case 2.
En gros, je veux faire :

Case 2: .Range("A2").Value = "X" , .Range("A1").Value = ""

J'ai essayé et cela il n'en veux pas !
Merci de m'aider.
A+
Fred


"Fred Pasc" a écrit dans le message de news:
d6smca$1dj$
Bonjour,

Sous Access 2000, j'ai un formulaire avec un groupe d'option (Cadre1). Le
choix de ce groupe d'option est récupérer dans une zone de texte (Valeur).
En fonction de cette valeur, je souhaite qu'une donnée soit envoyé dans un
classeur Excel après l'appui sur un bouton. Le problème est qu'aucune
donnée

n'apparait dans mon classeur Classeur1 et que celui-ci devient en lecture
seule car il est utilisé par Access.
Mon code fonctionnait bien lorsqu'il n'y avait pas le switch. Voici son
état

actuel:

Private Sub Commande0_Click()
Dim XL_App As New Excel.Application
Dim XL_Classeur As Object
Dim XL_Feuille As Object
With XL_App
Set XL_Classeur = .Workbooks.Open("C:Classeur1.xls")
Set XL_Feuille = XL_Classeur.Sheets("Avril 2003")
With XL_Feuille
Me!Cadre1 = Switch( _
Me![Valeur] = 1, (.Range("A1").Value = "O"), _
Me![Valeur] = 2, (.Range("A2").Value = "X"))
End With
.ActiveWorkbook.Save
.ActiveWorkbook.Close
.Quit
End With
Set XL_App = Nothing
Set XL_Classeur = Nothing
Set XL_Feuille = Nothing
End Sub


Voilà, j'espère que je me suis bien exprimé. Je suis ouvert à toutes
tentatives d'aide.
Merci d'avance

A+
Fred