question de Visual Basic

question de Visual Basic - Programmation

Marsh Posté le 01-08-2001 à 13:20:07    

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

Reply

Marsh Posté le 01-08-2001 à 13:20:07   

Reply

Marsh Posté le 01-08-2001 à 13:38:25    

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

Reply

Marsh Posté le 01-08-2001 à 13:44:46    

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

Reply

Marsh Posté le 01-08-2001 à 13:54:30    

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

Reply

Marsh Posté le 01-08-2001 à 14:04:29    

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

Reply

Marsh Posté le 01-08-2001 à 17:11:05    

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

Reply

Marsh Posté le 01-08-2001 à 19:04:07    

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.

Reply

Marsh Posté le 02-08-2001 à 16:45:59    

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

Reply

Marsh Posté le 02-08-2001 à 17:06:38    

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

Reply

Marsh Posté le 02-08-2001 à 17:17:34    

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

Reply

Marsh Posté le 02-08-2001 à 17:17:34   

Reply

Marsh Posté le 03-08-2001 à 14:36:15    

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

Reply

Marsh Posté le 03-08-2001 à 14:42:18    

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

Reply

Marsh Posté le 03-08-2001 à 16:47:44    

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed