Masquer onglets COMBOBOX ACTIVe X

Bonjour,

J'ai repris un code d'un site américain qui permet de naviguer entre les onglets grâce à un combobox active x.

Problème : Je souhaiterais alimenter le combobox à partir d'un onglet :

Exemple :

ACCEUIL, TABLEAU , SITE , Graphique , 1 2,3

le combobox affichera seulement les onglets après SITE.

Est-ce possible ?

Merci pour le forum , Merci du retour,

Respectueusement,

Bonjour,

à tester,

    For Each Sh In ThisWorkbook.Worksheets
      If Sh.Name <> "ACCEUIL" And Sh.Name <> "TABLEAU" And Sh.Name <> "SITE" Then
        Me.cbSheet.AddItem Sh.Name
      End If
    Next Sh

Bonjour,

J'ai pas bien compris le sens du workbook open

Private Sub Workbook_Open()
If ActiveSheet.Name = "ActiveX" Then
    Worksheets("Data").Select
    Worksheets("ActiveX").Select
End If
End Sub

Si la feuille ActiveX est selectionnée alors selectionner la feuille Data puis slectionner la feuille ActiveX

çà sert à quoi ?

oops je m'auto-corrige je viens de comprendre que c'est pour relancer le code qui alimente la combobox au cas ou la feuille Activex et déjà ouverte.

Donc pas meilleurs code que I20100 puisque les autres feuilles peuvent porter un nom différents on ne peut

donc pas faire une condition sur si toutes les feuilles ressemblent à "Sheet" …

Un grand Merci !!!!

Parfait !

C'est génial que des personnes puissent m'aider.

Respectueusement ,

Bonjour,

Désolé de vous déranger. J' ai encore une petite question

Comment trier dans l’ordre alphabétique les feuilles dans le combobox ?

Jacques Boigontier propose des codes pour des tableaux et non sur des feuilles .

Avez- vous une idée ? Pouvez-vous me guider ?

Respectueusement,

Bonjour tout le monde,

Comment trier dans l’ordre alphabétique les feuilles dans le combobox ?

Un essai......la macro s'exécute à l'activation de la feuille "ActiveX"....

Principe:

  • on crée la liste des onglets en colonne J
  • On trie la colonne J
  • on alimente la combobox
  • on efface la colonne J
Private Sub Worksheet_Activate()
    Dim  j As Integer, n As Integer, i As Integer

    For j = 1 To Sheets.Count
     If Sheets(j).Name <> "Accueil" And Sheets(j).Name <> "TABLEAU" And Sheets(j).Name <> "SITE" Then Sheets("ActiveX").Range("J65535").End(xlUp).Offset(1, 0) = Sheets(j).Name
    Next j
     Sheets("ActiveX").Range("J:J").Sort Key1:=Range("J2"), Order1:=xlAscending
        Me.cbSheet.Clear
         n = Sheets("ActiveX").Cells(Rows.Count, 10).End(xlUp).Row
       For i = 1 To n
        Me.cbSheet.AddItem Cells(i, 10)
       Next i
      Sheets("ActiveX").Range("J:J").ClearContents
End Sub

Il y a peut-être plus simple,

Cordialement,

Bonjour,

Désolé de la réponse tardive. Je vais essayer ça et je vous tiens au courant.

Merci d'avoir pris la peine de me répondre.

Respectueusement,

Bonjour,

Un grand merci d'abord.

Le code fonctionne sur la feuille active x. Cela dit, quand j'essaye de copie la feuille active X, il y a une erreur car active x (1)

Peut-on appliquer ce code dans toutes les feuilles ? Je compte utiliser la combo sur plusieurs feuilles afin de naviguer.

Merci du retour,

Respectueusement,

Bonjour hkim, le forum,

Nouvel essai......si tu crées ta feuille à partir d'une copie de la feuille "ActiveX".....

Code à placer dans le module de la feuille "ActiveX":

Option Explicit

Private Sub cbSheet_Change()
 Dim GestionErreur As String
  On Error GoTo GestionErreur
   If cbsheet.Value <> "Select a sheet" Then
    Worksheets(cbsheet.Value).Select
   End If
    cbsheet.Value = "Select a sheet"
    Exit Sub
GestionErreur:
 MsgBox Err.Number & " , " & Err.Description
End Sub

Private Sub Worksheet_Activate()
    Dim j As Integer, n As Integer, i As Integer

    For j = 1 To Sheets.Count
     If Sheets(j).Name <> "Accueil" And Sheets(j).Name <> "TABLEAU" And Sheets(j).Name <> "SITE" Then ActiveSheet.Range("AA65535").End(xlUp).Offset(1, 0) = Sheets(j).Name
    Next j
     ActiveSheet.Range("AA:AA").Sort Key1:=Range("AA2"), Order1:=xlAscending
        ActiveSheet.cbsheet.Clear
         n = ActiveSheet.Cells(Rows.Count, 27).End(xlUp).Row
       For i = 1 To n
       ActiveSheet.cbsheet.AddItem Cells(i, 27)
       Next i
      ActiveSheet.Range("AA:AA").ClearContents
End Sub

Nota: la feuille copiée puis renommée, pourra ensuite être copiée à son tour....

Comme je te l'ai dit, il y a certainement moyen de faire plus simple (voir mieux),

Cordialement,

Bonjour,

Merci pour votre aide, vraiment.

Votre code marche. Cela dit, peux-ton déplacer la liste AA vers AK par exemple ?

J'ai des cellule fusionné et cela engendre des bugs. J'ai essayé de modifier le code, cela ne fonctionne pas.

Avez-vous une piste.

Merci du retour,

Respectueusement,

Re,

Merci pour ton retour....

peux-ton déplacer la liste AA vers AK par exemple ?

Oui, il te faut modifier ces lignes:....choisis une colonne que tu es sur de ne pas utiliser....

ActiveSheet.Range("AK65535").End(xlUp).Offset(1, 0) = Sheets(j).Name

ActiveSheet.Range("AK:AK").Sort Key1:=Range("AK2"), Order1:=xlAscending

n = ActiveSheet.Cells(Rows.Count, 37).End(xlUp).Row

ActiveSheet.cbSheet.AddItem Cells(i, 37)

ActiveSheet.Range("AK:AK").ClearContents

Private Sub Worksheet_Activate()
    Dim j As Integer, n As Integer, i As Integer

    For j = 1 To Sheets.Count
     If Sheets(j).Name <> "Accueil" And Sheets(j).Name <> "TABLEAU" And Sheets(j).Name <> "SITE" Then ActiveSheet.Range("AK65535").End(xlUp).Offset(1, 0) = Sheets(j).Name
    Next j
     ActiveSheet.Range("AK:AK").Sort Key1:=Range("AK2"), Order1:=xlAscending
        ActiveSheet.cbSheet.Clear
         n = ActiveSheet.Cells(Rows.Count, 37).End(xlUp).Row
       For i = 1 To n
       ActiveSheet.cbSheet.AddItem Cells(i, 37)
       Next i
      ActiveSheet.Range("AK:AK").ClearContents
End Sub

Bonne soirée,

Merci beaucoup ça fonctionne !

J'ai oublié de modifier le numéro colonne dans ton code , c'est pour ça que ça marchait pas.

Le code je l'ai optimisé par Application.ScreenUpdating.

Pour ma part ça marche bien.

Problème résolu !!

Merci à vous tous !!! C'est quand même dingue de voir des personnes dévouées.

Grâce à ce forum, j'apprends énormément. MERCI,

Respectueusement,

Rechercher des sujets similaires à "masquer onglets combobox active"