Erreur de code

  • Initiateur de la discussion Jean67
  • Date de début
J

Jean67

Guest
Bonjour le forum

Voici un petit fichier avec un code que j'ai copie dans un autre fichier mais il ne fonction pas bien. si quelq'un peut voir les ereurs
merci de votre aide. [file name=Saisi_vacation.zip size=16562]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Saisi_vacation.zip[/file]
 

Pièces jointes

  • Saisi_vacation.zip
    16.2 KB · Affichages: 7

Gorfael

XLDnaute Barbatruc
Salut
Vu ce qui reste de code, je suppose que l'erreur est sur le déclalage de la sauvegarde de USF1
Private Sub cmdEnvoi_Click()
Dim Lig As Integer, i As Variant
With Sheets('SAISI')
Lig = .Range('B65536').End(xlUp).Row + 1
.Cells(Lig, 2) = Me.textBox1
.Cells(Lig, 3) = Me.ComboBox1
.Cells(Lig, 4) = Me.textBox2
.Cells(Lig, 5) = Me.textBox3
.Cells(Lig, 6) = Me.textBox4
.Cells(Lig, 7) = Me.textBox5
.Cells(Lig, 8) = Me.TextBox6
Cells(ligne,colonne), donc tu range la date dans la colonne B, au lieu de la colonne A.
Quand c'est ce genre d'erreur, tu mets en texte le nom de ce que tu veux saisir, et tu ragardes où il se retrouve. Exemple 3me case (Taux:) tu mets TAUX, Case 'Total astreinte', tu mets astreinte, et tu regardes ton résultat :
TAUX se retrouve en colonne D au lieu de C, et astreinte en E au lieu de D. Il te reste plus qu'à regarder la ligne qui contient Textbox2 et à l'affecter à la TextBox3.
Private Sub cmdEnvoi_Click()
Dim Lig As Integer, i As Variant
With Sheets('SAISI')
Lig = .Range('B65536').End(xlUp).Row + 1
.Cells(Lig, 1) = Me.textBox1
.Cells(Lig, 2) = Me.ComboBox1
.Cells(Lig, 3) = Me.textBox2
.Cells(Lig, 4) = Me.textBox3
.Cells(Lig, 5) = Me.textBox4
.Cells(Lig, 6) = Me.textBox5
.Cells(Lig, 7) = Me.TextBox6
et le tour est joué.

Petit conseil : si tu avais renommé tes contrôles ça te simplifierais la tâche :
il est plus facile de savoir quel champ doit renseigner TextAstreinte plutôt que TextBox2
A+
 

Gorfael

XLDnaute Barbatruc
Salut Jean67
Des fois, un peu de patience est nécessaire (surtout sur un forum.
Pas de changement de date, parce que tu ne dis pas à Excel de la changer
Userform2
Code:
Private Sub Calendar1_Click()
Dim X As Variant 
X = Me.Calendar1 
'les 2 lignes au-dessus me servent de Test
UserForm1.textBox1 = Me.Calendar1
End Sub
Les 2 premières lignes m'ont servit à vérifier ce qui se passait, en mettant un point d'arrêt sur la deuxième. tu peux les effacer.

Question : ton niveau en VBA ? Si tu n'es pas débutant, dis-le, sinon, quelques conseils.
macro : Private Sub cmdEnvoi_Click()
Lig = .Range('B65536').End(xlUp).Row + 1
Tu recherches la dernière cellule vide, en partant du bas. C'est une méthode qui en vaut une autre. Une fois que tu l'as trouvée, tu copies les cases de ton userform1 dans la ligne.
Mon problème est que tu autorises l'envoi, sans vérifier avant, au minimum que la valeur qui va être stockée en B est valide. Ce qui fait que si tu envoi un deuxième formulaire, il va écraser la ligne que tu viens de créer.
Je sais que je suis un vieux clown (pas triste quand même) mais quand je fais un formulaire de saisie, avant d'enregistrer les données, je valides celles-ci.
Comme je ne connait pas l'utilisation que tu vas faire de ton fichier, je suis mal placé pour te dire quoi faire.
Mais, pour travailler souvent au clavier, sans lever les yeux, je sais qu'on fait des erreurs bêtes.
Par exemple sur ton calendrier, j'ai sélectionné l'année et entré 2006 au clavier et c'est 2000 qui a été sélectionée, au lieu de 2006.
C'est pour éviter ce genre d'erreur que tu dois valider tes données, soit à chaque saisie, en sortant du contrôle par exemple, soit quand tu appuies sur envoi. Mais, c'est ton problème :p non ?
A+

Message édité par: Gorfael, à: 03/05/2006 12:03
 
J

Jean67

Guest
Salut Gorfael

Merci pour les explication mais je suis bien un debutant pour les codes car je fait un copier coller dans d'autre presentation sur le forum.
Le but du fichier, la saisi des astreintes avec le cumul des saisies, car la date quand j'ouvre le fichier m'ait pas la même que sur la feuille
alors il faut que je puisse le changer.
 

Gorfael

XLDnaute Barbatruc
Jean67 écrit:
Salut Gorfael

Merci pour les explication mais je suis bien un debutant pour les codes car je fait un copier coller dans d'autre presentation sur le forum.
Le but du fichier, la saisi des astreintes avec le cumul des saisies, car la date quand j'ouvre le fichier m'ait pas la même que sur la feuille alors il faut que je puisse le changer.
Salut
Tu veux faire un récapitulatif des astreintes, et la saisie ne se fait pas forcément à la date de l'astreinte ?
Tu peux faire une vérification sur la date avec une boite de message indiquant que la date est inférieure à la dernière date saisie par exemple, ou qu'il y a une différence de plus de 7, 15 jours par rapport à la date du jour de saisie. Avec une possibilité de modifier la date, ou de l'archiver normalement.

Tu peux vérifier que date+nom pompier n'existe pas déjà, etc...

Le but est que ce qui s'incrit sur la feuille ne soit pas incohérent. Et pense que si toi tu sais ce que tu dois mettre, ton fichier sera forcément à un moment ou un autre, utilisé par quelqu'un qui ne le saura pas. Et les erreurs n'arrivent jamais quand tout le monde est calme, sans urgence, et que tu as tout ton temps pour vérifier soigneusement que tout est juste.
Et avant de te lancer dans un tas de macros, renomme chacun des contrôles avec un nom explicite. T'as pas beaucoup de code, donc c'est maintenant qu'il faut le faire. Quand t'auras des centaines de lignes de code, tu ne pourras plus.
Et SaisieAstreinte est nettement plus parlant que Userform1 ou SaisieDate que TextBox1

Pour avoir souvent travaillé sous Access (base de connée d'Office), ou tu crées des dizaines de formulaires qui contiennent des tas de contrôles, quand tu te remets sur le code 6 mois plus tard pour implementer une nouvelle fonctionnalité, si tu n'as pas des noms qui t'orientent, tu passes des jours pour retrouver ce que tu dois faire, et surtout, où est cette #CENSURÉ# de #CENSURÉ# d'erreur de #CENSURÉ#.
Le temps que tu perds au départ, tu le regagnes rapidement sur la construction de tes codes, alors fais-le rapidement.
A+
 

Discussions similaires

Réponses
34
Affichages
944
Réponses
6
Affichages
421

Statistiques des forums

Discussions
312 338
Messages
2 087 397
Membres
103 536
dernier inscrit
komivi