Rapport de message :*
 

Re: envoyer les infos d'un userform vers un tableau

Titre du sujet : Re: envoyer les infos d'un userform vers un tableau
par Guy le 06/09/2009 13:32:24

Oh là là,

Bon, reprenons lentement. 

Tu as copié du code à partir de l'exemple envoyé la semaine dernière, parfait.
Seulement il semble que ton presse-papier présente quelques idiosyncrasies, je m'explique.

Tu as nommé la zone de texte de la date TextDate, or dans le code on trouve une procédure événementielle nommée txtDate_Enter(). Pas de chance que ça fonctionne sauf si tu renomme la zone de texte en txtDate ou bien la procédure en TextDate_Enter().

De la même manière et avec le même presse-papier tu as nommé le bouton d'enregistrement CommandButton1. Tu ne l'as pas nommé en fait puisque c'est un nom de contrôle par défaut. Or il eut fallu qu'il s'appelât cmdEnregistrer comme dans le classeur exemple, autrement soit Badaboum soit rien du tout, selon.

Itou aucun module modEnregistrer n'est présent dans ton code: tu as écrit Enregistrer.
L'appel modEnregistrer.Enregistrer ColControle ne risque pas d'avoir grand effet sinon de provoquer, là encore, une erreur à l'exécution.

Aussi aucune référence à mDF_XLCalendar n'est présente ce qui entraînera une erreur d'exécution quand tu auras fini de nettoyer le copier-coller approximatif auquel tu t'es livré.


Dans le code la formule
  NoColonne = WorksheetFunction.Match(Controle.Tag, PlageBase.Row(1), 0)
n'a aucun sens. Elle aurait dû (si ton presse-papier fonctionnait comme il faut) s'écrire
  NoColonne = WorksheetFunction.Match(Controle.Tag, PlageBase.Rows(1), 0)

Et re-belote : dans le code de la procédure Enregistrer du module modEnregistrer (correctement renommé!) que peut bien vouloir dire le truc suivant :
 With UserForm1
 
   txtDate.Text = vbNullString
   txtmontant = vbNullString
   cboCATEGORIES.ListIndex = 0
   cbotypedepaiment.ListIndex = 0
   End With
      End Sub
 
Rien, sinon encore des erreurs en cascades. Le code original se lisait comme suit :


 With frmExemple1
   
    .txtDate.Text = vbNullString
    .txtMontant = vbNullString
    .cboCategorie.ListIndex = 0
    .cboTypeDePaiement.ListIndex = 0
   
   
  End With
 
Le point devant les différents noms de contrôles n'est pas là pour faire plaisir à Grévisse ou à Druon; il est impérativement prescrit pour que le bon contrôle soit référencé! Sans parler des noms de contrôles qui ne correspondent pas pantoute (Québécisme abstrait et conceptuel : qui représente le néant qui se trouve à l'intérieur du vide lui-même et réciproquement.)

À noter ausssssi que ton presse-papier s'en est donné à coeur joie une fois de plus.

La plage nommée du classeur tableaudedonnée se retrouve nommée tableaudedonnées (chercher l'erreur) dans le code et elle est tout sauf dynamique, lors messire BadaBoum! encore.

Note : «From a developer's point of view, copy/paste is just a nightmare waiting to happen.» et dans ton cas ça n'a guère mis longtemps.

Je laisse à ta patience et à ta détermination le soin de semoncer vertement le presse-papier de ton poste et de revenir quand il aura compris.

«Labor omnia vincit improbus»
Un travail acharné vient à bout de tout

Guy