VBA excel

Résolu/Fermé
<@MeL> - Modifié par irongege le 10/03/2012 à 19:16
 <@MeL> - 13 mars 2012 à 22:51
Bonjour à tous

Je débute sur VBA et j'ai un problème.
J'ai créé un fichier très simple avec noms prénoms et notes de certains étudiants avec un userform.On écrit le nom dans une textbox et il se met automatiquement sur la feuille excel.

Mon problème : je voudrais pouvoir noter le nom de plusieurs étudiants (5) mais mon programme ne me le permet pas.
Savez vous quel programme je dois écrire pour que lorsque j'appuie sur le bouton OK que je créé sur mon userform il ne se ferme pas mais me permette de remplir d'autres coordonnées ?

Voici le programme actuel :

Private Sub TEXTBOX4_Change()

Range("A2") = TextBox4

End Sub

Merci de votre aide :) !

9 réponses

salut,
Tu peux peut etre mettre un autre bouton qui te permet d'enregistrer le nom de l'etudiant à la suite du premier
Exemple:
sous reserve que tes 2 premieres cellules soit pleines

Private Sub CommandButton1_Click()
Range("A2").End(xlDown).Offset(1, 0).Select
Selection = TextBox1.Value
End Sub

bon courage
0
&lt;@MeL&gt;
11 mars 2012 à 12:28
Salut !

J'ai essayé ta technique c'est une super bonne idée.
Mais quand je le fais je me retrouve avec
"erreur d'exécution 1004
erreur définie par l'application ou par l'objet"

Donc je pense qu'il y a un truc que je dois changer mais je ne sais pas trop quoi.
Admettons que la première ligne soit celle du tableau ou j'ai écris ce qui figure dans le tableau (nom prénom...) et que je commence à taper les noms à partir de la ligne 2, ton programme fonctionne toujours ?
Et à la troisième ligne de ton programme je dois mettre quelle textbox ? Celle qui correspond au nom ?
Si tu pouvais me dire ca ce serait super parce que je pense que je ne suis pas loin avec cette solution.

Merci beaucoup :) !!
0
f894009 Messages postés 17268 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 29 mars 2025 1 713
11 mars 2012 à 09:49
Bonjour a vous deux

'exemple:
'Feuille de calcul: feuil1
'Cellules pour TextBox4: A2....Ax
' Si vous avez d'autres TextBox: B2....Bx, C2......Cx
'Ajoutez un nouveau CommandButton
Private Sub Cmd_Ok_Click()
Dim D_L_A As Integer
With Worksheets("Feuil1")
If TextBox4.Text <> "" Then
'Premiere ligne vide colonne A
D_L_A = .Range("A" & Rows.Count).End(xlUp).Row + 1
'Ecriture Ax
.Range("A" & D_L_A) = TextBox4.Text 'Nom
TextBox4.Text = "" 'RAZ TextBox4
'Si vous avez d'autre TextBoxs ajouter les lignes ci-dessous
End If
End With
End Sub

A quoi servent les bouton options?

Bonne suite
0
&lt;@MeL&gt;
11 mars 2012 à 19:49
Bonsoir !

Votre technique fonctionne c'est suuuuper !
Il me reste juste une petite question.
Justement les 2 boutons options dont vous me parliez permettent de cocher si l'étudiant a validé son année ou s'il est défaillant (il doit redoubler).
Mais par contre votre programme ne marche pas avec ces boutons auriez vous une solution svp ?? Quand je lance l'exécution il y a une erreur "438 propriété ou méthode non géré par l'objet"

Merci beaucoup :) !!
0
fais un test ,
remplis les cellules A1 et A2 par le commantaire de ton choix et essaie de rentrer les nom de tes etudiants par l'userform

tu verra que les noms se suivent au fur et à mesure que tu les ajoutes

bon courage
0
Re bonjour à tous les deux !

J'avance pas mal grâce à vous deux !
Je voulais que les valeurs de mes 3 textbox et des boutons d'options se décalent vers le bas pour pouvoir enregistrer plusieurs étudiants au fichier.

Boomer j'ai fais comme tu m'as dis j'ai créer un nouveau bouton pour enregistrer les données d'un étudiant. Et je me suis servie de ton programme pour que les valeurs des boutons d'options se décalent.

f894009 avec ton programmes les valeurs de mes textbox se décalent bien pour que je puissent taper de nouvelles données.

Il me reste encore un petit problème et ce sera bon !!!
Quand je suis sur le userform, que je choisis une des deux options (admis ou défaillant), j'enregistre grâce au boutton et la valeur se décale bien vers le bas MAIS c'est les valeurs vrai (pour admis) ou faux (pour défaillant) qui se retrouvent dans la case d'en bas alors que je voudrais avoir admis ou défaillant... je ne sais pas si j'ai été claire ...

Le programme que j'ai pour l'instant est :

Range("d1").End(xlDown).Offset(1, 0).Select
Selection = OptionButton1.Value
0
Re,
il faut ajouter des conditions comme par exemple dans ton cas :

If OptionButton1 = True Then
Range("A2").End(xlDown).Offset(1, 0).Select
Selection = OptionButton1.Caption
End If
If OptionButton2 = True Then
Range("A2").End(xlDown).Offset(1, 0).Select
Selection = OptionButton2.Caption
End If


A adapter bien sur en fonction des noms de tes contrôles !
0
Je me retrouve encore avec une erreur 1004 "erreur définie par l'application ou par l'objet"... Je suis désolée de t'embêter encore avec ca mais je ne comprend pas pourquoi ca fait ça.. Tu as une idée ? Le débogage me signale une erreur aux lignes
Range("A2").End(xlDown).Offset(1, 0).Select

Merci
0
Cette erreur indique que les 2 premiere cellules ne sont pas pleines car la fonction xldown a ces limites, complete toutes les 2 premieres lignes de ton tableau entier
Exemple: De A1 à D2 ,tu mets des asterix juste pour le test apres tu mettras ce que tu veux !
autres solutions: il faut integrer la façon de faire de f894009
0
f894009 Messages postés 17268 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 29 mars 2025 1 713
12 mars 2012 à 08:15
Bonjour a vous deux
En effet si vous prenez le principe de recherche de la premiere cellule libre par le code que je vous ai propose, il n'y a pas de probleme de premieres cellules vide.

Code modifie pour les OptionButton
'exemple:
'Feuille de calcul: feuil1
'Cellules pour TextBox4: A2....Ax
' Si vous avez d'autres TextBox: B2....Bx, C2......Cx
'Ajoutez un nouveau CommandButton
Private Sub Cmd_Ok_Click()
Dim D_L_A As Integer
With Worksheets("Feuil1")
If TextBox4.Text <> "" Then
'Premiere ligne vide colonne A
D_L_A = .Range("A" & Rows.Count).End(xlUp).Row + 1
'Ecriture Ax
.Range("A" & D_L_A) = TextBox4.Text 'Nom
TextBox4.Text = "" 'RAZ TextBox4
'Si vous avez d'autre TextBoxs ajoutez les lignes ci-dessous
'----------------------------------------------
'prise en compte des OptionButton
'Code modifie propose par boomer
If OptionButton1 = True Then
.Range("A" & D_L_A) = = OptionButton1.Caption
ElseIf OptionButton2 = True Then
.Range("A" & D_L_A) = = OptionButton2.Caption
Else
End If
'----------------------------------------------
End If
End With
End Sub



Bonne suite
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 758
12 mars 2012 à 09:00
Bonjour,

Comme tu débutes sur VBA, il te faut plus d'éléments.
Par exemple, si dans ton classeur excel, dans une feuille quelconque, tu disposes d'une liste de tes élèves, je te recommande fortement l'utilisation, non pas d'un textbox pour saisir leurs noms, mais d'une combobox ou d'une listbox dans ton userform.
Ensuite, tu dis j'ai :
3 textbox.
Une pour le nom Ok. Mais les deux autres? Pour des notes? des dates? Il faut faire atention aux types de données que l'on demande de saisir dans un textbox.
Exemple pour les nombres, il te faut savoir qu'un textbox, par défaut, renvoie du texte, même si tu y as saisi un nombre... (Format String)

0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 758
12 mars 2012 à 09:54
Re-

Comme il vaut mieux que tu disposes de toutes les infos avant de réaliser ton projet, je t'ai, vite fait, bricolé un exemple des possibilités dont tu peux disposer.
Il en existe bien sur d'autres mais ces 3 exemples sont, à mon avis, ce que tu cherches à réaliser.
Le classeur proposé
0
Bonsoir à tous !

C'est bon j'ai combiné vos réponses et je suis arrivée à quelque chose de concluant !
Donc je vous remercie tous, boomer, f894009 et pijaku pour vos bonnes idées et les programmes que vous m'avez fournis !
Pikaju le classeur que tu m'as fourni est super ! Comme je fais ca pour un travail que je devais rendre il y a quelques jours j'ai envoyé ma version modifiée, mais si j'avais eu plus de temps j'aurais creusé ton idée. D'ailleurs si tu permet je vais conserver le fichier que tu m'as envoyé car je suis sure qu'ile me sera utile pour un prochain travail sur VBA.

Encore merci à tous :) !!!

Bonne soirée
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 758
13 mars 2012 à 08:40
Salut,
Comme je fais ca pour un travail que je devais rendre il y a quelques jours j'ai envoyé ma version modifiée, mais si j'avais eu plus de temps j'aurais creusé ton idée
J'espère que tu n'es pas sans savoir que de nombreux professeurs trainent par ici... Peut être le tien...
0
&lt;@MeL&gt;
13 mars 2012 à 22:51
Hahaha !!
Heureusement que je n'ai pas décidé d'envoyer le classeur que tu m'as donné à la place de mon devoir alors !
0
salut,
as tu essayé de mettre la textbox en mode mulitiligne ?
-1
&lt;@MeL&gt;
11 mars 2012 à 00:37
Salut Boomer,

En fait je crois que la fonction multiligne n'est pas ce que je recherche. J'ai essayé de la mettre.
Si j'ai bien compris multiligne c'est pour pouvoir par exemple sauter des lignes mais rester dans la meme case d'excel ou du userform ?

Moi ce que je voudrais c'est un programme qui me permette de taper les données du premier étudiant, qu'elles rentrent sur la ligne 2 de la feuille excel puis pouvoir taper les données d'un 2eme étudiant (jusqu'à' a 5) pour qu'elles s'inscrivent cette fois juste en dessous des premières, dans la ligne 3.

Sachant que sur mon userform j'ai :
3 textbox
2 option button
1 command button qui ferme le userform

Merci pour l'aide :) !!
0