Apprentissage userform...

  • Initiateur de la discussion martin13
  • Date de début
M

martin13

Guest
Bonjour à tous

Comme le titre l'indique je débute....ben vi , même à 53 ans faut bien s'y mettre..
Bon, soyons sérieux;
Sur une feuille, j'ai une liste de nom-prénom- âge par exemple.
J'ai créé une Userform(liste déroulante modifiable)
Ca fonctionne, je choisis un nom et il s'affiche dans une cellule.
Je refais l'expérience, et bien sûr ça marche, maisq à la place du résultat précedent.
Comment faire pour conserver les résultats, et qu'ils s'inscrivent chause fois comme nouvel enregistrement d'une feuille excel?

Merci pour vos réponses.
Martin
 
E

Eric C

Guest
Bonsoir le forum
Bonsoir martin13

Il n'a pas d'age pour apprendre ... J'en ai 10 de moins & je m'y suis mis ... Le problème c'est que l'on devient accro de ce site ... Rrrrrrrrrrr.....
Voici un lien récent de Lord Nelson qui t'en dira plus ...
<http://www.excel-downloads.com/html/French/forum/messages/1_96691_96691.htm>
@ ++ Eric C
 
D

delirium

Guest
Je vous rassure les "vieux"(humour bien sûr) j'en ai 28 est je viens juste de mis mettre (il y à 2 semaines) et pour moi aussi c'est pas facile et pourtant je me débrouille pas mal en informatique.
Et c'est vrai que lorsque l'on ce met au VBA ce site est trop top.

Pour ce qui est de t'on problème martin13, je suis désolé mais je ne connais pas la solution.

Mais bon t'inquiéte les experts sont la !!!

Je te conseillerai de faire comme moi (au début) tu achète un bouquin sur le VBA genre "l'informatique pour les NULS - le VBA" ou "Micro Application - VBA" ou autre qui te parrait bien, histoire de te former et tu pourra dans un premier temps modifier les code que tu aura récupéré dans des exemples ou sur le forum d'excel-download.
Et d'ici quelque temps tu viendras sur le forum en temps que 'expert !!!!

Bon @+
 
P

Pascal76

Guest
Salut Martin

En fait il faut lorsque tu valides ton enregistrement que tu calcules la dernière ligne vide et que tu y insères ton resultat.

Du genre

MaLigne=Sheets("Toto").range("A65536").end(xlup).row + 1
Sheets("Toto").range("A" & MaLigne)=listbox1.value

Bon courage

Pascal
 
@

@+Thierry

Guest
Bonjour Martin, Eric, Delirium, Pascal, le Forum

Comme dit Eric, il n'y a pas d'âge et donc bienvenu ici, sur XLD...
Bienvenue_XLD.gif


Moi je suis tombé dedans quand j'étais petit, depuis çà ne m'a jamais laché et çà fait 43 balais que çà dûre !

Pour ce qui est de ton problème je te conseille ces démos toutes simples avec "Full Comments" dans les codes pour débuter :

=> Démo Téléchargeable Lien supprimé

=> Démo Téléchargeable USF-Rudiments-Basic.zip

=> Démo Téléchargeable USF-Rudiments-Basic-OptionButton.zip

Bon Appétit à tous et toutes, en espérant que vous vous êtes bien éclatés pour la fête de la musique...
@+Thierry
 
M

martin13

Guest
Coucou, encore moi.... le vieux machin...ohhh, ben vi. CHut.......

Au travers d'exemples pris sur différents sites, j'ai flashé sur deux "trucs", et j'essaye d'en faire une synthèse.... à votre avis?...LA CATA
voilà les 2 "trucs" en question:

1/ pris sur un exemple de liste déroulante modifiable: (de E. RENAUD)
Dans cette liste, la valeur m'est renvoyée en D2 de la mme feuille, avec possibilité ajouter nlle marque de VL. (OKI jusque la moi moi)


Private Sub OK_Click()
ListeDeroulanteModifiable.Hide
Application.ScreenUpdating = False
Marque = Constructeur.Value
' Stockage du choix effectué dans la liste déroulante en D2
Range("D2").Value = Marque
Columns("A:A").Select
On Error GoTo Ajoute
Selection.Find(What:=Marque, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
Range("A1").Select
Exit Sub
Ajoute:
' Une nouvelle marque étant ajoutée, ajout de celle-ci à la fin de la colonne A
Range("A1").End(xlDown).Offset(1, 0).Value = Marque
' Tri des marques en ordre croissant
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
' Sélectionne la plage et recolore la plage des marques après ajout nouvelle marque
With Worksheets(1)
.Range(.[A1], .[A1].End(xlDown)).Select
End With
With Selection.Interior
.ColorIndex = 20
.PatternColorIndex = xlAutomatic
End With
Range("A1").Select
End Sub


2/ Pris sur un autre exemple de "planning intervention" (C FLAHAUT):

' Ajouter une ligne
Sub Ajouter_ligne()
Range("A1").Select
Do Until ActiveCell = ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.EntireRow.Select
Selection.Insert Shift:=xlBottom
ActiveCell.Select
End Sub
' Mise à jour d'un ajout de données
Sub Mise_A_Jour()
Sheets("Base").Activate
Ajouter_ligne
Selection.Value = H_Date
Bordure
ActiveCell.Offset(0, 1).Select
Selection.Value = H_Début
Bordure
ActiveCell.Offset(0, 1).Select
Selection.Value = H_Fin
Bordure
ActiveCell.Offset(0, 1).Select
Selection.FormulaR1C1 = "=LC(-1)-LC(-2)"
Bordure
ActiveCell.Offset(0, 1).Select
Selection.Value = Machine
Bordure
ActiveCell.Offset(0, 1).Select
If Maintenance = xlOn Then
Selection.Value = "Préventive"
Else
Selection.Value = "Corrective"
End If
Bordure
ActiveCell.Offset(0, 1).Select
If Méca = xlOn Then
Selection.Value = "Mécanique"
ElseIf Elec = xlOn Then
Selection.Value = "Electricité"
ElseIf Auto = xlOn Then
Selection.Value = "Automatisme"
Else
Selection.Value = "Régulation"
End If
Bordure
ActiveCell.Offset(0, 1).Select
Selection.Value = Intervenant
Bordure
Range("A1").Select
End Sub


Voila, je voudrais faire une synsthèse des deux. Je voudrais qu'au lieu de s'écrire en D2, les valeurs rechercher ou nouvelles valeurs, soient inscrites dans une nouvelle feuille, et conservées, pour traitement ultérieur.
(Je vous cache pas que j'ai passé trois heures a faire des essais, des mélanges..... mon micro marche toujours, mais pas le résultat excompté.

Merci pour votre aide, si ce n'est pas trop demandé.
Martin
 
E

Eric C

Guest
Bonjour le forum
Bonjour Bonjour Martin, Delirium, Pascal & Thierry

En aparté (j'en profite que tout le monde fait la sieste sauf nous deux), je pense que peu de personne essaieront de synthétiser deux fichiers provenant de 2 personnes différentes.
Non il faut que tu expliques en long & en large; sur ce même post (si possible avec un fichier explicatif joint), ce que tu désires réaliser. Attention, je ne me fais que le porte parole des Géants de ce site.
@ ++ Eric C
 
M

martin13

Guest
Rebonjour tous, plus Eric bien sûr

Je sais et je comprends que venant de deux auteurs différents, le style, la façon de pensée est différente. MAis en qualité dé débutant en la matière, j'essaye de me servir d'exemples et de faire mon "alchimie".

je vais joindre ces deux exemples différents dont j'en avais extrait qq lignes.
Ce que je recherche (dans un premier temps... courage les mecs, le"vieux" est la....j'rigole) c'est à partir d'une liste fixe(q uoi que évolutive...) je puisse faire un choix dedans, l'inscrire sur une nouvelle feuille de calcul et y insérer, pourkoi pas de nouveux éléments.

Donc dans les 2 exemples que je me suis permis de décrire (du moins partiellement), je voulais en faire une synthèse. L'un me proosant une liste déroulante modifiable avec résultat "ponctuel" sans sauvegarde, et l'autre un simple liste déroulante avec enregistrement du choix dans une nlle feuille de calcul.

Voilà mon petit problème du moment, et j'espère l'avoir exposé de manière claire ( si c'est pas bon, criez fortttttttttt...clein d'oeil)

Merci à tous

Martin
 
@

@+Thierry

Guest
Re bonjour Martin, Eric, Delirium, Pascal, le Forum

Oui comme dit Eric, pas pratique de "mixer" deux procédures, d'autant plus qu'elles ne semblent pas correspondre à la description de tes besoins !

Si j'ai bien compris ceux-ci (tes Besoins) : Ce que je recherche c'est à partir d'une liste fixe(quoique évolutive...) je puisse faire un choix dedans, l'inscrire sur une nouvelle feuille de calcul...et y insérer, pourquoi pas, de nouveux éléments...

Donc je récapitule pour un exemple concrêt :

Une Feuille Source nommée "FeuilleSource" qui contient ta liste fixe, cette Liste Fixe devant nourrir une ListBox dans un UserForm.

Une Feuille Cible nommée "FeuilleCible" qui doit recevoir le (ou les) élément(s) qui provient (proviennent) de la séléction faite dans la ListeBox.

Si ceci est exact...

Matériel nécessaire :

Un Classeur Flambant Neux avec deux Feuilles :
1) => Une Feuille nommée "FeuilleSource"
2) => Une Feuille nommée "FeuilleCible"

Dans la "FeuilleSource" en A1 to mets un libellé (exemple NOMS)
et ensuite de A2 à Axxx (jusqu'où tu souhaites en colonne A)
tu mets "Toto1", "Toto2", "Toto3", "Toto4", "Toto5", "Toto6" etc etc

Dans la "FeuilleCible" en A1 to mets un libellé (exemple NOMS SELECTIONNES)

Il faut maintenant passer à VBA / VBE et il te faut :

1 UserForm avec dedans :
1 ListBox Nommée "ListBox1"
1 CommandButton Nommé "CommandButton1"

Puis dans le Private Module de ce UserForm tu colles ce code que j'ai mis en "Full Comments" pour ta compréhension...

Option Explicit '<<<<<<<< Option pour obliger à déclarer les variables !!!

Private Sub UserForm_Initialize()
Dim L As Integer '<<<<<<<< Déclartion de Variable de Type numérique entier

'ICI j'initialise "L" comme étant la première ligne non vide de la colonne A en partant du bas
L = Sheets("FeuilleSource").Range("A65536").End(xlUp).Row

'ICI je donne à la pripriété RowSource de la Liste, la Valeur de la Plage Source "A1:A x"
ListBox1.RowSource = "FeuilleSource!A1:A" & L

End Sub


Private Sub CommandButton1_Click()
Dim L As Integer '<<<<<<<< Déclartion de Variable de Type numérique entier

'ICI pareil que plus haut, mais "Plus 1" pour avoir la ligne Vide
L = Sheets("FeuilleCible").Range("A65536").End(xlUp).Row + 1

'ICI Je teste qu'il y a bien une sélection faite dans la ListBox
If ListBox1.ListIndex <> -1 Then

'Si Oui :
'ICI Je reporte dans la première ligne vide de la Feuille "Source" la donné séléctionée
Sheets("FeuilleCible").Range("A" & L) = ListBox1
End If
End Sub


Si tu as bien tout appliqué comme conseillé, cette démo fera ce que tu cherches à faire, et bien plus simplement que ce que tu as essayé de mixer.

Bonne découverte du VBA, et bonne fin de journée
@+Thierry
 
M

martin13

Guest
Merci Thierry
pour cette réponde qui dépasse mes espérances. Mais avec tes quelques lignes qui semblent évidente pour toi ( a la manière dont tu les dis), moi j'en ai pour six mois à comprendre..... Ne te fache surtout pas. Je dis cela simplement, mais il est vrai que tu me donnes une explication (je t'en remercie oh combien) mais ne suis pas capable de l'exploiter.
Donc, et rassure toi, ce n'est pas méchant de la part d'un "vieux" de 53 ans, (si tu as lu mes posts), sois tu tu te mets à ma portée (il te suffit de baisser la tête), soit on en reste là, et nous resterons copains... sourire
Non sérieux je vois dans ce que tu me dis des choses intéressantes, mais je capte pas, pour le moment.

Merci encore Thierry et les autres......
MArtin
 
E

Eric C

Guest
Re le forum
Re Bonjour Martin, Delirium, Pascal & Thierry

Une fois de plus, tu m'as devancé Thierry. Je viens de terminer mon fichier à 16H55 et déjà tu as balancé le tien. De plus, j'ai de sérieurx problèmes avec mon PC (Mon fiston à lors de téléchargements "chopé" 2 virus Worm KORGO & BAT SASSER qui ont infectés Windows. Je les ai supprimé mais je ne peux plus enregistrer mes travaux. Bon je ne met pas ma contribution en ligne car Martin à matière à lire avec ton post.
Bon je pars réinstaller Win & Excel.
@ ++ Eric C
 
M

martin13

Guest
Merci aussi Eric

de t'interessr "au vieux"..
MAis j'avoue que j'ai du mal à tout déchiffrer...
Pour vous aidier , je connais Excel comme 95% des utilisateurs...OKI?
tri, insérer, concaténer, tab crois. dyn., sélection.... ce qui est basique.
Donc ne vous étonnez pas uant à mes questions.
Si je dérange, n'hésitez pas à me le dire, cela me sera utile, et vous perttra de répondre à des personnes plus au top que moi.

Philippe Martin
 

Statistiques des forums

Discussions
314 121
Messages
2 106 133
Membres
109 498
dernier inscrit
joe_K