Microsoft 365 Procédure identique sur plusieurs onglets

  • Initiateur de la discussion Initiateur de la discussion G@vroche
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

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.
 
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.
 
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
 
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
787
Retour