[resolu] Mise à jour si modification d'une feuille

Mise à jour si modification d'une feuille [resolu] - VB/VBA/VBS - Programmation

Marsh Posté le 27-04-2007 à 14:38:06    

Bonjour à tous,
 
j'ai une petite question excel enffin plus présisément vba,
précisons le contexte
j'ai une feuille j'ai des constantes dite "environnement"
une autre feuille ou je rentre certaines données dite "input data"
 
une fois que j'ai rentré mes trucs sur Input data je clique sur un bouton pour lancer des calculs.
 
jusque là tout va bien
 
le truc c'est que les données "environnement" serve à un pré-calcul qui ne se fait qu'une seule fois, quel que soit ce qu'on fait sous "input data". Il faut juste relancer ce pré-calcul en cas de modif de "environnement"
 
ce que je voudrais faire:
que excel reconnaisse que j'ai modif qqch dans "environnement"
que qd je clic sur le bouton dans "input data", il me propose de lancer le pré calcul en me disant que j'ai modif "environnement".
j'ai bien essayé :

Code :
  1. Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  2. modif = True
  3. End Sub


dans ma feuille environnement avec bien sur une initialisatio ndans workbook avec :

Code :
  1. Public modif As Boolean
  2. Private Sub Workbook_Open()
  3. modif = False
  4. End Sub


puis une petit conditionnelle dans la macro associée au bouton sous "input data"  du genre :

Code :
  1. If (modif = True) Then MsgBox "modif"
  2. End If


mais nada ça marcha pas
 
si quelqu'un à une idée ça m'aiderait pas mal
 
merci d'avance et bonne journée


Message édité par merenptah44 le 27-04-2007 à 16:31:05
Reply

Marsh Posté le 27-04-2007 à 14:38:06   

Reply

Marsh Posté le 27-04-2007 à 14:47:16    

deja peut etre est-il judicieux de définir la zone pour laquelle tu souhaites appliquer cet évènement, pas nécessaire de faire ca pour tout ton classeur, et limiter ta zone aux 5 premières colonnes et 25 premieres lignes par exemple...

Reply

Marsh Posté le 27-04-2007 à 14:58:37    

jpcheck a écrit :

deja peut etre est-il judicieux de définir la zone pour laquelle tu souhaites appliquer cet évènement, pas nécessaire de faire ca pour tout ton classeur, et limiter ta zone aux 5 premières colonnes et 25 premieres lignes par exemple...


merci pour la réponse éclaire !!
 
tu parle d'un  truc du genre :

Code :
  1. Private Sub Worksheet_SelectionChange(ByVal target As Excel.Range)
  2. target = "a1:n37"
  3. modif = True
  4. End Sub


?
 
au passage tu se étudiant où pioupiou (je connais quelqu'un qui a ce surnom)?
--------------------
EDIT:
 
le code que je viens de donner n'est pas bon
il m'affiche a1:n37 dnas les cellules que je modifie hiiiiiiiiii
 


Message édité par merenptah44 le 27-04-2007 à 15:07:45
Reply

Marsh Posté le 27-04-2007 à 15:15:01    

passe par un test du style  
if target in range("ax:zy" ) then
...........
..........
end if
 
je suis de l'Ecole Centrale d'Electronique (ECE) à Paris...

Reply

Marsh Posté le 27-04-2007 à 15:42:48    

jpcheck a écrit :

passe par un test du style  
if target in range("ax:zy" ) then
...........
..........
end if
 
je suis de l'Ecole Centrale d'Electronique (ECE) à Paris...


donc ce n'est pas celui à qui je pensais
 
au fait pb solved :

Code :
  1. Private Sub Worksheet_Change(ByVal target As Excel.Range)
  2. If not(Intersect(target, Range("a1:n37" )) Is Nothing) Then
  3. modif = True
  4. End If
  5. End Sub


 
et il suffit de déclarer modif en public mais dans un module, ce que je n'avais pas fait
 
merci pour ton coupd e main


Message édité par merenptah44 le 27-04-2007 à 16:31:39
Reply

Sujets relatifs:

Leave a Replay

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