Microsoft 365 Procédure identique sur plusieurs onglets

G@vroche

XLDnaute Nouveau
Bonjour,

J'ai une procédure qui me permet d'afficher une Listbox, puis de remplir la cellule active en fonction du choix de cette Listbox.
Mon fichier comporte de nombreux onglets. J'ai donc cette procédure identique sur chaque onglet.

Pour alléger mon fichier, et pour faciliter les modifications, j'aimerai que cette procédure soit plutôt dans un module, et que chaque onglet y fasse appel.

Seulement quand j'essaie, j'ai une erreur qui me dit : Erreur de compilation / Utilisation incorrect du mot clé me.
Pouvez-vous m'aider?

Ci-joint un fichier d'exemple allégé (ma procédure réelle est en fait beaucoup plus longue)
 

Pièces jointes

  • Listbox 1.xlsm
    39.1 KB · Affichages: 15

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bien sur que j'ai ouvert votre fichier.
Je disais généralement que la syntaxe Me se trouvait dans les userforms.
Désolé, je n'ai pas trouver de solution. Ca coince sur le Me.
Il semblerait que votre ListBox ait eu un problème.
En désespoir de cause, je l'ai supprimé et en ai rajouté une autre rapidement, et ça marche.
Quelque chose m'a échappé.
 

Pièces jointes

  • Listbox 1 (3).xlsm
    35.2 KB · Affichages: 5

G@vroche

XLDnaute Nouveau
Merci pour l’intérêt que tu portes à mon problème.
En effet les "Me." étaient inutiles ici. Ils venaient d'un code que j'ai recopié sur le Forum. Je les ai tous supprimés.

Par contre je crois que tu n'as pas bien compris mon problème.
Je voudrais mettre ce code dans un module pour qu'il fonctionne également sur d'autres feuilles.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Avez-vous ouvert mon fichier?
Si, si je l'ai bien ouvert.
je crois que tu n'as pas bien compris mon problème.
Si, si, je l'ai bien compris

Mais avant de résoudre un problème, il faut au moins partir d'un truc qui marche.
Le problème c'est que ListBox1 est un objet et que cet objet est dans feuille 1. Vous ne pourrez pas avoir le même objet partout. Donc ça va être difficile de faire une macro générique avec cette structure.
Une solution serait peut être de faire un Userform qui lui pourrait être appelé par chaque page avec un Userform.show puisqu'il serait unique.
Et ce Userform pourrait beaucoup ressembler à cette ListBox.
 

Nairolf

XLDnaute Accro
Salut G@vroche et sylvanu,

Voici un début de piste (il y a encore des éléments qui ne conviennent pas et des compléments à faire).
Pour le moment, le code crée automatiquement une listbox lors de la sélection d'une cellule dans une nouvelle page, mais elle n'est accessible qu'à la 2ème sélection dans la même feuille.
Il semble qu'on soit aussi obligé de changer de feuille pour ensuite cocher les cases.

A mettre dans le code de ThisWorkbook :
VB:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Call codechange
End Sub

A mettre dans un module :
VB:
Sub codechange()

Dim Obj As OLEObject
Dim itempresent As Boolean
Dim Obj2 As OLEObject

itempresent = False

For Each Obj2 In ActiveSheet.OLEObjects
    If Obj2.Name = "LB" Then
        itempresent = True
        GoTo line1
    End If
Next

line1:

If itempresent = False Then
    Set Obj = ActiveSheet.OLEObjects.Add("Forms.ListBox.1")
    With Obj
        .Name = "LB"
        .Visible = False
    End With
Else
    With ActiveSheet.LB
        .Top = ActiveCell.Offset(1, 0).Top
        .Left = ActiveCell.Offset(0, 1).Left
        .List = Worksheets("Feuil2").Range("A1:A5").Value
        .ListStyle = 1
        .MultiSelect = 1
    End With
End If

End Sub
 

GALOUGALOU

XLDnaute Accro
bonjour g@vroche bonjour le forum
je me suis laissé inspiré par votre problématique, je vous propose une solution simple qui n'a rien a voir avec votre conception et les solutions proposées.
(s'il faut je suis à coté de la plaque, je vous laisse juge)
la solution que je vous propose fonctionne sur un nombre infini d'onglet avec un userform et une combobox.
dans la feuille active, la valeur sélectionnée de la combobox est transférée dans la cellule active.
quelle que soit la feuille, l'userform est appelé sur "sélection cellule"
(il vaudrait peut-être mieux que ce soit sur double click)
je vous laisse découvrir
cordialement
galougalou
 

Pièces jointes

  • Copie de Listbox v1.xlsm
    37.9 KB · Affichages: 5

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 869
dernier inscrit
radyreth