Run-time error 1004, Liste en cascades

Hellowa

XLDnaute Junior
Bonjour a toutes et à tous,
Pour fêter mes 20 ans, Excel a décidé d'enchainer les runtime error. Et il a gagné, je n'arrive pas a désactiver la derniere.
Quelqu'un voit-il l'erreur sur mon code?
Code:
'Run-time errore 1004'
Merci d'avance, a bientot!
Eloi.

Petite explication sur mon code: Il sert à créer un menu déroulant de liste.
J'expérimente une façon de faire des liste en cascade un peu périlleuse, mais ça avance!!
(Ou pas :D)

Code:
Sub Validation_menu2(lig As Double)
'
'Macro pour configurer la validation de cellules


'
Dim nom_Class As String
Dim liste2 As String

nom_Class = Sheets(1).Cells(lig, 2).Value

i = 0
j =1
k = 0


    While i < 1 Or j < 2000[COLOR="Red"]
        If Sheets("Bibliotheque").Cells(j, 1).Value = nom_Class Then[/COLOR]
            liste2 = Sheets("Bibliotheque").Cells(j, 2).Value
            i = 1
        End If
    k = j
'Je sauvegarde la valeur de j pour reprendre la recherche a partir d'ici
'J'étais obligé de faire la recherche de valeurs en 2 fois, pour uine question de mise en forme de la liste : liste= valeurA,valeurB,valeurC etc..
    Wend
i = 0
j = 0

    For j = k To Sheets("Bibliotheque").[A65536].End(xlUp).Row
        If Sheets("Bibliotheque").Cells(j, 1).Value = nom_Class Then
            liste2 = Sheets("Bibliotheque").Cells(j, 2).Value
        End If
    Next j
Cette partie est la fin du code, elle permet de rajouter le menu déroulant.
Code:
   Sheets(1).Cells(lig, 3).Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, Operator:= _
        xlBetween, Formula1:=liste
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = False
        .ShowError = False
    End With
End Sub
 

Hellowa

XLDnaute Junior
Re : Run-time error 1004, Liste en cascades

Ha mince... Ca me lance dans une boucle infinie. Voici le code qui appelle la macro du post précédent:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'On fait la colonne "type"
If Not Intersect(Target, Range("C14:C65200")) Is Nothing Then
If Sheets(1).[B65536].End(xlUp).Row > 14 Then
'On cherche la derniere ligne
'On regarde
        Range("C" & Sheets(1).[B65536].End(xlUp).Row).Select
        Call Validation_menu2(Sheets(1).[B65536].End(xlUp).Row)
    Else

End If
End If
End Sub
:(
 

Hellowa

XLDnaute Junior
Re : Run-time error 1004, Liste en cascades

Ca avance, j'ai résolu mon problème.
Je met ici mon fichier, ça peut toujours servir à quelqu'un.
Pour info, il permet (pas encore) de faire des listes en cascade à 3 niveaux pour remplis des bons de commande!
(N'hésitez pas a donner votre avis, ça ne peut être que plus constructif pour moi!)
Merci, a bientot,
Eloi, qui entre aujourd'hui dans sa 3ème décade!
 

Pièces jointes

  • Hellowa_ListeCascades.zip
    24.8 KB · Affichages: 46

Hellowa

XLDnaute Junior
Re : Run-time error 1004, Liste en cascades

Bonjour à tous, le forum,
J'ai 2 soucis mineurs sur ma macro...
Les menu déroulants en cascade fonctionnent dans l'ensemble plutôt bien, d'ailleurs j'ai expérimenté une technique légerement différente de [HTML=http://boisgontierjacques.free.fr/pages_site/listes_cascade.htm]Jacques Boisgontier[/HTML].

Toutes les solutions fonctionnent SAUF lorsque je souhaite utiliser les menus: Atelier->Outils.

J'ai aussi un autre souci, lorsque je veux "Créer un Fax", la mise en page ne se fait pas correctement...

Merci d'avance à ceux qui jetterons un oeil à mon projet,
Au plaisir de vous lire,
Eloi.
 

Pièces jointes

  • Menu_Cascade_XLD_Hellowa.zip
    46 KB · Affichages: 31

maninweb

XLDnaute Nouveau
Re : Run-time error 1004, Liste en cascades

Bonjour Hellowa...

tout d'abord joyeux anniversaire :)

J'ai regarde sur ton code et je voudrais proposer quelques remarques
générales, qui ont cependant moins avoir avec ta dernière question.

L'utilisation de Sub auto_open() est moins recommandée, à partir de la
version 2000 de Excel, il est préférable d'utliser l'èvenement...
Code:
Private Sub Workbook_Open()

  MsgBox "Bonjour"
  
End Sub

Afin d'éviter des erreurs ou bien plutôt minimiser les possibilités d'erreurs,
il est préférable d'adresser les object complètement, example, au lieu de...
Code:
liste = Sheets(2).Cells(11, 1).Value
plutôt ceci...
Code:
liste = ThisWorkbook.Worksheets(2).Cells(11, 1).Value
ou bien cette forme...
Code:
With ThisWorkbook.Worksheets(2)

  liste = .Cells(11, 1).Value
  
End With
ThisWorkbook peut être utilisé quand le code est exécuté dans le même
classeur, au cas ou tu voudras adresser un autre classeur, tu peux utiliser...
Code:
With Application.Workbooks("NomDuClasseur").Worksheets(2)

  liste = .Cells(11, 1).Value
  
End With
Dans ton code, tu utilise de temps en temps les notations suivantes...
Code:
Sheets(2).[A65536].End(xlUp).Row
Selon mon avis personel, il est préférable d'utiliser...
Code:
ThisWorkbook.Sheets(2).Cells(65536,1).End(xlUp).Row
Dernière remarque, il est préférable d'utiliser
Code:
Option Explicit
au début de chaque module. Ainsi Excel vérifie avant exécution du code,
si toutes les variables ont bien été déclarées. Par exemple, il manque
la déclaration de i dans Sub Validation_menu1(). Au cas où des variables
ne sont pas déclarées Excel essaye de trouver le type automatiquement,
(Variant en général) cependant ceci ne marche pas dans tous les cas.

Salut
 

Discussions similaires

Réponses
0
Affichages
176

Membres actuellement en ligne

Statistiques des forums

Discussions
312 489
Messages
2 088 854
Membres
103 975
dernier inscrit
denry