Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2955 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA Excel] Procédure redondante dans Userform

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA Excel] Procédure redondante dans Userform

n°1843114
deejaynucl​ear
Posté le 26-01-2009 à 13:53:04  profilanswer
 

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 !
 

mood
Publicité
Posté le 26-01-2009 à 13:53:04  profilanswer
 

n°1843118
Ptit loup
Quand c'est flou, y'a un loup
Posté le 26-01-2009 à 13:56:57  profilanswer
 

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

n°1843157
deejaynucl​ear
Posté le 26-01-2009 à 14:34:06  profilanswer
 

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

n°1843185
deejaynucl​ear
Posté le 26-01-2009 à 15:01:15  profilanswer
 

pas exemple lorsque je rentre 150 dans la case valeur de mon userform, cela me donne A1=1, A2= 15 et A3= 150

n°1843198
Ptit loup
Quand c'est flou, y'a un loup
Posté le 26-01-2009 à 15:09:38  profilanswer
 

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.

n°1843200
Ptit loup
Quand c'est flou, y'a un loup
Posté le 26-01-2009 à 15:10:11  profilanswer
 

Juste pour être certain... ton "userform"... c'est quoi pour toi ?
Une zone excel, une boîte de dialogue, autre ?

n°1843211
deejaynucl​ear
Posté le 26-01-2009 à 15:26:17  profilanswer
 

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
 
http://img231.imageshack.us/img231/1792/sanstitrelu3.th.jpg

n°1843232
Ptit loup
Quand c'est flou, y'a un loup
Posté le 26-01-2009 à 15:55:06  profilanswer
 

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"...

n°1843238
deejaynucl​ear
Posté le 26-01-2009 à 15:59:59  profilanswer
 

en mettant un "enter" cela ne marche pas mais avec un "afterupdate" ceci fonctionne !
 
merci pour tous !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA Excel] Procédure redondante dans Userform

 

Sujets relatifs
Une sorte de comparaison d'un fichier excel et une table access.[VBA] Remplissage de cellules très long en temps
programmer des dates sur VBAselection entre deux textes (dans word a partir d'excel)
[ACCESS] Erreur de compilation requete VBAaide excel annuaire
Lister les différents champs d'un parametre d'une fonction. Possible ?Importation des données depuis SQL vers EXCEL
Gestion de saut de page ACCESS/VBA 
Plus de sujets relatifs à : [VBA Excel] Procédure redondante dans Userform


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR