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

stormseye

XLDnaute Nouveau
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 édition:

M.Pomdapli

XLDnaute Nouveau
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'...
 

Jam

XLDnaute Accro
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,
 

M.Pomdapli

XLDnaute Nouveau
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
 

Tirou

XLDnaute Occasionnel
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 ;)
 

Discussions similaires

Réponses
2
Affichages
152

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 172
dernier inscrit
Aurelyan