Code pour détecter un changement à l'intérieur d'une cellule excel [Résolu]

cs_jordinette 134 Messages postés mercredi 2 mars 2005Date d'inscription 5 avril 2007 Dernière intervention - 3 mars 2005 à 08:55 - Dernière réponse : cs_jordinette 134 Messages postés mercredi 2 mars 2005Date d'inscription 5 avril 2007 Dernière intervention
- 3 mars 2005 à 17:01
Bonjour à tous!
Je dois manipuler deux classeur Excel avec une macro, si une cellule de la colonne B est modifier dans le classeur 1 je dois insérer une nouvelle ligne dans le classeur 2. Insérer une ligne ce n'est pas difficile, mais je n'arrive pas a trouver comment détecter la modification d'une cellule dans une colonne bien précise.
Merci d'avance pour votre aide.
Bonne journée
Jordinette
Afficher la suite 

4 réponses

mrdep1978 402 Messages postés jeudi 25 novembre 2004Date d'inscription 7 juin 2009 Dernière intervention - 3 mars 2005 à 12:30
+3
Utile
Tu ne dois pas avoir de code dans le classeur 2.
Depuis ton classeur 1, tu as :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim li_Ligne As Integer
'Si on saisit dans la colonne 3
If Target.Column = 3 Then
'Bloque le rafraichissement de l'écran pendant qu'on joue avec les "Activate"
Application.ScreenUpdating = False
With Workbooks("Classeur2")
'Sélectionne le classeur "Classeur2" -> nécessaire pour utiliser "Selection"
.Activate
'Détermine la ligne suivante
li_Ligne = Selection.Row + 1
'Selectionne une cellule de la ligne en prévision du déclenchement suivant
.ActiveSheet.Cells(li_Ligne, 1).Activate
'Resélectionne le classeur actuel
Me.Activate
'Rafraichit l'écran
Application.ScreenUpdating = True
'Ecrit "a" dans cette fameuse ligne, colonne 1
.ActiveSheet.Cells(li_Ligne, 1).Value = "a" & li_Ligne
'Ecrit "b" dans cette fameuse ligne, colonne 2
.ActiveSheet.Cells(li_Ligne, 2).Value = "b" & li_Ligne
End With
End If
End Sub


Le seul problème est de trouver dans quel classeur tu dois écrire (ici, Classeur2)
Cette réponse vous a-t-elle aidé ?  
mrdep1978 402 Messages postés jeudi 25 novembre 2004Date d'inscription 7 juin 2009 Dernière intervention - 3 mars 2005 à 10:18
0
Utile
Tu dois utiliser soit :
- l'événement Change de l'objet Worksheet de la feuille dans laquelle tu saisis.
Il passe en paramètre la cellule modifiée (Target) Target.Column te renvoie le numéro de colonne de la cellule.
- l'événement SheetChange de l'objet Workbook (dans ThisWorkbook). Il récupère les modifications dans toutes les feuilles du classeur et passe en paramètre la feuille (Sh) et la cellule (Target) modifiées.
cs_jordinette 134 Messages postés mercredi 2 mars 2005Date d'inscription 5 avril 2007 Dernière intervention - 3 mars 2005 à 11:57
0
Utile
Euh oki! merci pour ton aide!
Mais comment je relie les deux classeurs car en VBa j'ai pas réussie a faire un module commun à tout les classeurs ouvert? car j'ai réussie a faire une détection de changement à l'interieur d'une cellule, mais j'arrive po a faire k'une varible Changement, ke je met à True lorsqu'il ya un changement, soit vue par l'autre classeur. Genre:
classeur1.changement = true

sur le classeur2 mettre:
if changement = true then
"ajouter une ligne sous la cellule active"
end if

j'espère que c'est compréhensible.
Bonne journée
Jordinette
cs_jordinette 134 Messages postés mercredi 2 mars 2005Date d'inscription 5 avril 2007 Dernière intervention - 3 mars 2005 à 17:01
0
Utile
Merci pour ton aide.j'en ai encore pour quelques heures de galères visiblement, tout ça parce que VBA ne pe po généré un module global et que lon pe po préciser le classeur de l'éventement à suivre... c'est relou vive VB tout court!
bonne soirée
Jordinette

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.