Erreur de la méthode select de la classe range

adebrux

XLDnaute Occasionnel
Bonjour le forum, comment ca va -t-y bien aujourd'hui ? B)

Je tiens d'abord à remercier encore une fois hervé pour son aide hier soir.

et puis, une nouvelle question, youpi !!!

Voilà, maintenant que mes plages de données sont OK, je cherche à pouvoir les sélectionner dans une liste de validation.
j'ai donc insérer le code suivant :
Code:
Private Sub Combo2_Change()
    'MAJ du combo n°3 avec un flag de niveau 2 (ca c pr que ca marche..)
    MAJCombo Combo3, 2, Combo2.Text
    ' Cration des liste de validation
    Sheets('Feuil2').Cells(17, 2).Value = ''
    Sheets('Feuil2').Cells(17, 2).Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:='=machine'
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ''
        .ErrorTitle = ''
        .InputMessage = ''
        .ErrorMessage = ''
        .ShowInput = True
        .ShowError = True
    End With
    ' recherche des valeurs associées
    Sheets('feuil2').Cells(17, 3).Select
    Selection.FormulaR1C1 = '=INDEX(prix,MATCH(R[0]C[-1],machine,0))'
End Sub

Et ca marche nickel. Il faut dire que mes données et mes listes de validations sont dans la même feuilles.

Maintenant, je veux mes listes de validations dans une autre feuille. Je change donc mes Sheets('feuill2').cells(17,2) par sheets('Feuil1').cells(4,2) dans ma procédure.
Et là, c'est le drame, après la sélection dans mon combo2 de l'USF, j'obtien l'erreur suivant:
Erreur d'exécution 1004
La methode select de la classe range a echoué
Je vois pas trop ce que ca veut dire, ni même pourquoi ca ne marche pas.

Je joint le fichier pour que vous puissiez voir de vous même.

En plus, un coup sur 2 ca fait une erreur à un autre endroit...

D'avance merci de votre aide.

Arnaud [file name=Essaibis_20051103123614.zip size=23153]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Essaibis_20051103123614.zip[/file]
 

Pièces jointes

  • Essaibis_20051103123614.zip
    22.6 KB · Affichages: 20

Hervé

XLDnaute Barbatruc
Bonjour adebrux

ton souci vient du fait que tes noms sont créer avec la feuille active et non la feuille 2.

Fichier modifier en pièce jointe.

salut
[file name=essaibis_20051103133055.zip size=23958]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/essaibis_20051103133055.zip[/file]
 

Pièces jointes

  • essaibis_20051103133055.zip
    23.4 KB · Affichages: 20

soft

XLDnaute Occasionnel
Bonjour adebrux, le forum,

Ton message d'erreur vient que tu veux selectionner une cellule qui n'est pas dans la feuille active.

C'est dans la procédure

Private Sub Combo2_Change()

où il faut rajouter
Sheets('Feuil1').Select
avant
Sheets('Feuil1').Cells(4, 2).Select

mais il y a un autre problème avec la liste de validation qui NE PEUT PAS se trouver dans une autre feuille !
 

soft

XLDnaute Occasionnel
Resalut,

Pourquoi Pascal, c'est une connerie selon toi ?

En l'état de mes connaissances, Excel n'accepte pas la référence d'une autre feuille dans une cellule avec validation.

Autant par VBA
Code:
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:='=machine'

..que par le menu Données/validation (liste)

Mais je serais heureux d'apprendre que je me trompe.

Bonne soirée.
 

adebrux

XLDnaute Occasionnel
Salut Soft,

Ben écoute, il semblerai que ca marche qd même, CF fichier joint !

Merci encore et bon vent
[file name=Essaibis_20051103190722.zip size=24137]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Essaibis_20051103190722.zip[/file]
 

Pièces jointes

  • Essaibis_20051103190722.zip
    23.6 KB · Affichages: 22

soft

XLDnaute Occasionnel
J'ai Excel 2002 et ton fichier provoque une Erreur 1004 et si j'essaye manuellement par les menus j'ai aussi un message qui m'annonce fièrement :


'Vous ne devez pas faire référence à d'autres feuilles ou classeurs pour les critères Validation des données.'

Problème de version sans doute ...
 

Hervé

XLDnaute Barbatruc
bonsoir tout le monde :)

Soft, on peut faire référence à une plage d'une autre feuille pour créer une plage de validation, si et seulement si cette plage est nommé.

Que ce soit par vba ou par l'interface utilisateur classique.

J'ai aussi excel2002, et ne rencontre aucun souci avec le fichier d'arnaud.

Ce type de code fonctionne très bien chez moi :

Sheets('feuil2').Range('a1:a5').Name = 'toto'
With Sheets('feuil1').Range('b2').Validation
    .Delete
    .Add Type:=xlValidateList, Formula1:='=toto'
End With


en espérant t'avoir aidé.

salut
 

soft

XLDnaute Occasionnel
Re-bonjour le fil,

Hervé, effectivement ton code fonctionne chez moi, par contre pas celui du fichier d'Arnaud.

si je simplifie :

Code:
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:='=machine'
par

Code:
.Add Type:=xlValidateList, Formula1:='=machine'
par contre ça fonctionne.

Un des arguments AlertStyle ou Operator pose donc problème chez moi. Je fais creuser.

Merci beaucoup pour l'info.
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

Excusez-moi je n'ai pas pu me connecter hier soir

Alors Soft pour répondre à ta question

Pourquoi Pascal, c'est une connerie selon toi ?

Je n'irais pas jusque là mais comme les copains (dont le vrai Hervé cela n'a pas l'air d'être son clone sur ce coup-là ;) ) l'ont dit juste avant on peut faire une liste de validation sur une autre feuille en nommant les cellules

Bonne journée
 

Discussions similaires

Statistiques des forums

Discussions
312 391
Messages
2 087 983
Membres
103 690
dernier inscrit
LeDuc