Userform combinée, à 1ère vue compliquée, ms pas tant que ça ;-)

  • Initiateur de la discussion lapou
  • Date de début
L

lapou

Guest
Bonjour à tout le forum, et en particulier aux vétérans de celui-ci (ce n'est pas péjoratif bien au contraire ;-))

Je vais essayer d'être le plus clair possible :
- J'ai 15 onglets similaire où je rentre des performances sportives de personnes (15 personnes donc). Je leur indique Sports (A1), Concours (B1), Manches (C1), Position (D1) et Fufus (E1). Sur certains j'en suis déjà à 100 lignes...
- J'ai un onglet qui me fait le bilan de tout ça : Répartition des perfs par sports, par membres, position moyennes,....Cet onglet à été réalisé avec l'aide de Monique, que tout le monde connait ;-)

Pour visualiser et prendre des idées éventuellement je peux vous l'envoyé avec plaisir ;-)

Voici mon souhait...
Créer une userform qui me permettent de rentrer ces 5 données sur un ou plusieurs onglets suivant les résultats. J'ai déjà fait la trame mais c'est plus pour le contenu et les codes que je galère !!!

Je vous envois tout ça avec plaisir en espérant que vous pourrez m'aider à surmonter cette montagne qu'est l'Everest pour moi, simple petit utilisateur d'excel ;-)

Enorme merci à vous tous.
Je suis impatient de vous lire
Jérémie
 
@

@+Thierry

Guest
=> DEMO Userform de Saisie avec Retour de Donnée sur Différentes Feuilles

Bonjour Lapou, le Forum

Ce que tu demandes (envoyer ton fichier pour réalisation et intégration du UserForm) n'est pas "XLD-Compliant" , en effet si on fait des boulots par Emails interposés ... on sort du cadre d'un Forum de partage de connaissance...

Donc je te propose une Démo, faite pour toi, mais aussi tous ceux et celles qui souhaiteraient trouver les ressources nécessaires dans ce Forum pour Saisir des données à partir d'un seul et unique UserForm, lequel répartirait ces données vers différentes feuilles en fonction d'un choix utilisateur...

La démo ci-jointe permet d'ajouter autant de feuilles que l'on souhaite et de leur donner le nom que l'on veut, le code s'adaptera tout seul.

N'ayant pas vraiment étudié tes besoins précis, mis à part 5 TextBoxes pour retourner des valeurs dans 5 cellules de manière linéaire, il est fort probable que tu aies besoin plus tard de retour de valeur Numériques, auquel cas tu reviens en spécifiant bien les champs concernés...

Tu noteras aussi que j'ai mis les explications en "Full-Comments" pour t'aider un peu dans la compréhension de ce qui se produit...

Bonne Découverte de cette première Démo d'été !!!

Bon Appétit
@+Thierry
 

Pièces jointes

  • USF_Saisie_MultiSheets.zip
    18.3 KB · Affichages: 46
L

lapou

Guest
Merci pour le bon app thierry, j'ai plutôt bien mangé ;-)

je comprends le soucis du mail alors je me suis démerdé pour le réduire au max et donc voici le bête ;-)

ce dont j'aimerais est légèrement différent de ce que tu propose alors dis moi ce que tu en penses stp ;-)

merci encore pr cette 1ère démo d'été ;-)

Je suis impatient de te lire ;-)

Jérémie
 

Pièces jointes

  • PerfsmembresXLD.zip
    49.9 KB · Affichages: 27
  • PerfsmembresXLD.zip
    49.9 KB · Affichages: 29
  • PerfsmembresXLD.zip
    49.9 KB · Affichages: 28
@

@+Thierry

Guest
Re Salut Jérémie, le Forum

Je ne peux pas télécharger de pièces jointes depuis mes WorkStations du bureau (sécurity), mais j'ai entrevu ton fichier depuis un stand alone.

Je suis contre toutes ces CheckBox, un peu comme pour Lindo dans Lien supprimé

Je te re-propose le même UserForm adapté comme il se faut pour tes besoins... La ListeBox est en Multi-Select... Donc tu peux reporter les Valeurs dans plusieurs feuilles... Et tu as aussi une ComboBox pour tes Sports auto-Alimentée par une Feuille "Database"....

Bon Courage
@+Thierry
 

Pièces jointes

  • USF_Saisie_MultiSheets-V01.zip
    24.9 KB · Affichages: 42
@

@+Thierry

Guest
Voici une Version Corrigée ... Avec des PLus pour les Contrôles de Saisie suite à une autre demande sur le Forum...

(Un Petit Bug si NON sélection dans la ListBox1 vu qu'en MultiSelect elle ne réagit pas pareil...)

=> Lien supprimé

En fait cette démo fait deux Fils à la fois !!! lol

Bonne Fin de Journée

@+Thierry
 
L

Lapou

Guest
'soir Thierry !!!

à 1ère vue ça m'irait très bien, là je suis en we et pars 3 jours donc je l'adapterais à mon fichier lundi ;-)

si ça vous intéresse je vous l'enverrais !

Bonne soirée et bon we !!!

Merci encoreeeeeeeeeeeeeee !!!
Tchao
 
L

lapou

Guest
Bonjour tout le monde !!!

A peine rentré du Sud que je suis déjà sur mon clavier pour vous faire un tit coucou ;-)

Pour le fichier je v'ais m'en occuper dès que je peux, vous inquiétez pas ;-)

Bonne journée à vous tous !!!

Tchao
 
L

lapou

Guest
J'oubliais : je ne vais plus avoir de PC à dispo en permanence pendant qq temps donc je n'aurais accès que de tps en tps :-:)-:)-(

cependant j'espère pouvoir bosser sur mon fichier le plus rapidement possible !!!

Tchao
 
L

lapou

Guest
Re: Userform combinée, voici le code mais j'ai du mal ...

Re bonjour à chacun d'entre vous et Thierry ;-)

donc voici le code de la userform1 mais je vous avouerais que j'ai encore pas mal de soucis pour la faire fonctionner !!!

Pour la listbox j'aimerais avoir les 15 onglets avec les noms des membres : australie, bibi, bob, bunch, dav, ELEG, era, lapou, lolo, ombou, phiphi, raphou, rusty, seba et zedou.
Pour la ComboBox des sports, plutôt que la database, j'aimerais l'alimenté avec les A8:A29 de la feuille BILAN, est-ce possible ?

Enfin que dois-je changer dans le code suivant pour réussir à faire fonctionner tout cette magie des Userform ?



Voici le code de Userform1:

Option Explicit
Const T As String = "Thierry's Démo sur www.Excel-Downloads.com, June 2004"

Dim Bad As Boolean 'DECLARATION VARIABLE PUBLIQUE

Private Sub UserForm_Initialize() '<<<<< INITIALISATION du UserForm
Dim WS As Worksheet
Dim i As Byte

'Ici une Boucle pour incrémenter les Noms d'Onglets des Feuille dans la ListBox1
'avec exception pour la Feuille "Bilan" ou "Anciens membres"
For Each WS In Worksheets
If Not WS.Name = "Ce..." And Not WS.Name = "Bilan" And Not WS.Name = "Interface" And Not WS.Name = "Database" Then
With Me.ListBox1
.AddItem WS.Name
.MultiSelect = fmMultiSelectMulti 'ICI Je mets en Multi Sélection
End With
End If
Next

'ICI Incrémentation des Sport dans la ComboBox1..
With Sheets("Database")
For i = 2 To .Range("A65536").End(xlUp).Row
ComboBox1.AddItem .Range("A" & i)
Next i
End With

'ICI Par défaut je mets les CheckBoxs à True (Cochées) et je signe mon UserForm ;-)
With Me
.CheckBox1.Value = True
.CheckBox2.Value = True
.Caption = T
End With
End Sub

Private Sub ListBox1_Change() 'L'évènement Click ne passe plus en Mode Multi-Select
Dim TheWorkSheet As String '<<<<< Variable de type String le Nom de Feuille
Dim x As Byte '<<< Déclaration de Variable de Type Numérique Entier (jusqu'à 255)
Dim i As Byte '<<< Idem

'ICI une condition SI pour visualiser les Feuilles si Checkbox Cochée
If CheckBox2 = True Then
For i = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(i) = True Then
TheWorkSheet = Me.ListBox1.List(i)
End If
Next
On Error Resume Next
Worksheets(TheWorkSheet).Activate
End If
End Sub


Private Sub CommandButton1_Click() '<<<<< CLICK BOUTON VALIDATION
Dim WSArray() As String
Dim Selec As Boolean
Dim L As Integer '<<< Déclaration de Variable de Type Numérique Entier (jusqu'à 32,767)
Dim C As Byte '<<< Déclaration de Variable de Type Numérique Entier (jusqu'à 255)
Dim x As Byte '<<< Idem
Dim i As Byte '<<< Idem
Selec = False

'ICI Test si aucun Item sélectionné dans la ListBox1
For i = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(i) = True Then
Selec = True
End If
Next

If Selec = False Then
MsgBox "Sélectionner au moins un Item dans la ListBox", vbCritical, T
Exit Sub 'On est sorti si pas d'item sélectionné
End If

'ICI un test sur La TextBox1 qui doit impérativement contenir des Donnée...
If ComboBox1 = "" Then
MsgBox "Données manquante en ComboBox1 SPORT", vbCritical, T
Exit Sub 'On est sorti si pas d'item sélectionné
End If

'ICI un Test en Boucle pour les TextBox
CheckTextBox
If Bad = True Then Exit Sub 'si le test est Mauvais on Sort


'ICI Une boucle pour constituer une Array sur les Feuilles sélectionnées
For i = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(i) = True Then
ReDim Preserve WSArray(x)
WSArray(x) = Me.ListBox1.List(i)
x = x + 1
End If
Next

'ICI une Boucle pour écrire sur cahque feuille de l'Array...
For x = 0 To UBound(WSArray)

'ICI je dis avec quelle feuille on travaille car est sélectionnée par la Variable "TheWorkSheet"
With Sheets(WSArray(x))
'ICI je trouve la dernière ligne vide pour envoyer les données
L = .Range("A65536").End(xlUp).Row + 1

.Cells(L, 1) = ComboBox1

'ICI je fais une Boucle pour les Colonnes (1 to 5) et en même temps
'pour les TextBox 2 to 5...
For C = 2 To 5
.Cells(L, C) = Controls("TextBox" & C)
Next

End With '<<< Fin de AVEC WSArray(x)
Next x


'ICI une condition SI pour lancer la macro de nettoyage des TextBox si Checkbox Cochée
If CheckBox1.Value = True Then TheCleaner
L = 0

End Sub

Private Sub TheCleaner() '<<<<< MACRO DE NETTOYAGE DES TEXTBOXS
Dim CTRL As Control '<<<<<<<<<< Déclaration de Variable de Type Objet "Control"

'ICI Une Boucle sur cahque Controls avec un test sur le Nom (4 Première Lettres) pour
' Vérifier qu'on ne va vider ques des "TEXT"Box...
For Each CTRL In Controls
If Left(CTRL.Name, 4) = "Text" Or Left(CTRL.Name, 5) = "Combo" Then
CTRL.Value = ""
End If
Next CTRL

End Sub

Private Sub CheckTextBox()
Dim CTRL As Control
Dim EmptyCTRL As String
Bad = False

For Each CTRL In Me.Controls
If TypeOf CTRL Is MSForms.TextBox Then
If CTRL.Tag <> "" Then
If CTRL = "" Then EmptyCTRL = EmptyCTRL & CTRL.Name & " " & CTRL.Tag & vbCrLf
End If
End If
Next CTRL

If Not EmptyCTRL = "" Then
MsgBox "Les Champs suivants sont Vides :" & vbCrLf & EmptyCTRL, vbCritical, T
Bad = True
End If
End Sub


Private Sub CommandButton2_Click()
Unload Me
End Sub



Enorme Merci à vous tous !!!
Jérémie
 
@

@+Thierry

Guest
Re: USERFORM combinée, à 1ère vue compliquée, , voici le code mais j'ai du mal .

Salut Jérémie, le Forum

Juste ce poste pour te dire que je n'aurai pas le temps de regarder ceci avant un moment... Désolé... Je suis lessivé là... Et pour dix jours je fais deux jobs en même temps!.... Donc le Forum va être un peu en retrait pour moi...

Si quelqu'un se sent, je serai le premier heureux...

Bonne nuit
@+Thierry
 
L

lapou

Guest
Re: USERFORM combinée, à 1ère vue compliquée, voici le code mais j'ai du mal

'jour Thierry et le forum !!!

ben tant pis je suis un peu déçu qd même, mais je le comprends très bien ;-) :-(
en tout cas j'espère que quelqu'un pourra m'aider donc mon escalade et si personne ne le fais ben j'attendrais ton retour (si tu ne m'as pas oublié ;-))

en tout cas bosses bien et merci à tout ceux qui pourront m'aider !!!

Bonne journée !
Tchao
 
@

@+Thierry

Guest
Salut Lapou

Je vais faire rapidos, car le problème c'est que tu as trop de questions sur un trucs un peu long à gérér et je pense que si je ne m'y mets pas moi-même se sera encore plus rébarbatif pour quelqu'un ne connaissant pas ce que j'ai fait avant...

Pour la listbox j'aimerais avoir les 15 onglets....

Quand tu écris :
For Each WS In Worksheets
If Not WS.Name = "Ce..." And Not WS.Name = "Bilan" And Not WS.Name = "Interface" And Not WS.Name = "Database" Then
With Me.ListBox1
.AddItem WS.Name
.MultiSelect = fmMultiSelectMulti 'ICI Je mets en Multi Sélection
End With
End If
Next

Ce devrait mettre Toutes les Feuilles du Classeur (quel que soit leur nom) dans la ListBox1 mis à part les feuilles :
"Ce..." <<<<<<< Bizarre comme nom (???)
"Bilan"
"Interface"
"Database"

Conclusion Je ne comprends pas ton Problème !



Pour la ComboBox des sports, plutôt que la database, j'aimerais l'alimenté avec les A8:A29 de la feuille BILAN

Fais ceci :
'ICI Incrémentation des Sport dans la ComboBox1..
With Sheets("BILAN")
For i = 8 To 29
ComboBox1.AddItem .Range("A" & i)
Next i
End With
(Ceci ce met à la place de l'autre code évidemment)

Conclusion Ce devrait être OK !


Enfin que dois-je changer dans le code suivant pour réussir à faire fonctionner tout cette magie des Userform ?

Euh là, je pense que tu rigole ? la démo que je t'avais faite plus haut fonctionne ? non ? Alors reprends là et procède par étape, car là personne ne va jouer au rébus pour pour trouver ce qui cloche dans ce que tu as traffiqué...

Conclusion Reprends la Démo que je t'ai faite ! Et fais les changements 1 par 1 tant que çà marche... Avant de tout bousiller !!! lol

Bon Courage
@+Thierry
 
L

lapou

Guest
Merci Thierry !!!

Je vais essayer de reprendre tout ça le plus rapidement possible !!!
Mais crois moi quand tu n'y connais pas grand chose ce n'est pas si facile de faire les "changements" !!! ;-)

En tout cas ENORME merci à toi et lorque j'aurais avancé un peu plus je reviendrais te faire signe ici bien sur ;-)

Tchao
 
L

lapou

Guest
Re: Userform combinée, affecter une userform !!!

Re tout le monde !!!

Tite précision : je n'arrive pas à créer un bouton qui, quand on clique dessus, ouvre la userform1 !!!

je dois être un peu lourd je sais mais merci de m'aider ;-)

Tchao
 

Statistiques des forums

Discussions
312 492
Messages
2 088 899
Membres
103 982
dernier inscrit
krakencolas