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

  FORUM HardWare.fr
  Programmation

  question de Visual Basic

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

question de Visual Basic

n°50316
jujugoldma​n
Posté le 01-08-2001 à 13:20:07  profilanswer
 

quelle est la commande qui permet de voir si le contenu d'une case excel a changer ?

mood
Publicité
Posté le 01-08-2001 à 13:20:07  profilanswer
 

n°50324
remittent
Posté le 01-08-2001 à 13:38:25  profilanswer
 

Le plus simple (ne sachant pas comment est construit ton tableau ni comment sont stockée les données) c'est d'intercepter soit l'événement keypress soit le changement de focus. Là encore ça dépand de ce que tu veux faire.
Mais il y a peut être d'autre solutions

n°50327
jujugoldma​n
Posté le 01-08-2001 à 13:44:46  profilanswer
 

en fait je vais prendre un cas tt simple
on met un "1" ds la case A1
 
puis je replace le "1"  par un "2"  
 
puis j'amerais lancer une fonction (qui lance un MsgBox par exemple)  mais le message ce lance UNIQUEMEMT  si il voit que ds la case "A1" il y a un "2".  Si il y a encore un "1"  pas de changement donc  le message ne s affiche pas.
 
j espere que j ai ete assez clair?  meci pour les elements de reponse

n°50329
remittent
Posté le 01-08-2001 à 13:54:30  profilanswer
 

Si ta donnée initiale n'est pas stockée en dur je ne voit qu'un seul moyen c'est d'intercepter l'événement keypress; qd l'utilisateur prend le focus sur une case et presse une touche tu interceptes le tout etpeux donc controler s'il change le contenu ou pas.
 
Si ta donnée est stockée en dur y'a pas de pb il suffit de comparer en temps et en heure

n°50331
jujugoldma​n
Posté le 01-08-2001 à 14:04:29  profilanswer
 

en fait  je bosse pour une boite et je dois faire un devis pour des client et tt ca
 
si par exemple on change le nom d un client pendant le devis(faute d orthographe) il fo que j'alerte la personne pour qu elle resauve le tout  voila pour te mettre dans le bain
 
je pense que de comparez avec le temps semple etre une bonne idee,  les donnees du client SONT sauvegarder ds un fichier excel  mais pas par exemple le nom qui a ete modifier.
 
pourrait tu te dire comment faire avec l'heure?
 
Merci mille fois

n°50420
nur
Posté le 01-08-2001 à 17:11:05  profilanswer
 

Tu peut peut etre essayer la procedure "sub Worsheet_change(byval Target as change)"
appliquée a ta feuille de calcul  
pour ce faire tu dois aller dans l'explorateur de projet puis trouver ta feuille puis dans le code selectioner "Worksheet" et "change" avec les ascenseurs
 
au final chaque fois que tu change quelque chose dans la feuille la procédure est déclenchée

n°50441
jujugoldma​n
Posté le 01-08-2001 à 19:04:07  profilanswer
 

cool  pas  mal meme tres bien  je te dit merci. Mais si veux appliquer cette méthode uniquement a quelque case de la feuille excel  et pas a toute la feuille tu fais comment?
encore merci ca avance.

n°50713
nur
Posté le 02-08-2001 à 16:45:59  profilanswer
 

Une solution est de copîer a l'ouverture du classeur ta zone a surveiller
dans une autre feuille exemple:
 
 
 
DANS CODE FEUIL1:
 
 
Private Sub Worksheet_Change(ByVal Target As Range)
modifie = False
 
For i = 0 To 5           ' pour tester la zone A1:A6 de feuil1
 If Range("A1" ).Offset(i) <> Sheets("feuil2" ).Range("a1" ).Offset(i) Then
  modifie = True
  MsgBox ("la cellule " & Range("A1" ).Offset(i).Address & "  a changee" )
  Sheets("feuil2" ).Range("a1" ).Offset(i) = Range("A1" ).Offset(i) 'enregistre les nouveaux changements
End If
 
Next
 
End Sub
 
 
 
 
DANS CODE THISWORKBOOK:
 
 
Private Sub Workbook_Open()
' a l'ouverture du classeur
Sheets("feuil1" ).Range("a1:a6" ).Copy
Sheets("feuil2" ).Range("a1" ).PasteSpecial
 
 
End Sub

n°50722
jujugoldma​n
Posté le 02-08-2001 à 17:06:38  profilanswer
 

HOU LALA  mais c est tout bon ca merci poup le tuyau  je te test  puis je te dis si ca marche  
 
merci tout plein

n°50727
jujugoldma​n
Posté le 02-08-2001 à 17:17:34  profilanswer
 

en fait apres reflexion c bon mais ca reponds pas a ce que je veux.
j explique les etapes de mon probleme
1: j ouvre la feuille excel
2: je modifie une case en question ,  je sauve
3: je remodifie la meme case  
4: je veux fermer la fueille
5: un message dois venir puisque j ai modifier la case et pas encore sauver
 
 
dans ta methode ca compare  le texte a l ouverture et moi je veux savoir si on a modifier une case Apres l'ouverture
 
il doit exister une commande qui dit :
 
Si la case A1 a changer INDICE = TRUE
Et qd je ve fermer la feuille  on test la valeur de INDICE  si c'est TRUE  on envoie le message  et si c'est FALSE  on dit rien
 
Cette commande existe t-elle?  ou n importe quelle autre commande  quite a magouiller?
 
Encore Merci

mood
Publicité
Posté le 02-08-2001 à 17:17:34  profilanswer
 

n°50898
nur
Posté le 03-08-2001 à 14:36:15  profilanswer
 

SI J'AI BIEN COMPRIS CE QUE TU VEUX ALORS:
 
 
 
si tu veut seulement regarder s'il y a des changements a la fermeture du classeur tu rajoute la procédure Workbook_BeforeClose et tu met dedans le code de Worksheet_Change
 
la procedure Worksheet_Change permet bien de verifier les changements apres l'ouverture car tout changement dans feuil1 est automatiquement mis a jour dans feuil2 par:
 
Sheets("feuil2" ).Range("a1" ).Offset(i) = Range("A1" ).Offset(i)(i) 'enregistre les nouveaux changements
 
si tu veut u message seulement a la fermeture tu supprime msgbox dans Worksheet_change

n°50901
jujugoldma​n
Posté le 03-08-2001 à 14:42:18  profilanswer
 

je te rassure tu as bien compris  
ca devrait marcher...enfin  je veux dire c'est ce que je veux faire. Je le test et je te tient au courrant
en tout cas merci Beaucoup  pour ton aide

n°50959
nur
Posté le 03-08-2001 à 16:47:44  profilanswer
 

jujugoldman a écrit a écrit :

je te rassure tu as bien compris  
ca devrait marcher...enfin  je veux dire c'est ce que je veux faire. Je le test et je te tient au courrant
en tout cas merci Beaucoup  pour ton aide  




 
 
En faite pour que cela fonctione il faut remplacer ces 2 lignes dans Worksheet_change:
MsgBox ("la cellule " & Range("A1" ).Offset(i).Address & "  a changee" )
 Sheets("feuil2" ).Range("a1" ).Offset(i) = Range("A1" ).Offset
 
par :reponse=MsgBox ("la cellule " & Range("A1" ).Offset(i).Address & "  a changee Prendre en compte?",4)
 if reponse =vbYes then Sheets("feuil2" ).Range("a1" ).Offset(i) = Range("A1" ).Offset(i) 'enregistre les nouveaux changements


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  question de Visual Basic

 

Sujets relatifs
Ce site vous plait il ? question de php[Visual C++]La fonction TRACE ?
Question sur la dll de lame, ou sur les dll en généralQuestion de javascript
[flash] question ptet conne :)[C++] Question sur l'héritage
Question pour les pros du fichier *.bat (programmation)[Visual C++] A la création d'un dialogue, problème de Checkbox
[Visual C++] Bitmap en haute résolutionjavascript => question bete mais la je seche !
Plus de sujets relatifs à : question de Visual Basic


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