cs_jordinette
Messages postés134Date d'inscriptionmercredi 2 mars 2005StatutMembreDernière intervention 5 avril 2007
-
3 mars 2005 à 08:55
cs_jordinette
Messages postés134Date d'inscriptionmercredi 2 mars 2005StatutMembreDernière intervention 5 avril 2007
-
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
mrdep1978
Messages postés402Date d'inscriptionjeudi 25 novembre 2004StatutMembreDernière intervention 7 juin 20097 3 mars 2005 à 12:30
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)
mrdep1978
Messages postés402Date d'inscriptionjeudi 25 novembre 2004StatutMembreDernière intervention 7 juin 20097 3 mars 2005 à 10:18
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
Messages postés134Date d'inscriptionmercredi 2 mars 2005StatutMembreDernière intervention 5 avril 2007 3 mars 2005 à 11:57
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
Messages postés134Date d'inscriptionmercredi 2 mars 2005StatutMembreDernière intervention 5 avril 2007 3 mars 2005 à 17:01
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