Masquer une feuille mais garder la cellule active
Bonjour à tous et merci à qui pourra m'aider.
Dans un UserForm, afin de pouvoir sélectionner une plage de cellule pour une ListBox je me réfère à une feuille appelée "mes listes" dans laquelle se trouvent toutes les listes utiles pour remplir la feuille "préparation". Seulement voila, lorsque je lance mon UserForm pour le tester, d'office il m'active la feuille "mes listes" en fond de Userform (donc dans excel même, les feuilles changent automatiquement lorsque j'arrive à l'affichage de la ListBox) ce qui ne me va pas. J'aimerais que, malgré que je sélectionne la feuille "mes listes", excel reste sur la feuille "préparation" en fond et ce afin que ce soit plus visible pour l'utilisateur (pas de saut d'une feuille à l'autre pendant le remplissage ds données UF). J'ai bien essayé en incorporant une ligne "Worksheets("mes listes").Visible = False" mais alors ma ListBox renvoie les cellules de la feuille "préparation" au lieu de celle "mes listes" et évidement ça ne va pas !
Bon c'est pas très clair mais je vous mes mon fichier afin que vous puissiez y jeter un coup d'oeil. Il y a certainement moyen de pondre un truc bien plus simple que celui que j'ai fait mais comme je suis débutant en la matière, je fais comme je peux soyez indulgents
Dedans vous verrez que dans "UF_Activité1", au niveau "Private Sub CboInteg_Change()", ce sont dans les dernières lignes avant le "End sub" que se pose mon problème, soit:
Worksheets("mes listes").Select
Worksheets("mes listes").Cells.Find(CboInteg.Value, , xlValues, xlWhole).Select
'C'est ici que j'ai mit l'instruction "Worksheets("mes listes").Visible = False" mais ça ne fonctionne pas
k = 2
Do While ActiveCell.Offset(k, 0) <> ""
Me.ListBox_Spec.AddItem ActiveCell.Offset(k, 0).Value
k = k + 1
Loop
Merci déjà à vous.
Cordialement,
Rékiss
bonjour,
Dans VBA on n'active pas, on ne Select pas, on n'a pas besoin qu'une feuille soit visible pour travailler dessus.
Je manque de visibilité dans la jungle de tes neurones pour tester le usf, mais je pense que la modif ci-jointe devrait fonctionner :
Essaie de masquer la feuille "mes listes" et de lancer le truc avec la macro modifiée comme suit :
Private Sub CboInteg_Change()
Dim rng As Range, iR&, iC& '*************** ligne à ajouter
Me.ListBox_Spec.Clear
With Worksheets("mes listes")
If CboDomaine = .Cells(39, 5).Value Then
ListBox_Spec = ""
ElseIf CboDomaine = .Cells(39, 6).Value Then
ListBox_Spec = ""
ElseIf CboInteg = .Cells(41, 7).Value Then
For Int9 = 48 To 51
Me.ListBox_Spec.AddItem .Cells(Int9, 7).Value
Next
ElseIf CboInteg = .Cells(42, 7).Value Then
For Int10 = 48 To 52
Me.ListBox_Spec.AddItem .Cells(Int10, 8).Value
Next
ElseIf CboInteg = .Cells(43, 7).Value Then
For Int11 = 48 To 49
Me.ListBox_Spec.AddItem .Cells(Int11, 9).Value
Next
ElseIf CboInteg = .Cells(44, 7).Value Then
For Int12 = 48 To 49
Me.ListBox_Spec.AddItem .Cells(Int12, 10).Value
Next
ElseIf CboInteg = .Cells(45, 7).Value Then
For Int13 = 48 To 50
Me.ListBox_Spec.AddItem .Cells(Int13, 11).Value
Next
ElseIf CboInteg = .Cells(46, 7).Value Then
ListBox_Spec = ""
Else
'************* Zone modifiée
Set rng = .Cells.Find(CboInteg.Value, , xlValues, xlWhole)
If Not rng Is Nothing Then
iR = rng.Row + 2
iC = rng.Column
Do While .Cells(iR, iC) <> ""
Me.ListBox_Spec.AddItem .Cells(iR, iC).Value
iR = iR + 1
Loop
End If
End If
End With
End Sub
Et... croise les doigts !
A+
Salut galopin et merci
Je manque de visibilité dans la jungle de tes neurones pour tester le usf
Et encore t'as rien vu
Mais c'est vrai que je n'ai pas commenté mon UF donc c'est pas simple et, comme dit dans mon message précédent, il y a certainement moyen de faire plus simple mais comme je ne connais pas grand chose, je fais avec ce que j'ai
j'ai testé ta petite modif et ça fonctionne parfaitement !
merci beaucoup.
Bonne journée,
Rékiss