Fonction masquant l'ouverture de plusieurs onglets

  • Initiateur de la discussion Initiateur de la discussion Jum_o
  • 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 !

Jum_o

XLDnaute Junior
Bonjour à tous,

Merci d'avance de votre aide.
Je suis à la recherche d'une fonction me permettant de masquer l'ouverture de plusieurs onglets. Je m'explique: J'ai crée une page d'acceuil avec des boutons. En cliquant sur un des boutons, plusieurs onglets s'ouvrent. J'aimerais que durant cette procédure on ne voit pas défiler les onglets qui s'ouvrent... J'espére avoir été suffisament clair.

Je profite aussi de cette discussion pour vous demander une petite astuce:

Sheets("Format").Select
Sheets("Format").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = ListBox2.Value

Voila un bout de mon code qui me permet de créer un onglet avec comme nom la sélection de la listbox. Ma question est: si il existe déja un onglet avec le nom de la listBox, j'aimerais que ma macro me crée quand même l'onglet en rajoutant un indice à la fin par exemple 1.


Merci de votre aide!!

Jum_o
 
Re : Fonction masquant l'ouverture de plusieurs onglets

bonjour Jum, Pascal

pour le nom de l'onglet, je te propose cette boucle (surement à améliorer, mais elle a l'air de fonctionner) :

Code:
Dim nomOnglet As String, lengthOnglet As Integer
Dim curSheet As Worksheet, sheetExist As Boolean, ind As Integer

nomOnglet = ListBox2.Value
lengthOnglet = Len(nomOnglet)

sheetExist = True
ind = 1

While sheetExist = True
    sheetExist = False
    For Each curSheet In ThisWorkbook.Worksheets
        If curSheet.Name = nomOnglet Then
            sheetExist = True
            nomOnglet = Mid(nomOnglet, 1, lengthOnglet) & CStr(ind)
            ind = ind + 1
        End If
    Next curSheet
Wend

[I]MsgBox nomOnglet[/I]

si ListBox2.Value = "feuil" et que tu as les feuilles "feuil", "feuil1", "feuil2", "feuil3" et "feuil4", alors nomOnglet = "feuil5"

a+
 
Re : Fonction masquant l'ouverture de plusieurs onglets

Bonjour,

A tester :

Code:
Dim txt$, i As Byte
Sheets("Format").Copy After:=Sheets(Sheets.Count)

txt = Left(ListBox2, 31) 'limitation du nombre de caractères puis remplacement des caractères non autorisés
txt = Replace(Replace(txt, "/", "#"), "\", "#")
txt = Replace(Replace(txt, "*", "#"), "?", "#")
txt = Replace(Replace(txt, "[", "#"), "]", "#")

On Error Resume Next
Sheets(Sheets.Count).Name = txt
If Err Then
  i = 0
1 Err = 0
  i = i + 1
  Sheets(Sheets.Count).Name = Left(txt, 25) & " (" & i & ")"
  If Err Then GoTo 1
End If
On Error GoTo 0

A+
 
Dernière édition:
- 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
3
Affichages
600
Réponses
12
Affichages
1 K
Réponses
3
Affichages
966
Retour