Probleme Macro sous Excel 2007

Résolu/Fermé
arsenik59fr Messages postés 118 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 2 juillet 2019 - 10 déc. 2009 à 01:42
arsenik59fr Messages postés 118 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 2 juillet 2019 - 10 déc. 2009 à 14:15
Bonjour,

Tout d'abord merci à ceux qui vont se pencher sur le sujet, voila je vous explique mon probléme.
Je suis novice sur Excel et ses macros, j'ai décidé de me faire une petite liste de tout mes fichiers media (AVI/MP3/ect...) que je posséde. Donc je me crée un petit tableau basique (colonne pout titre, taille, qualité, format..) avec un bouton commande en VBE sur ma feuille de calcule qui me lance ma macro userform. Celle-ci est composée de champs de saisie, listes déroulantes, et 2 boutons commande"ajouter" et "fermer". Elle a pour fonction de rentrer toutes les infos media dans ma feuille de calcule "liste". Aprés avoir clické sur ma commande "ajouter" et rentrer ces infos, la macro est sensé vider les champs de saisie( mes textbox) de ma userform et placer le curseur( si je peux dire cela ) à la première ligne vierge de mon liste pour les infos avenir.

Le problème c'est qu'elle vide bien mes 2 premiers champs de saisie et block (je pense) sur mes 4 liste déroulantes (mes combobox) chacune composé d'une ligne vierge suivie de différente info et me met un message d'erreur que j'ai réussie à résoudre, et me laisse mes 3 autres champs de saisie suivant avec les infos précédentes.

A savoir que mes infos sont bien inséré dans ma liste (meme quand j'avais mon message d'erreur, il me suffisait de clické sur annuler et il faisait le travail quand meme).

Je suis certain que ca doit etre une mauvaise frape de syntaxe, ou fonction dans mon code source.
Pouvez-vous me venir en aide SVP ???

Voici le code en question :

Private Sub Cmdajouter_Click()
Dim numlignevide As Integer
'On active la feuille "Liste"
Worksheets("Liste").Activate
'On trouve la dernière ligne vide du tableau et on enregistre le numèro de la ligne dans la variable numlignevide
numlignevide = ActiveSheet.Columns(2).Find("").Row
'On vérifie que les champs obligatoires sont correctement remplis
If Txtnom.Text = "" Then
MsgBox "Veillez remplire le nom de votre film", vbCritical, "champs manquant"
Txtnom.SetFocus
ElseIf Txttaille.Text = "" Then
MsgBox "Veillez remplire la taille de votre film", vbCritical, "champs manquant"
Txttaille.SetFocus
ElseIf ComboBoxunite.Text = "" Then
MsgBox "Veillez remplire le format de votre film", vbCritical, "champs manquant"
ComboBoxunite.SetFocus
ElseIf ComboBoxformat.Text = "" Then
MsgBox "Veillez remplire la langue de votre film", vbCritical, "champs manquant"
ComboBoxformat.SetFocus
ElseIf ComboBoxlangue.Text = "" Then
MsgBox "Veillez remplire la langue de votre film", vbCritical, "champs manquant"
ComboBoxlangue.SetFocus
ElseIf ComboBoxqualite.Text = "" Then
MsgBox "Veillez remplire la langue de votre film", vbCritical, "champs manquant"
ComboBoxqualite.SetFocus
Else
'On remplis les donnèes dans notre tableau
ActiveSheet.Cells(numlignevide, 2) = UCase(Txtnom.Text)
ActiveSheet.Cells(numlignevide, 3) = Txttaille.Text
ActiveSheet.Cells(numlignevide, 4) = ComboBoxunite.Text
ActiveSheet.Cells(numlignevide, 5) = ComboBoxformat.Text
ActiveSheet.Cells(numlignevide, 6) = ComboBoxlangue.Text
ActiveSheet.Cells(numlignevide, 7) = ComboBoxqualite.Text
ActiveSheet.Cells(numlignevide, 8) = Txtacteur.Text
ActiveSheet.Cells(numlignevide, 9) = Txtlien1.Text
ActiveSheet.Cells(numlignevide, 10) = Txtlien2.Text
'On efface le formulaire et on replace le curseur sur le premier champ (nom)
Txtnom.Text = ""
Txttaille.Text = ""
ComboBoxunite.Text = ""
ComboBoxformat.Text = ""
ComboBoxlangue.Text = ""
ComboBoxqualite.Text = ""

Txtacteur.Text = ""
Txtlien1.Text = ""
Txtlien2.Text
End If
End Sub

Private Sub Cmdfermerer_Click()
frmnouveau.Hide

End Sub

Private Sub ComboBox4_Change()
'Appel de la procédure Liste située dans un module
Liste

End Sub


Pour info ce que j'ai mis en caractère gras c'est la ou j'avais mon message d'erreur 424 ou 385 ce matin.
A voir également:

4 réponses

Ricky38 Messages postés 4349 Date d'inscription samedi 15 mars 2008 Statut Contributeur Dernière intervention 2 novembre 2013 1 458
10 déc. 2009 à 03:25
Salut,

je ne suis pas un pro du VBA mais as tu essayé:

ComboBoxunite.Value = ""
ComboBoxformat.Value = ""
ComboBoxlangue.Value = ""
ComboBoxqualite.Value = "" 
0
Ricky38 Messages postés 4349 Date d'inscription samedi 15 mars 2008 Statut Contributeur Dernière intervention 2 novembre 2013 1 458
10 déc. 2009 à 04:04
re

J'ai essayé les deux
ComboBox1.Text = ""
ComboBox1.Value = ""

et les 2 fonctionnent très bien
la source de mon ComboBox1 est Feuil1!A1:A4
A1= vide
A2=allo
A3=test
A4=test3

Dès que je test le userform la donnée sélectionnée s'affiche sur ma feuille et la ComboBox revient à vide
0
arsenik59fr Messages postés 118 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 2 juillet 2019
10 déc. 2009 à 13:48
salut Ricky38, merci de m'aider cela fait que 2 jours que j' apprend excel, donc je n'ai pas vraiment de notion pour le language :)

J'ai rentré les [ComboBox.Value = ""] dans mon code source mais cela ne fonctionne pas quand je click sur ajout il me met un message d'erreur de compilation et me renvoi a ma commande cmdajouter_Click de mon code
:(
0
arsenik59fr Messages postés 118 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 2 juillet 2019 > arsenik59fr Messages postés 118 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 2 juillet 2019
10 déc. 2009 à 14:02
Au tant pour moi j'ai vu mon erreur.
Merci
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 689
10 déc. 2009 à 09:11
bonjour

Pour avoir un combobox sans sélection, il vaut mieux utiliser la fonction adaptée :
Me.ComboBox1.ListIndex = -1

Cela ne perturbe pas le contenu et ne joue que sur l'affichage ensuite la sélection va positionner ListIndex à la valeur choisie.
0
Gord21 Messages postés 918 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 20 mars 2013 289
10 déc. 2009 à 13:03
Bonjour,
Si ce que tu souhaites faire est vider les ComboBox, tu peux essayer :
ComboBox1.Clear

Remarque pour la forme : c'est Veuillez remplir... :-)
0
arsenik59fr Messages postés 118 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 2 juillet 2019
10 déc. 2009 à 14:15
Merci pour la remarque lol , c'est sur ca est mieux en bon français :)

je n'ai pas encore essayé ta syntaxe ma macro fonction comme ca avec le resultat que je veux mais je la retiens, la testerai dans une autre :)
merci
0