USF et Format automatique

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

Ilino

XLDnaute Barbatruc
Bonsoir Forum
mon souci de jour c'est Format de USF
J’ai crée un USF , je souhaite afficher les Tableaux( les titres seulement dans USF) selon le nombre saisie dans le TextBox1 (Nombre de tableaux Principaux ?)
C a d si je saisie dans TextBox1 (Nombre de tableaux Principaux ?) = 4
J’aurai automatiquement dans USF 4 titres
Tab N°01 : Nombre des Items dans le Tableau " A "
Tab N°02 : Nombre des Items dans le Tableau " B "
Tab N°03 : Nombre des Items dans le Tableau " C "
Tab N°04 : Nombre des Items dans le Tableau " D "
Et Mon USF s'adapte ( la forme) au nombre affiché dans le Textbox 1
GRAZIE
NB: nombre limité a 10 dans le TextBox 1
 

Pièces jointes

Dernière édition:
Re : USF et Format automatique

Re
en réalité je souhaite remplacer le code
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [E5:E25]) Is Nothing Then Exit Sub
Dim ntab&, lettre$, n&, i&
Target.Select
Application.ScreenUpdating = False
ntab = Val([E5])
Rows("6:2066").Hidden = True
For ntab = 1 To ntab
  Rows(4 + 2 * ntab).Resize(2).Hidden = False
  lettre = Chr(64 + ntab)
  n = Val([E5].Offset(2 * ntab))
  i = Application.Match(lettre, [A:A], 0) - 1
  Rows(i & ":" & i + 2 * n + 1).Hidden = False
  i = Application.Match("Total " & lettre, [A:A], 0) - 1
  Rows(i).Resize(2).Hidden = False
Next
End Sub


Par un USF
A+
 
Re : USF et Format automatique

Bonjour Ilino, CHALET53,

Je ne vois pas trop l'intérêt d'un UserForm ici mais bon...

Le code de l'UserForm :

Code:
Private Sub CommandButton1_Click() 'Valider
Dim i As Byte
For i = 0 To Val(TextBox1)
  Sheets("FGP 2014").[E5].Offset(2 * i) = Controls("TextBox" & i + 1).Value
Next
If Val(TextBox1) Then Unload Me Else TextBox1.SetFocus
End Sub

Private Sub CommandButton2_Click() 'Annuler
Unload Me
End Sub

Private Sub TextBox1_Change()
If Val(TextBox1) = 0 Then Me.Height = CommandButton1.Top + 43: Exit Sub
TextBox1 = Application.Min(Int(Abs(Val(TextBox1))), 10)
Me.Height = Controls("TextBox" & Val(TextBox1) + 1).Top + 43
End Sub

Private Sub Userform_Initialize()
Dim i As Byte
TextBox1 = 0
For i = 0 To 10
  Controls("TextBox" & i + 1) = Sheets("FGP 2014").[E5].Offset(2 * i)
Next
End Sub
Toutes les TextBoxes doivent être numérotées dans le bon ordre, de 1 à 11.

Fichier joint.

A+
 

Pièces jointes

Re : USF et Format automatique

Re bonjour
sorry JOB j ai pas vu ton message
super ça fonctionne tres bien mais l'interet de USF est de ne pas utiliser le code et les lignes au dessus des tableau
je souhaite de USF DIRECTEMENT AFFICHER LES TABLEAU ET LEURS LIGNES
GRAZIE
 
Re : USF et Format automatique

Re,

Tu as tord de vouloir supprimer la macroWorksheet_Change...

En mettant tout dans la macro du bouton "Valider" :

Code:
Private Sub CommandButton1_Click() 'Valider
Dim ntab&, i&, lettre$, n&
ntab = Val(TextBox1)
With Sheets("FGP 2014") 'nom à adapter
  For i = 0 To ntab
    .[E5].Offset(2 * i) = Controls("TextBox" & i + 1).Value
  Next
  Application.ScreenUpdating = False
  .Rows("6:2066").Hidden = True
  For ntab = 1 To ntab
    .Rows(4 + 2 * ntab).Resize(2).Hidden = False
    lettre = Chr(64 + ntab)
    n = Val(.[E5].Offset(2 * ntab))
    i = Application.Match(lettre, [A:A], 0) - 1
    .Rows(i & ":" & i + 2 * n + 1).Hidden = False
    i = Application.Match("Total " & lettre, .[A:A], 0) - 1
    .Rows(i).Resize(2).Hidden = False
  Next
End With
Application.ScreenUpdating = True
If ntab Then Unload Me Else TextBox1.SetFocus
End Sub
Fichier (2).

Edit : j'avais oublié les points...

A+
 

Pièces jointes

Dernière édition:
Re : USF et Format automatique

Re,

D'accord, je pense avoir compris ce que tu veux :

Code:
Private Sub CommandButton1_Click() 'Valider
Dim ntab&, lettre$, n&, i&
ntab = Val(TextBox1)
Application.ScreenUpdating = False
With Sheets("FGP 2014") 'nom à adapter
  .Rows("5:2043").Hidden = True
  For ntab = 1 To ntab
    lettre = Chr(64 + ntab)
    n = Val(Controls("Textbox" & ntab + 1))
    i = Application.Match(lettre, [A:A], 0) - 1
    .Rows(i & ":" & i + 2 * n + 1).Hidden = False
    i = Application.Match("Total " & lettre, .[A:A], 0) - 1
    .Rows(i).Resize(2).Hidden = False
  Next
End With
Application.ScreenUpdating = True
Unload Me
End Sub
Adapte au besoin la plage à masquer "5:2043".

Fichier (3).

A+
 

Pièces jointes

- 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
1
Affichages
208
Réponses
5
Affichages
842
Réponses
5
Affichages
487
Retour