XL 2016 Selection des onglets via combobox sans les afficher

realiste75

XLDnaute Nouveau
Bonjour à tous
voila j'ai un problème au niveau de liste deroulante de selection des onglets dans mon USF qui me permet d'alimenter des tableaux placés dans 5 onglets (bases de données ).
En faite je souhaiterais que lorsque je sélectionne via cette liste un onglet celui ci ne s'affiche pas et reste sur la page d'accueil mais cet onglet doit rester active car je dois travailler dessus.

Jai essayé plusieurs soluce du forum mais je n'y arrive pas.


Merci a vous
 

Rouge

XLDnaute Impliqué
Bonjour,

Pour travailler sur une feuille, nul besoin de la rendre active, on peut agir à partir de n'importe quelle autre feuille ou formulaire.

Exemple pour écrire dans la feuille 2 cellule A1:
Sheets("Feuil2").range("A1").value="XX"

Cdlt
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à @realiste75 :), @Rouge ;),

Une solution classique : Utiliser With ..... End With

VB:
if MonComboBox.listindex >-1 then
    With sheets(MonCombobox.list(MonComboBox.listindex))
       ' Je fais ici ce que je dois faire sur la feuille sélectionnée du combobox en précédent
       ' d'un point les éléments relatifs à la feuille sélectionnée du combobox. Le point
       ' désigne l'élément du dernier With précédent l'instruction "pointée".
       ' Exemple:

      .Range("A1").Value="XX"
      .Columns("c:c").font.bold=true
    End With
end if

Ainsi, on ne quitte pas la feuille active (ici votre feuille "Accueil") quand on agit sur la feuille sélectionnée dans MonComboBox
 
Dernière édition:

realiste75

XLDnaute Nouveau
Bonjour a tous merci pour vos reponses.
Voila le code utilisé.

Dim ER As Worksheet

ONGLET.Clear
For Each ER In ThisWorkbook.Worksheets
If ER.Name <> "vierge" Then
ONGLET.AddItem ER.Name
End If
Next ER

Private Sub ONGLET_Change()
If ONGLET.ListIndex > -1 Then

ThisWorkbook.Worksheets(ONGLET.List(1.ListIndex)).Visible = True
1ThisWorkbook.Worksheets(ONGLET.List(ONGLET.ListIndex)).Activate
Unload Me
UserForm1.Show

End If
End Sub

comment adapteriez vous votre solution a ce code?

en vous remerciant par avance
 

realiste75

XLDnaute Nouveau
voila la partie qui me pose souci
quand j'enleve la partie " Worksheets (ONGLET.Value).activate" la saisi dans mon formulaire se fait sur la feuille acceuil au lieu de se faire sur la feuille selectionné via la combo..

Private Sub ONGLET_Change()

If ONGLET.ListIndex = -1 Then Exit Sub
Worksheets (ONGLET.Value).activate

la question est comment remplacé ce " Worksheets (ONGLET.Value).activate" et pouvoir remplir mes onglets sans les afficher?
 

realiste75

XLDnaute Nouveau
Justement je n'arrive pas a appliquer cela " With/End With."

pouvez vous me donnez un exemple clair merci au vu de mon code
Private Sub UserForm_Initialize() combo faire liste deroulante
Dim ER As Worksheet

ONGLET.Clear
For Each ER In ThisWorkbook.Worksheets
If ER.Name <> "TDM" And ER.Name <> "RECHERCHE ESM" Then
ONGLET.AddItem ER.Name

End If
Next ER
End Sub

Private Sub ONGLET_CHANGE()

Worksheets(ONGLET.Value).Activate
end sub

mes onglets: acceuil , 15000, 26000, 27300
 

realiste75

XLDnaute Nouveau
Désolé de vous importuner :eek: mais je n'arrive pas voila ce que j'ai mis suite a vos solutions. j'ai surement du loupé des choses suite a mes lacunes en VBA.

Private Sub ONGLET_Change()

If ONGLET.ListIndex > -1 Then Exit Sub
With Sheets(ONGLET.List(ONGLET.ListIndex))

DL = Cells(Application.Rows.Count, "A").End(xlUp).Row + 1 'première ligne vide de la colonne A (colonne à adapter)

.Cells(DL, "A").Value = TextBox8.Value
.Cells(DL, "B").Value = TextBox1.Value
.Cells(DL, "C").Value = TextBox2.Value
.Cells(DL, "E").Value = TextBox4.Value
.Cells(DL, "F").Value = TextBox5.Value
.Cells(DL, "G").Value = TextBox6.Value
.Cells(DL, "H").Value = TextBox7.Value

End With
end sub



Toujours pareil lorsque j'appuis sur ajouter pour saisir mon tableau la feuille acceuil recoit les infos et non la feuille selectionné via combo

je seche completement .....
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 902
Membres
101 834
dernier inscrit
Jeremy06510