Procédure redondante dans Userform [VBA Excel] - VB/VBA/VBS - Programmation
Marsh Posté le 26-01-2009 à 13:56:57
Je pense qu'en désactivant le recalcul le temps de ta saisie ça doit suffire... non ?
(ou alors j'ai pas bien compris ce que tu voulais faire... si c'est le cas, explique nous ce que tu veux faire précisément plutôt que de poste ton code VBA)
au début :
Application.ScreenUpdating = False
et la fin :
Application.ScreenUpdating = True
Marsh Posté le 26-01-2009 à 14:34:06
en fait j'ai une colonne A avec des dates et une colonne B avec des prix
la procédure rechercheA me permet de selectionner la première cellule vide de la colonne A ce qui me permet de rentrer facilement avec mon userform ma nouvelle date.
RechercheB me permet de faire la même opération mais avec des prix.
Sauf que lorsque je rentre les données dans le user form, il y a un décalage qui s'opère car les deux procédures (rechercherA et rechercheB) continuent de fonctionner et le moindre chiffre est décalé (vers le bas) d'une cellule
le
Application.ScreenUpdating je le mets comme ceci ? :
Private Sub date_VL_Change()
Call rechercheA
Application.ScreenUpdating = False
ActiveCell.Value = date_VL.Value
Application.ScreenUpdating = True
End Sub
Private Sub Valeur_VL_Change()
Call rechercheB
Application.ScreenUpdating = False
ActiveCell.Value = Valeur_VL.Value
Application.ScreenUpdating = True
End Sub
Marsh Posté le 26-01-2009 à 15:01:15
pas exemple lorsque je rentre 150 dans la case valeur de mon userform, cela me donne A1=1, A2= 15 et A3= 150
Marsh Posté le 26-01-2009 à 15:09:38
Je dois être idiot... mais tu pourrais nous faire une copie d'écran ?... et avec le résultat attendu aussi surtout.
En gros, de ce que j'en ai compris, tu as 2 colonnes A et B... et si tu rentres la valeur dans A, tu veux qu'il t'indique un truc dans B, et si tu rentres un truc dans B, tu veux qu'il t'indique un truc dans A... c'est ça ?
A mon avis, c'est plutôt ton événement "change" qui est pas adapté... en tout cas, il faut que tu ne le fasses qu'à la validation de ta cellule, pas dès le début de la frappe.
Marsh Posté le 26-01-2009 à 15:10:11
Juste pour être certain... ton "userform"... c'est quoi pour toi ?
Une zone excel, une boîte de dialogue, autre ?
Marsh Posté le 26-01-2009 à 15:26:17
j'ai modifié un peu mon code sans faire intervenir de procédure rechercheA et rechercheB.
voici le nouveau code et voici la copie écran
Private Sub date_VL_Change()
Range("A65536" ).End(xlUp).Offset(1, 0).Select
ActiveCell.Value = date_VL.Value
End Sub
Private Sub Valeur_VL_Change()
Range("B65536" ).End(xlUp).Offset(1, 0).Select
ActiveCell.Value = Valeur_VL.Value
End Sub
Marsh Posté le 26-01-2009 à 15:55:06
OKOK... et pourquoi tu ne déclenches pas tes macros sur un autre événement que le "change"...
il vaudrait mieux que tu codes qq chose sur une validation de ta cellule (genre un "on_exit" ou qq chose du style (désolé, je me souviens plus trop des événements existant)... ou sinon que tu codes ça sur la validation par la touche "entrée"...
Marsh Posté le 26-01-2009 à 15:59:59
en mettant un "enter" cela ne marche pas mais avec un "afterupdate" ceci fonctionne !
merci pour tous !
Marsh Posté le 26-01-2009 à 13:53:04
Bonjour à tous !
je suis en train de réaliser un tableau où les données seront ajoutées via un userform. voici donc le code :
Private Sub rechercheA()
LigneVideA = Cells(Rows.Count, "A" ).End(xlUp).Row + 1
Range("A" & LigneVideA).Select
End Sub
Private Sub rechercheB()
LigneVideB = Cells(Rows.Count, "B" ).End(xlUp).Row + 1
Range("B" & LigneVideB).Select
End Sub
Private Sub date_VL_Change()
Call rechercheA
ActiveCell.Value = date_VL.Value
End Sub
Private Sub Valeur_VL_Change()
Call rechercheB
ActiveCell.Value = Valeur_VL.Value
End Sub
Mon soucis est que lorsque je rentre une valeur dans la case du textbox, la valeur se décompose en plusieurs chiffres sur plusieurs lignes car la procédure rechercheA (ou B) continue de fonctionner (et recherche la cellule vide de chaque colonne). Ainsi je ne peux pas rentrer ma valeur sur la cellule vide de ma colonne A ou B.
Pouvez-vous me préciser une fonction ou une astuce ?
Merci d'avance !