Aide pour macros Excel: remplir un tableau a partir d'une fenetre

Mais pourquoi il doit y avoir le meme code dans la feuil1 et sur le clic du bouton?

J’ai utilisé le bouton qu’on crée a partir de l’onglet Developpeur -> Inserer.

Euh ça sert a quoi de reinitialiser le code? Je vois aucune difference entre quand je le fesait pas et maintenant :confused:

Tout dépend du type de bouton que tu emploies.
Comme je te l’ai dit, dans ton cas, tu n’as pas à utiliser cette méthode puisque tu passes par une macro associée

Quand tu as une erreur, le code se bloque mais ne se termine pas ; et tant que tu ne l’as pas réinitialisé, tu ne peux pas le redémarrer correctement ; il cherche à reprendre là où il s’est arrêté.
Ceci dans le cas où tu as choisi deboguer dans la fenêtre d’erreur, si tu as choisi Fin, le programme se réinitialise tout seul.

Quand j’ai une erreur, je clique sur déboguer, je modifie le code, je ferme la fenetre et ça m’éteint tout de suite le débogueur. Je suppose que ça revient au meme.

Sinon t’as pas une idée pour ce bordel? J’ai entendu sur un forum un truc sur le CCur a la place des Value, ça te parle toi en tant que connaisseur?

On en est au point où on ne plus faire grand chose sans le classeur complet.
Je t’envoies une adresse en MP ; par contre, je ne sais pas quelle version tu as mais il faut que le fichier soit lisible en excel 2003

J’ai testé le fichier que tu m’as envoyé par mail.
Il fonctionne très bien

Le seul moyen que j’aie trouvé pour avoir le message d’erreur que tu mentionnes est de provoquer une faute volontaire (genre entrer des valeurs non numériques) et faire ensuite abandonner.

Effectivement, dans ce cas, tu perds la référence à la variable R, et tu ne la retrouveras qu’à la prochaine ouverture du classeur, (ce qui t’oblige le fermer et à le rouvrir).

Il existe des solutions palliatives, mais qui vont compliquer le code.
Si tu as fait ce développement à titre d’exercice tu peux en rester là, sinon il faut décider de la nouvelle manière de traiter la variable

Tu veux dire que chez toi il t’as rentré les valeurs direct dans le tableau sans broncher quand t’as fais OK?

Jme demande aussi si faut mettre 1,53 ou 1.53 pour la textbox5.

S’il faut compliquer le code chui pret a le faire. Bon faut pas que ça devienne de la taille d’un dico non plus :slight_smile:

Oui, pas de problème, tant que les données sont cohérentes (pas de lettres, par exemple, dans l’entrée)

Je pense que les deux doivent fonctionner, c’est à tester.
De toute manière, Excel est obligé de faire une conversion, puisque tu saisis du texte que tu utilises ensuite comme des nombres, donc il reste juste à vérifier comment il interprète les points et les virgules au moment de cette conversion.
De toute manière, si tu veux faire quelque chose qui tienne la route, il faudra tôt ou tard que tu insères une fonction de vérification de cohérence de tes entrées, pour que le programme ne plante pas sur une simple erreur de saisie.

Ce n’est pas très long.
Il va falloir redéfinir la variable R à chaque utilisation, mais changer son emplacement à chaque fois pour ne pas écraser la ligne précédente
1- tu supprimes la fonction Workbook_Open()
2- dans le module, tu supprimes la déclaration publique de R, et la fonction init()
3- Tu modifies le code de Calcul de la manière suivante :

Sub Calcul()
 Set R = ActiveSheet.Range("A1")
While R.Value <> ""
  Set R = R.offset(1)
wend

 R.Value = (UserForm1.TextBox1.Value / UserForm1.TextBox3.Value) * UserForm1.TextBox5.Value
 R.Offset(0, 1).Value = UserForm1.TextBox1.Value / 12
 R.Offset(0, 2).Value = UserForm1.TextBox4.Value * (UserForm1.TextBox1.Value / 12)
End Sub

Hey c’est cool ton truc, maintenant ça marche nikel :stuck_out_tongue:

Sauf qu’il reste encore un ptit pepin. Le dernier calcul a faire est assez complexe, et je crois qu’il passe mal. Il me sort un “Objet requis”.

Voila la ligne: (quand je l’enleve le programme marche parfaitement)

R.Offset(0, 3).Value = (UserForm1.TextBox4.Value * (UserForm1.TextBox1.Value / 12)) - (((UserForm1.TextBox1.Value / UserForm1.TextBox3.Value) * UserForm1.TextBox5.Value) * (UserForm1.TextBox1.Value / 12) + UserForm.TextBox2.Value)

Perso je vois pas d’erreurs, y’a le bon nombre de parentheses et le code est bon. Le truc c’est que cette formule utilise des valeurs qui sont calculées juste avant, donc chui obligé de mettre la formule complete du calcul precedent. A moins qu’on puisse utiliser une fonction qui renvoie directement a la case du tableau? (je sais pas si c’est tres clair^^)
Edité le 13/03/2008 à 12:34

Tu n’as pas de formulaire nommé UserForm, c’est UserForm1 qu’il faut mettre

Alala ouep, une ptite erreur de frappe et tout merde!

Ben maintenant ça marche nikel, reste plus qu’a faire une ptite mise en page et c’est fini. Un grand merci a toi pour toute ton aide, sans ça j’en serais encore a chercher comment faire une fenetre :lol:

Une derniere ptite info, comment on fait pour que la fenetre se ferme apres avoir cliqué sur OK? Je sais pas si je l’integrerais, juste pour ma culture perso^^

Quand tu parles de fermer la fenêtre, tu veux dire le frmulaire ?
Il faut le décharger
Tu peux le faire avec le bouton OK
Private Sub CommandButton1_Click()
Calcul
Unload Me
End Sub

ou avec un autre bouton que tu vas par exemple appeler Fermer
Private Sub Fermer_Click()
Unload Me
End Sub

Ca te permet de conserver la possibilité de saisies multiples

En ce qui concerne une de tes questions précédentes concernant l’emploi du point ou de la virgule pour la saisie, tout dépend de tes options régionales, mais si tu as un excel français et windows avec l’option français validée, tu risque de devoir utiliser exclusivement la virgule.

Parfait, merci encore. Bon ben j’aurais appris pas mal de trucs ici, j’hésiterais pas a revenir si j’ai encore un blem :stuck_out_tongue:

Bye!

Bonjour,

Je débute sous visuabasic. Donc j’ai cherché un peu sur le net les tutos qui pourraient ressembler à mon besoin. Ici en l’occurrence.

J?espère que quelqu?un pourra m?aider sur le classeur que je veux mettre en place. Je le simplifie ici pour l’exemple :

  • Une feuille base de données avec la liste des ventes (colonne 1 = reference produit)
  • Sur une autre feuille 2 boutons (le premier pour saisir le champ référence de mon tableau et le 2e de validation pour insérer les données dans le tableau).

Au final, j’aurai évidemment plus de colonnes…

En suivant ce tuto, j?ai créé :

  • une feuille de calcul. Ma future base de données
  • un UserForm, avec mes champs d’entrée et mon bouton de validation
  • un code VBA directement dans l’objet où il est utilisé donc pour moi la feuille et le formulaire.

1- Création du formulaire
Dans Visual Basic, sous mon projet j?ai inséré un userform.
Je l?ai ensuite remplis avec mes boutons nécessaires puis un bouton de commande (CommandButton1)

2 Code de la feuille
Pour qu’elle se crée automatiquement à l’ouverture, j?ai utilisé l’évènement SurActivation (Worksheet_Activate())
Dans le squelette de la fonction, j?ai rajouté le code
set R = activesheet.range(“A1”)

3 Code du formulaire
Sur user UserForm, j?ai mis le code dans le squelette de l’évènement
R.Value = UserForm1.TextBox1.Value
et quand mes calculs sont tous retranscrits, je change de ligne
Set R = R.offset(1)

Ensuite je suis un peu bloqué. Comment retrouver mes boutons sur le tableau excel ?
Excel me remarque que je ne peux pas enregistrer mon projet sans code VBA?
Quelqu?un pourrait m?aider, s?il vous plaît.

Je vous serais très reconnaissant

Merciiiiiiiiiiiii :-(:

Je te suggère de créer un nouveau topic.

Nouveau problème = Nouveau topic.

Merci d’avance :wink:

(et non, je n’ai pratiquement aucune connaissance en VisualBasic, donc je ne saurais t’aider !).