Problème Pilotage excel à partir d'Access (ouverture de module, insertion) [Résolu]

Signaler
Messages postés
8
Date d'inscription
jeudi 10 février 2011
Statut
Membre
Dernière intervention
18 mai 2011
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bonjour à tous,

J'ai besoin dans le cadre de mon sujet de stage, de faire une base de données, j'ai tout conceptioné, j'ai fais du pilotage d'excel à partir d'Access sans problèmes.

Mais là où j'ai un problème c'est par exemple : je veux faire une liste box dans une cellule avec comme champs certaines données dans un premier temps récupérée dans la feuille excel (puis par des variables pour plus tard)
J'ai déduis d'un Record macro ceci :
Sub LISTE()
Range("D2").Select
With Selection.Validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=_
xlBetween , "Formula1:= "=A2:A4""

End sub


Donc j'ai transcri pour Access et j'ai ecris ceci :
 sCode = "Sub LISTE" & vbCrLf _
      & "Range(""D2"").Select" & vbCrLf_
      & "With" & sQT & "Selection.Validation" & vbCrLf _
      & ".Add" & sQT & "Type:=xlValidateList," & sQT & "AlertStyle:=xlValidAlertStop," & sQT & "Operator:=_" & vbCrLf _
      & "xlBetween," & sQT & "Formula1:= A2:A4" & vbCrLf _
      & "End sub"

  ligne = vbMdl.CountOfLines + 1
  vbMdl.InsertLines ligne, sCode


Cependant j'obtiens en résulat :
Sub LISTE()
Range("D2").Select
With "Selection.Validation"
.Add"Type:=xlValidateList,"AlertStyle:=xlValidAlertStop,"Operator:=_
xlBetween , "Formula1:= A2:A4"


C'est presque ça mais je n'arrive pas à corriger mes erreurs, surtout ici : "Formula1:= A2:A4"
et je ne comprend pas pourquoi je n'ai aps d'espace entre .Add et "Type:=...

3 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut

Que vaut "sQT" ?
Un " ?

Alors ça doit te générer ceci :
Sub LISTE()
Range("D2").Select
With"Selection.Validation"
.Add"Type:=xlValidateList,"AlertStyle:=xlValidAlertStop,"Operator:=_
xlBetween , "Formula1:= A2:A4"

Manque espace entre With et le reste
Selection.Validation n'a pas besoin de "
Manque espace entre .Add et le reste
Encore des " en trop dans la ligne du .Add
Les symboles _ permettent de faire une coupure de phrase dans le programme : règle impérative : mettre un espace devant le _
Formula1 : manque les " pour encadrer "=A2:A4"

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
8
Date d'inscription
jeudi 10 février 2011
Statut
Membre
Dernière intervention
18 mai 2011

ça marche merci ;) j'étais arrivé à tout corriger sauf le "=A2:A4" que j'avais zappé...
Pour moi
"sQT" c'était un espace mais ça amrchait une fois sur deux ^^
Par contre il faut que j'execture la macro maintenant, ça doit être quelque chose comme run sCode nn?
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Dans ton code, il manque le End With, avant le End Sub

Pour le lancement, je ne sais pas, pas d'expérience.
Si le VBE accepte l'insertion de code ET que ton code ne présente pas d'anomalie, tu devrais pouvoir l'appeler avec un simple
Call LISTE