[VBA] Interaction onglets => Multipage

TheLio

XLDnaute Accro
Bonjour tous, le forum,

Avec USF Multipage, pas (trop) de problèmes pour piloter le classeur,
- On change d'onglet sur le Multipage et la feuille concernée est activée.
- mais...
Je me demandais s'il était possible de faire changer l'onglet du multipage si l'utilisateur décide de changer de feuille "manuellement"?

(je n'ai pas joint le fichier, car ce dernier est très volumineux et contient beaucoup de données confidentielles, mais si c'est nécessaire, je l'épure volontiers)

Merci d'avances pour vos lumières

@++
Lio
 

job75

XLDnaute Barbatruc
Re : [VBA] Interaction onglets => Multipage

Bonjour TheLio,

Ouverture de l'USF en non modal avec :

Code:
Sub USF()
Dim a, i&
a = Array("Feuil1", "Feuil2", "Feuil3") 'CodeNames
i = Application.Match(ActiveSheet.CodeName, a, 0)
If IsNumeric(i) Then UserForm1.MultiPage1.Value = i - 1
UserForm1.Show 0 'non modal
End Sub
Et dans ThisWorkbook :

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim a, i As Variant
a = Array("Feuil1", "Feuil2", "Feuil3") 'CodeNames
i = Application.Match(Sh.CodeName, a, 0)
If IsNumeric(i) Then UserForm1.MultiPage1.Value = i - 1
End Sub
A+
 

Lone-wolf

XLDnaute Barbatruc
Re : [VBA] Interaction onglets => Multipage

Bonsoir job, TheLio

une autre façon de faire (basic et répétitif)

Code:
'sur chaques feuilles ecrit l'index de la page de 0 à 2 et insère le code
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
Application.Goto Range("a1")
UserForm1.Show
UserForm1.MultiPage1.Value = ActiveCell
End Sub

Et pour rajouter une page avec nouvelle feuille, en prenant l'exemple donné par job,

Code:
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim a, i As Variant
Application.ScreenUpdating = False
a = Array(Sh.CodeName) 'CodeNames
i = Application.Match(Sh.CodeName, a, 0)
If IsNumeric(i) Then UserForm1.MultiPage1.Pages.Add
End Sub


A+ :cool:
 
Dernière édition:

TheLio

XLDnaute Accro
Re : [VBA] Interaction onglets => Multipage

Bonsoir Job75, le forum,
APrès une panne de chauffage, une panne de courant, ... me revoilà (tendu)
Ton code fonctionne bien je te remercie.
Un doute subsiste, je dois cliquer deux fois sur l'onglet de page, le premier me renvoie automatiquement à ma "Feuil2" qui est la première de la série.
Une idée ?
@++
Lio
 

Lone-wolf

XLDnaute Barbatruc
Re : [VBA] Interaction onglets => Multipage

re TheLio,

figure toi, moi aussi (enfin presque suisse).

Sur feuil1 en A1 tu écris 0 - feuil2 1 - feuil3 2

En ce qui concerne l'exeple de job75; tu ajoute un module standard et tu y met la Sub(), dans la feuille de Thisworkbook tu met le code correspondant. Tu ajoute un bouton sur la première feuille et tu fais appel à la Sub().

Dans les propriétés du Formulaire, tu met ShowModal à False. dans les deux macros, tu peux ajouter Application.ScreenUpdating = False, après Dim a et i .



A+ :cool:
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : [VBA] Interaction onglets => Multipage

Re, salut Lone-Wolf,

Un doute subsiste, je dois cliquer deux fois sur l'onglet de page, le premier me renvoie automatiquement à ma "Feuil2" qui est la première de la série.
Une idée ?

En effet nous n'avons pas encore parlé du code de l'UserForm :

Code:
Private Sub MultiPage1_Change()
Static flag As Boolean
If flag Then Exit Sub
flag = True
Select Case MultiPage1.Value
  Case 0: Feuil1.Activate
  Case 1: Feuil2.Activate
  Case 2: Feuil3.Activate
End Select
flag = False
End Sub
L'ordre des feuilles doit être le même que celui des "Array" a que que j'ai mis dans les autres macros.

A+
 

TheLio

XLDnaute Accro
Re : [VBA] Interaction onglets => Multipage

<Bonsoir Job,
Merci pour ton dévouement et ta patience,
je suis contraint de regarder ça demain, le chauffage ne fonctionne toujours qu'a moitié.
12°C dans la pièce, c'est pas terrible pour bosser (et les moufles sur le clavier non plus :eek:)

Alors A demain
Merci pour tout
@++
Lio
 

TheLio

XLDnaute Accro
Re : [VBA] Interaction onglets => Multipage

Bonjour Job75, le forum,
19°C au salon, je peux pianoter sans grelotter...
Ca fonctionne à merveille, je te remercie. Je n'ai pas encore compris la finesse de toutes les subtilités de ton code, mais j'étudie et j'apprends.
Merci Beaucoup
A plus tard
Lio
 

job75

XLDnaute Barbatruc
Re : [VBA] Interaction onglets => Multipage

Bonjour TheLio,le forum,

J'avais introduit la variable flag par précaution mais en re-testant il semble bien qu'elle soit inutile.

Si je remplace l'instruction If flag Then Exit Sub par If flag Then MsgBox "a": Exit Sub

la MsgBox n'apparaît jamais chez moi sur Excel 2013, même si l'on se trompe dans l'ordre des feuilles.

Donc a priori il suffit d'utiliser :

Code:
Private Sub MultiPage1_Change()
Select Case MultiPage1.Value
  Case 0: Feuil1.Activate
  Case 1: Feuil2.Activate
  Case 2: Feuil3.Activate
End Select
End Sub
Edit : fichier joint pour ceux qui veulent tester.

Bonne journée.
 

Pièces jointes

  • MultiPage(1).xlsm
    35.7 KB · Affichages: 76
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : [VBA] Interaction onglets => Multipage

Bonjour job, Le Forum,

à tester. Mettre le formulaire en showmodal false dans les propriétés.


Code:
Option Explicit
Dim flag As Boolean, x
Private Sub MultiPage1_Change()
x = MultiPage1.SelectedItem.Index + 1
flag = True
If flag = True Then
Select Case MultiPage1.Value
  Case 0: Feuil1.Activate
  Case 1: Feuil2.Activate
  Case 2: Feuil3.Activate
End Select
MsgBox "Feuil" & x
Else
flag = False
End If
End Sub

avec MsgBox "a" resultat = a. J'ai aussi effectué un test avec 6 feuilles; test concluant.



A+ :cool:
 
Dernière édition:

Statistiques des forums

Discussions
312 109
Messages
2 085 383
Membres
102 878
dernier inscrit
asmaa