![]() |
|
Forum
|
|
|
#1 (permalink) |
|
Guest
Messages: n/a
|
Bonjour le Forum
Je désire établir différentes listes de validation sur la feuil1 et les sources se trouvent sur différentes feuilles (feuil2, feuil3, ...) mais toujours avec les mêmes références aux cellules. Voir ci-dessous: B4 et B5 de la feuil1 = zone de validation B6:B20 de la feuil2(peut changer) B6 et B7 de la feuil1 = zone de validation B6:B20 de la feuil3(peut changer) Même chose pour plusieurs autres cellules de la feuil1 Problème 1: Moa m'a suggéré d'utiliser des feuilles différentes pour mes listes et de nommer ces listes pour les utiliser comme source. C'est très bien et c'est ce que je fais.Je peux, manuellement, nommer ces listes sans problèmes mais comme elles seront variables, je voudrais modifier le code suivant pour rendre variables les cellules de ma liste ActiveWorkbook.Names.Add Name:="Liste1", RefersToR1C1:="=Feuil2!R6C2:R20C2" J'ai de la difficulté avec les ", &, :, =, je ne sais jamais comment les disposés dans ma formule. Je voudrais remplacer R6C2:R20C2 par B6 et Range("B50").End(xlUp).Address Problème 2: J'aimerais savoir comment remplacer ="=Liste1" dans le code ci-dessous par ma string LST pour sélectionner des listes différentes. J'utilise la Function Call pour effectuer les mise à jour. Function Liste(LST as String) With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=Liste1" (C'est ici que j'ai un problème, je veux mettre LST .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With -------------------------------------------------- Sub MAJ_Liste1 (Liste1) Range("B4:B5").select Call Liste End sub -------------------------------------------------- Sub MAJ_Liste2 (Liste2) Range("B6:B7").select Call Liste End sub Je prévois finalement faire un code "VALIDATION" qui appelera tous les Sub MAJ_??? pour mettre à jour toutes mes cellules de la feuil1. Je ne sais pas si c'est assez clair...j'attends vos bonnes suggestions Merci de votre aide Xtian(du Québec) |
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
Guest
Messages: n/a
|
SAlut Xtian,
Si tu utilise des plage nommé comme moa te l'a suggéré, tu modifier la liste en utilisant la fonction insertion ta plage nommé ce modifie en concéquance. J'ai fait une appli avec des listes déroulantes. Chacune de mes listes sont alimenter par des plage différentes voici la méthode que j'emploie : range("A65536").select lstbox1.rowsource=sheets(m_fls_src).range("A1",act ivecell.end(xlup)) mais chaque liste n'est alimenter que par une seul plage. Si elle sont répartie sur plusieurs feuille, j'utiliserai une feuille tampon qui regroupe les donneés de tes plages. A+ Wilfried ;op |
|
|
#3 (permalink) |
|
Guest
Messages: n/a
|
Salut "Xtian (du Québec)"et "Wilfried"
en pièce jointe ce que j'ai cru comprendre on modifie une plage en Feuil2 ou en Feuil3 (range("B6:B"&Derlgn) et celle ci se renomme via "Workbook_SheetChange" et apparrait modifiée en feuil1 celà si j'ai bien compri la question Lol eh oui !!! tiens nous au courant A+++ Jean Marie |
|
|
#4 (permalink) |
|
Guest
Messages: n/a
|
Merci Wilfried et Chti'160 je crois que j'arriverai à résoudre mon problème avec vos informations.
Chti'160, j'ai déjà un code Private Sub Workbook_SheetChange(ByVal Target As Range) dans Feuil1 qui recherche les doublons pour une certaine plage de données (toutes mes listes déroulantes de la feuil1). Étant donné que mes listes (feuil2, feuil3, ...) sont modifiées par macros à partir d'une liste globale qui se trouve en feuil19 (Si on fait un changement dans la liste globale, la feuille correspondante est automatiquement modifiée). Alors, si les changements, par exemple, sont effectués par macros à la liste de la feuil2, est-ce que le code dans ton exemple va s'exécuter quand même ? Serait-il préférable de créer une Private Sub Workbook_SheetChange pour chaque feuille au lieu de le mettre dans ThisWorkbook ? Tu as exactement compris ce que je voulais dans mon message précédent. Je vais m'amuser à appliquer tes conseils en attendant ta réponse. Merci encore et @+++ Xtian (du Québec) |
|
|
#5 (permalink) |
|
Guest
Messages: n/a
|
Salut"Xtian (du Québec)"
bonjour le Québec je ne sais pas si j'ai compri tes questions 1° j'ai via une macro et un bouton ajouté un élément à la liste 1 et celui ci a été inclu dans la plage nommée donc celà répond à la question Alors, si les changements, par exemple, sont effectués par macros à la liste de la feuil2, est-ce que le code dans ton exemple va s'exécuter quand même ? Réponse OUI pour la question j'ai déjà un code Private Sub Workbook_SheetChange(ByVal Target As Range) dans Feuil1 qui recherche les doublons pour une certaine plage de données (toutes mes listes déroulantes de la feuil1). Étant donné que mes listes (feuil2, feuil3, ...) sont modifiées par macros à partir d'une liste globale qui se trouve en feuil19 (Si on fait un changement dans la liste globale, la feuille correspondante est automatiquement modifiée). je pense qu'il n'y a pas de problème mais je ne peux tester je n'ai pas le fichier tu testes et si problème tu joins un fichier de 50k max pour qu'on puisse t'aider tiens nous au courant A+++ Jean Marie |
|
|
#6 (permalink) |
|
Guest
Messages: n/a
|
Merci Merci Merci Jean-Marie
Avec les informations que tu m'as donné, j'ai finalement obtenu ce que je voulais. J'ai un peu modifié tes informations mais le résultat est exactement ce que je voulais. J'utilise le code suivant pour mettre à jour les noms de la liste et supprimer le nom de la drenière liste active: Sub Liste_RM() Sheets("RM").Activate ActiveWorkbook.Names("ListeRM").Delete Call MAJListeEmployés("RM", 8, "H22:I22") ***Note: Je n'ai pas joint cette fonction à ce message car le code est un peu long...) 'Établir la référence de la liste RefL = "=" & ActiveSheet.Name & "!" & Range("B6").Address & ":" & Range("B36").End(xlUp).Address Call RenameList(RefL, "ListeRM") End Sub et pour renommer ma nouvelle liste: Function RenameList(RefL, NomL As String) 'Renommer la liste de validation 'Sélectionner les cellules à nommer Range("B6").Select Range(Selection, Selection.End(xlDown)).Select 'Établir le nom de la liste With Selection ActiveWorkbook.Names.Add Name:=NomL, RefersTo:=RefL End With End Function Comme mes cellules de validation sur ma feuille de saisie font référence à la listeRM, ces cellules sont automatiquement mis à jour avec la nouvelle liste. Ah le Forum, qu'est-ce que je ferrais sans vous !!! Salutation et à la prochaine Xtian (du Québec) @+++ ;-) |
| ANNONCES | |
| Liens sociaux |
| Outils de la discussion | |
|
|