Listes de validation capricieuses

Le
danielos
Bonjour à toutes et à tous,

A partir d'un fichier word [j'ai bien vu que c'est le forum excel ;-)],
je souhaite créer un fichier excel avec la macro ci-dessous.

La finalité étant d'avoir un fichier excel portant le nom du fichier =

word, comportant 6 colonnes à renseigner dont 3 le seraient avec des
liste de choix. Ces choix étant en page 2.

L'ouverture d'excel, la création du fichier, son enregistrement, le
titrage des colonnes, l'écriture des choix (en seconde page) ; tout cel=
a
fonctionne et se déroule parfaitement.

La création du nom des listes semble se faire correctement mais pourtan=
t
je ne suis pas certain que cela se fasse comme il faut car avant la mise =

en place des validations (qui ne fonctionnent pas), si je vais dans le
fichier excel (au point d'arrêt indiqué dans la macro), j'ai bien les=
3
noms de créés pour les 3 plages, mais lorsque je sélectionne chaque=

plage, le nom n'apparait pas dans la zone de nom (en haut à gauche).
Ceci explique peut être pourquoi les validations ne fonctionnent pas ap=
rès.
En restant dans le fichier et en tentant de mettre manuellement les
validation en place à partir des noms enregistrés pour les plages de =

choix, il y a une erreur de source corrompue.

L'un ou l'une d'entre vous pourrait-il me venir en aide ?
merci d'avance.

Daniel

Précision : C'est excel et Word 2003.

Sub ouvrir_excel_new()

'Récupération du nom par le nom du fichier word
Dim stName As String
Dim NomClas As String
Dim chemin As String
Dim fichier As String

chemin = ActiveDocument.Path

stName = ActiveDocument.Name 'Pour récupérer la valeur de stName
Pos = InStr(1, stName, ".", 1)
stName = Left(stName, Pos - 1)

NomClas = stName & ".xls"

Dim exl As Object

'ouvre un nouveau classeur excel

Set exl = CreateObject("excel.application")
exl.Visible = True
exl.Workbooks.Add

'.enregistre le classeur

fichier = chemin & "" & NomClas
ActiveWorkbook.SaveAs FileName:=fichier

' Crée les titres des colonnes

exl.ActiveWorkbook.Sheets(1).Cells(1) = " Nom "
exl.ActiveWorkbook.Sheets(1).Cells(2) = " Prénom "
exl.ActiveWorkbook.Sheets(1).Cells(3) = " Fonction "
exl.ActiveWorkbook.Sheets(1).Cells(4) = " J/A (Jeune ou Adulte)"
exl.ActiveWorkbook.Sheets(1).Cells(5) = " H/F "
exl.ActiveWorkbook.Sheets(1).Cells(6) = " Int/Ext"

Range("A2").Select

'.création listes de choix (à finir)
exl.ActiveWorkbook.Sheets(2).Range("A1") = "J"
exl.ActiveWorkbook.Sheets(2).Range("A2") = "A"
exl.ActiveWorkbook.Sheets(2).Range("B1") = "H"
exl.ActiveWorkbook.Sheets(2).Range("B2") = "F"
exl.ActiveWorkbook.Sheets(2).Range("C1") = "Int"
exl.ActiveWorkbook.Sheets(2).Range("C2") = "Ext"

'.nomination des listes de choix
With exl.ActiveWorkbook.Sheets(2)
Range("A1:A2").Select
ActiveWorkbook.Names.Add Name:="ListAge", RefersToR1C1:= _
"=Feuil2!R1C1:R2C1"
Range("B1:B2").Select
ActiveWorkbook.Names.Add Name:="ListSexe", RefersToR1C1:= _
"=Feuil2!R1C2:R2C2"
Range("C1:C2").Select
ActiveWorkbook.Names.Add Name:="ListLieu", RefersToR1C1:= _
"=Feuil2!R1C3:R2C3"
End With

' C'est en mettant un point d'arrêt ici qu ej'ai pu faire les
constatations expliquées au début.

'Mise en place des listes de validation

exl.ActiveWorkbook.Sheets(1).Select

With exl.ActiveWorkbook.Sheets(1).Columns("D:D").Validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop,
Operator:= _
xlBetween, Formula1:="=ListAge"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With

With exl.ActiveWorkbook.Sheets(1).Columns("E:E").Validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop,
Operator:= _
xlBetween, Formula1:="=ListSexe"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With

With exl.ActiveWorkbook.Sheets(1).Columns("F:F").Validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop,
Operator:= _
xlBetween, Formula1:="=ListLieu"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With

exl.ActiveWorkbook.Sheets(1).Range("A2").Select

End Sub
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #26321774
Bonjour,

Pour la création des plages nommées, c'est plus simple de cette manière :

'--------------------------------------------------
'....nomination des listes de choix
With exl.ActiveWorkbook.Sheets(2)
.Range("A1:A2").Name = "ListAge"
.Range("B1:B2").Name = "ListSexe"
.Range("C1:C2").Name = "ListLieu"
End With
'--------------------------------------------------
Publicité
Poster une réponse
Anonyme