Depuis que j'ai partagé mon classeur, ma macro s'arrête en affichant ce message.
NB: Elle fonctionnait parfaitement avant le partage.
Voici le code que j'obtiens en mode enregistrement. J'ai bien conscience qu'il ne doit pas être optimisé mais ne suis pas un pro du VBA.
Sub adet9Debut()
'
' adet9Debut Macro
'
Sheets("Données").Select
' Création de la liste déroulante
Range("A3").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=Paramètres!$N$1:$N$2"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
'
End Sub
Ce qui m'interpelle, c'est le fait que le script fonctionne quand le classeur n'est pas partagé !
Sauriez-vous comment faire pour qu'il fonctionne en l'étant ? Je tourne un peu en rond....
Un grand merci d'avance.
Bonjour
sur quelle ligne ça plante (la quelle est en jaune)
il n'y a pas de devin dans le forum
un fichier exemple réduit à l'essentiel peut être nous serait utile pour faire nos tests
Et comme tu n'as que 2 lignes dans ta liste je pencherais pour une liste ou tu n'as que 2 items dedans donc une liste type "Oui/Non" et je la remplacerais par :
VB:
Sub adet9Debut()
Sheets("Données").Range("A3").Select
With Selection.Validation ' Création de la liste déroulante
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="Oui,Non"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
En clair j’écris en dur les 2 noms qui sont dans la liste déroulante et je ne suis plus embeté.....
*Ton pb vient surement du fait que en réseau il ne sait pas dans quel classeur aller ici:
bonjour @Phil69970
la LV est mis en place par une sub
je suppute donc que les valeurs dans N1:N2 sont susceptibles de changer
sinon a quoi cela servirait de le faire en VBA
Et comme tu n'as que 2 lignes dans ta liste je pencherais pour une liste ou tu n'as que 2 items dedans donc une liste type "Oui/Non" et je la remplacerais par :
VB:
Sub adet9Debut()
Sheets("Données").Range("A3").Select
With Selection.Validation ' Création de la liste déroulante
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="Oui,Non"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
En clair j’écris en dur les 2 noms qui sont dans la liste déroulante et je ne suis plus embeté.....
*Ton pb vient surement du fait que en réseau il ne sait pas dans quel classeur aller ici:
bonjour @Phil69970
la LV est mis en place par une sub
je suppute donc que les valeurs dans N1:N2 sont susceptibles de changer
sinon a quoi cela servirait de le faire en VBA
Effectivement, les valeurs présentes dans cette plage sont susceptibles d'être modifiées par la suite.
Ceci étant, si je trouvais une solution pour que ça fonctionne sans, je serais déjà content.
re
j'ai une intuition mais je sais pas si ...mais je tente quand meme
VB:
Sub adet9Debut()
Dim X
Sheets("Données").Range("A3").Select
with sheets("paramètres":x=.[N1] et "," & .[N2]:end with
With Selection.Validation ' Création de la liste déroulante
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=x
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
Peut être avec une référence plus explicite au classeur
VB:
Sub adet9Debut()
ThisWorkbook.Sheets("Données").Range("A3").Select
With Selection.Validation ' Création de la liste déroulante
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="Oui,Non"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
re
j'ai une intuition mais je sais pas si ...mais je tente quand meme
VB:
Sub adet9Debut()
Dim X
Sheets("Données").Range("A3").Select
with sheets("paramètres":x=.[N1] et "," & .[N2]:end with
With Selection.Validation ' Création de la liste déroulante
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=x
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
Je pense qu'il y a une erreur dans la ligne
with sheets("Paramètres":x=.[N1] et "," & .[N2]:end with
Ne manquerait-il pas une parenthèse quelque part ?