Bonjour
j'ai une macro plutot simple, généré en partie via l'enregistreur de macro et très légèrement modifié à dessin, qui me fait une magnifique erreur 1024 sans autre explication.
a noter que "on error resume next" ne fait pas apparaitre d'erreur, mais la fonction ne fait alors rien du tout.
voici la fonction :
elle permet d'ajouter une liste de choix prédéfini (formula) dans une cellule (target). et d'autoriser ou non les valeurs autre que celles contenue dans la formule (ErrorShow)
je l'apelle ainsi :
ces deux codes sont des fonctions publique dans des modules séparés.
le "décaler" (DECALER(Liste_Ini!$G$1;;;Liste_Ini!$F$2)) génère un "range" valide de 6 valeurs, tout est conforme de ce coté, la formule marche.
le "temp" permet de s'assurer que les valeurs ne partent pas dans les opérations d'ajout / suppression de liste de choix. je ne savais pas trop si la fonction supprimerais la valeur ou non, j'ai donc pour le moment pris un peu de précaution.
c'est l'instruction :
".Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=" & Formula"
qui envois une erreure 1024
à noter deux choses curieuse :
1) une autre fonction est disponible pour supprimer les listes devenues non necessaire. elle est bati sur le meme principe, toujours en "enregistrement de macro" de base, tout juste remanié.
sauf que elle .... fonctionne au poil !
autre curiosité :
pour tester au tout début que l'effet etait celui escompté (et que ma formule etait bonne) j'ai lancé cette fonction en tant que formule, directement dans mon tableur.
elle a parfaitement fonctionné.
exception faite que la "liste" ne se mettait pas sur la cellule désigné en "target", mais sur la cellule ou la formule se trouvait. curiosité ... mais comme je ne comptais pas vraiment utiliser cette fonction en tant que formule, je ne suis pas allé chercher plus loin
reste que cela marchait.
je n'ai rien modifié dans la fonction
et depuis que j'ai seulement ajouté les instructions appelant cette fonction dans mon autre fonction, meme en mode formule, cela ne marche plus !
voila, je ne sais pas trop quoi en penser, comment regler le probleme, ou pourquoi a un moment ca a visiblement très bien marché, puis tout a coup, ca ne marche pas.
que mon "cells(i,2)" ne suffise pas a pointer un target convenable, c'est surprenant, mais passe encore. mais quand je le désigne par formule, il n'y a aucune raison pour que ce qui marchait avant décide de jeter l'éponge.
des idées ?
merci d'avance pour toute aide apportée
cordialement.
j'ai une macro plutot simple, généré en partie via l'enregistreur de macro et très légèrement modifié à dessin, qui me fait une magnifique erreur 1024 sans autre explication.
a noter que "on error resume next" ne fait pas apparaitre d'erreur, mais la fonction ne fait alors rien du tout.
voici la fonction :
Code:
Public Function AddListToCell(target As Range, Formula As String, Optional ErrorShow As Boolean = False)
'ajouter liste de choix a une cellule :
'On Error Resume Next
target.Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=" & Formula
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = ErrorShow
End With
End Function
elle permet d'ajouter une liste de choix prédéfini (formula) dans une cellule (target). et d'autoriser ou non les valeurs autre que celles contenue dans la formule (ErrorShow)
je l'apelle ainsi :
Code:
temp = Cells(i, 2).Value
AddListToCell Cells(i, 2), "DECALER(Liste_Ini!$G$1;;;Liste_Ini!$F$2)"
Cells(i, 2).Value = temp
ces deux codes sont des fonctions publique dans des modules séparés.
le "décaler" (DECALER(Liste_Ini!$G$1;;;Liste_Ini!$F$2)) génère un "range" valide de 6 valeurs, tout est conforme de ce coté, la formule marche.
le "temp" permet de s'assurer que les valeurs ne partent pas dans les opérations d'ajout / suppression de liste de choix. je ne savais pas trop si la fonction supprimerais la valeur ou non, j'ai donc pour le moment pris un peu de précaution.
c'est l'instruction :
".Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=" & Formula"
qui envois une erreure 1024
à noter deux choses curieuse :
1) une autre fonction est disponible pour supprimer les listes devenues non necessaire. elle est bati sur le meme principe, toujours en "enregistrement de macro" de base, tout juste remanié.
Code:
Public Function DeleteListe(target As Range)
target.Select
With Selection.Validation
.Delete
.Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _
:=xlBetween
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Function
sauf que elle .... fonctionne au poil !
autre curiosité :
pour tester au tout début que l'effet etait celui escompté (et que ma formule etait bonne) j'ai lancé cette fonction en tant que formule, directement dans mon tableur.
elle a parfaitement fonctionné.
exception faite que la "liste" ne se mettait pas sur la cellule désigné en "target", mais sur la cellule ou la formule se trouvait. curiosité ... mais comme je ne comptais pas vraiment utiliser cette fonction en tant que formule, je ne suis pas allé chercher plus loin
reste que cela marchait.
je n'ai rien modifié dans la fonction
et depuis que j'ai seulement ajouté les instructions appelant cette fonction dans mon autre fonction, meme en mode formule, cela ne marche plus !
voila, je ne sais pas trop quoi en penser, comment regler le probleme, ou pourquoi a un moment ca a visiblement très bien marché, puis tout a coup, ca ne marche pas.
que mon "cells(i,2)" ne suffise pas a pointer un target convenable, c'est surprenant, mais passe encore. mais quand je le désigne par formule, il n'y a aucune raison pour que ce qui marchait avant décide de jeter l'éponge.
des idées ?
merci d'avance pour toute aide apportée
cordialement.