validation des données, erreur d'execution...

  • Initiateur de la discussion Initiateur de la discussion stormseye
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

stormseye

Guest
Bonjour,

Après une après midi de recherche, j'abandonne ! La ligne surlignée contient une érreur. En effet, la validation des donnée fonctionne parfaitement si je la tape à la main, mais bloque par macro. Quelqu'un peut il m'épargner le suicide ???


Sub nommerchan()

Call Listecateg

Dim categ As String
Dim param As String
Dim listcateg As String
Dim feuil as string
Dim f1 as Sheet
Dim f2 as Sheet

feuil = ActiveSheet.Range("Q2").Value
Set f1 = Sheets(feuil)
Set f2 = ActiveSheet

'définition noms plages
categ = "categorie_" & f2.Range("Q2").Value
param = "parametre_" & f2.Range("Q2").Value
listcateg = "liste_categorie_" & f2.Range("Q2").Value

'RAZ plages précédentes
ActiveWorkbook.Names(listcateg).Delete
ActiveWorkbook.Names(categ).Delete
ActiveWorkbook.Names(param).Delete

'définie plage listecatégorie
ActiveWorkbook.Names.Add name:=listcateg, RefersTo:=Range("BN7", Range("BN7").End(xlDown))

'définie plage catégorie
f1.Activate
ActiveWorkbook.Names.Add name:=categ, RefersTo:=Range("A7", Range("A300").End(xlUp))

'définie plage parametre
ActiveWorkbook.Names.Add name:=param, RefersTo:=Range("B7", Range("B300").End(xlUp))


'redéfini menu déroulant données graphiques

f2.Activate
For Each cel In ActiveSheet.UsedRange

temp = 0

If cel.Interior.ColorIndex = 34 Then

With cel.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=" & listcateg
End With
End If

If cel.Interior.ColorIndex = 35 Then

If cel.Offset(0, -4).Value = "" Then
cel.Offset(0, -4).Value = Range("BN9").Value
temp = 1
End If

With cel.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=Application.Offset(param, Application.Match(cel.Offset(0, -4).Value, categ, 0) - 1, 0, Application.CountIf(categ, cel.Offset(0, -4).Value))

'OU '"=DECALER(" & param & ";EQUIV(" & cel.Offset(0, -4).Address & ";" & categ & ";0)-1;0;NB.SI(" & categ & ";" & cel.Offset(0, -4).Address & "))"


If temp = 1 Then
cel.Offset(0, -4).Value = ""
End If

End If

Next

End Sub
 
Dernière modification par un modérateur:
Re : validation des données, erreur d'execution...

Jam,

J'ai essayé de suivre tes conseils en utilisant la fonction DECALER (qui est très pratique en effet).

j'ai écrit ca :

'copie les critères dans la feuille ref

Sheets("inventaire-devis").Select
'mise à jour des champs de choix déroulant
For i = 1 To fin
For j = 1 To nc
c = "=DECALER(refA1;0;" & CStr(j - 1) & ";" & CStr(Sheets("ref").Cells(65536, j).End(xlUp).Row) & ";1)"
With Cells(4 + i, j).validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=c
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
Next j
Next i
End Sub


Mais ca ne marche pas non plus : 'erreur d’exécution 1004'...
 
Re : validation des données, erreur d'execution...

Re,

Pour moi je pensais mettre ça directement dans les noms dans le classeur sans passer par du code. Car une fois défini, il n'y a plus besoin de revenir dessus comme tu as pu le voir dans le lien que je t'avais mis.

Bon courage,
 
Re : validation des données, erreur d'execution...

OK, je vois.
Merci de ton aide.

En tout cas le programme fonctionne parfaitement grâce au conseil de Tirou (".Value").

Merci à tous de votre aide !
Grace à vous mes cheveux vont pouvoir recommencer à repousser xD
 
Re : validation des données, erreur d'execution...

Dans les autres cas de ton code, tu renvoies directement un objet cellule.

Si je ne me trompe pas, excel doit mettre un lien et ça te donne une validation dynamique (si la valeur de la cellule de référence change, cela doit normalement impacter ta validation de donnée). Je me trompe peut-être du fait que tu fais les choses biens (contrairement à moi) et que tu déclares dim c as string.

Dans ce cas précis, tu demandais l'association d'un objet, avec une string et un integer ... excel a beau être bien fait, je lui accorde de planter dans ce genre de cas 😉
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
905
Réponses
4
Affichages
728
Réponses
2
Affichages
768
Retour