prise en compte du changement de plusieurs valeurs
16 réponses
Xavier
bonjour à tous,
voilà mon problème
je souhaiterais déclencher une macro à chaque fois qu'une valeur est
modifiée dans une de mes feuilles.
Vous allez me dire : Facile, il y a qu'à utiliser l'événement
Worksheet_Change et le tour est joué.
Le problème c'est qu'il se peut que dans ma feuille plusieurs cellules
soient modifiées en même temps (en utilisant le copier coller par
exemple) et malheureusement l'événement Worksheet_Change ne se déclenche
qu'une fois et que pour la première cellule modifiée.
Y a t-il une astuce pour prendre en compte le changement des autres
cellules ?
Y a t-il une astuce pour prendre en compte le changement des autres cellules ?
par exemple, l'événement Worksheet_Change se déclenche au changement de a1,a10,c1,c10 '------------------------ Private Sub Worksheet_Change(ByVal Target As Range) Set plage = Range("a1,a10,c1,c10") If Not Intersect(Target, plage) Is Nothing And Target.Count = 1 Then MsgBox Target.Address End If End Sub '-------------------------- -- Salutations JJ
"Xavier" a écrit dans le message de news: 4aa22c64$0$24637$
bonjour à tous, voilà mon problème je souhaiterais déclencher une macro à chaque fois qu'une valeur est modifiée dans une de mes feuilles. Vous allez me dire : Facile, il y a qu'à utiliser l'événement Worksheet_Change et le tour est joué.
Le problème c'est qu'il se peut que dans ma feuille plusieurs cellules soient modifiées en même temps (en utilisant le copier coller par exemple) et malheureusement l'événement Worksheet_Change ne se déclenche qu'une fois et que pour la première cellule modifiée.
Y a t-il une astuce pour prendre en compte le changement des autres cellules ?
merci
Bonjour,
Y a t-il une astuce pour prendre en compte le changement des autres
cellules ?
par exemple, l'événement Worksheet_Change se déclenche au changement de
a1,a10,c1,c10
'------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Set plage = Range("a1,a10,c1,c10")
If Not Intersect(Target, plage) Is Nothing And Target.Count = 1 Then
MsgBox Target.Address
End If
End Sub
'--------------------------
--
Salutations
JJ
"Xavier" <Xavierpowaga@free.fr> a écrit dans le message de news:
4aa22c64$0$24637$426a74cc@news.free.fr...
bonjour à tous,
voilà mon problème
je souhaiterais déclencher une macro à chaque fois qu'une valeur est
modifiée dans une de mes feuilles.
Vous allez me dire : Facile, il y a qu'à utiliser l'événement
Worksheet_Change et le tour est joué.
Le problème c'est qu'il se peut que dans ma feuille plusieurs cellules
soient modifiées en même temps (en utilisant le copier coller par exemple)
et malheureusement l'événement Worksheet_Change ne se déclenche qu'une
fois et que pour la première cellule modifiée.
Y a t-il une astuce pour prendre en compte le changement des autres
cellules ?
Y a t-il une astuce pour prendre en compte le changement des autres cellules ?
par exemple, l'événement Worksheet_Change se déclenche au changement de a1,a10,c1,c10 '------------------------ Private Sub Worksheet_Change(ByVal Target As Range) Set plage = Range("a1,a10,c1,c10") If Not Intersect(Target, plage) Is Nothing And Target.Count = 1 Then MsgBox Target.Address End If End Sub '-------------------------- -- Salutations JJ
"Xavier" a écrit dans le message de news: 4aa22c64$0$24637$
bonjour à tous, voilà mon problème je souhaiterais déclencher une macro à chaque fois qu'une valeur est modifiée dans une de mes feuilles. Vous allez me dire : Facile, il y a qu'à utiliser l'événement Worksheet_Change et le tour est joué.
Le problème c'est qu'il se peut que dans ma feuille plusieurs cellules soient modifiées en même temps (en utilisant le copier coller par exemple) et malheureusement l'événement Worksheet_Change ne se déclenche qu'une fois et que pour la première cellule modifiée.
Y a t-il une astuce pour prendre en compte le changement des autres cellules ?
merci
Xavier
T'es génial merci
Jacky a écrit :
Bonjour,
Y a t-il une astuce pour prendre en compte le changement des autres cellules ?
par exemple, l'événement Worksheet_Change se déclenche au changement de a1,a10,c1,c10 '------------------------ Private Sub Worksheet_Change(ByVal Target As Range) Set plage = Range("a1,a10,c1,c10") If Not Intersect(Target, plage) Is Nothing And Target.Count = 1 Then MsgBox Target.Address End If End Sub '--------------------------
T'es génial
merci
Jacky a écrit :
Bonjour,
Y a t-il une astuce pour prendre en compte le changement des autres
cellules ?
par exemple, l'événement Worksheet_Change se déclenche au changement de
a1,a10,c1,c10
'------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Set plage = Range("a1,a10,c1,c10")
If Not Intersect(Target, plage) Is Nothing And Target.Count = 1 Then
MsgBox Target.Address
End If
End Sub
'--------------------------
Y a t-il une astuce pour prendre en compte le changement des autres cellules ?
par exemple, l'événement Worksheet_Change se déclenche au changement de a1,a10,c1,c10 '------------------------ Private Sub Worksheet_Change(ByVal Target As Range) Set plage = Range("a1,a10,c1,c10") If Not Intersect(Target, plage) Is Nothing And Target.Count = 1 Then MsgBox Target.Address End If End Sub '--------------------------
Xavier
Merci jacky, par contre je viens de me rendre compte que ça marche pas à tous les coups je m'explique
Si ce qu'il y a dans ma cells(1,1) est copié dans les cells(10,1), cells(11,1), cells(12,1) ça marche. Mon événement Worksheet_Change me donne le bon nombre de target.count ainsi que les bonnes adresses des cellules modifiées.
Par contre si je ne copie pas le contenu de ma cells(1,1) dans des cellules adjacentes (par exemple si je copie dans les cellules cells(10,1),cells(12,1), cells(14,1))mon événement Worksheet_Change me donne le bon nombre de target.count mais pas les bonnes adresses des cellules modifiées.(il donne les adresses des cells((10,1), cells(11,1) et cells(12,1))
j'aurais loupé un truc ?
Jacky a écrit :
Bonjour,
Y a t-il une astuce pour prendre en compte le changement des autres cellules ?
par exemple, l'événement Worksheet_Change se déclenche au changement de a1,a10,c1,c10 '------------------------ Private Sub Worksheet_Change(ByVal Target As Range) Set plage = Range("a1,a10,c1,c10") If Not Intersect(Target, plage) Is Nothing And Target.Count = 1 Then MsgBox Target.Address End If End Sub '--------------------------
Merci jacky,
par contre je viens de me rendre compte que ça marche pas à tous les coups
je m'explique
Si ce qu'il y a dans ma cells(1,1) est copié dans les cells(10,1),
cells(11,1), cells(12,1) ça marche. Mon événement Worksheet_Change me
donne le bon nombre de target.count ainsi que les bonnes adresses des
cellules modifiées.
Par contre si je ne copie pas le contenu de ma cells(1,1) dans des
cellules adjacentes (par exemple si je copie dans les cellules
cells(10,1),cells(12,1), cells(14,1))mon événement Worksheet_Change me
donne le bon nombre de target.count mais pas les bonnes adresses des
cellules modifiées.(il donne les adresses des cells((10,1), cells(11,1)
et cells(12,1))
j'aurais loupé un truc ?
Jacky a écrit :
Bonjour,
Y a t-il une astuce pour prendre en compte le changement des autres
cellules ?
par exemple, l'événement Worksheet_Change se déclenche au changement de
a1,a10,c1,c10
'------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Set plage = Range("a1,a10,c1,c10")
If Not Intersect(Target, plage) Is Nothing And Target.Count = 1 Then
MsgBox Target.Address
End If
End Sub
'--------------------------
Merci jacky, par contre je viens de me rendre compte que ça marche pas à tous les coups je m'explique
Si ce qu'il y a dans ma cells(1,1) est copié dans les cells(10,1), cells(11,1), cells(12,1) ça marche. Mon événement Worksheet_Change me donne le bon nombre de target.count ainsi que les bonnes adresses des cellules modifiées.
Par contre si je ne copie pas le contenu de ma cells(1,1) dans des cellules adjacentes (par exemple si je copie dans les cellules cells(10,1),cells(12,1), cells(14,1))mon événement Worksheet_Change me donne le bon nombre de target.count mais pas les bonnes adresses des cellules modifiées.(il donne les adresses des cells((10,1), cells(11,1) et cells(12,1))
j'aurais loupé un truc ?
Jacky a écrit :
Bonjour,
Y a t-il une astuce pour prendre en compte le changement des autres cellules ?
par exemple, l'événement Worksheet_Change se déclenche au changement de a1,a10,c1,c10 '------------------------ Private Sub Worksheet_Change(ByVal Target As Range) Set plage = Range("a1,a10,c1,c10") If Not Intersect(Target, plage) Is Nothing And Target.Count = 1 Then MsgBox Target.Address End If End Sub '--------------------------
Jacky
Re... Je ne suis pas sur d'avoir compris ce que tu souhaites faire. La copie d'une cellule comme démontrée dans le code exemple ne déclenche pas l'événement Worksheet_Change. Donne un exemple précis de ce que doit faire l'événement "Worksheet_Change" d'une de ces cellules sur: http://www.cijoint.fr/
-- Salutations JJ
"Xavier" a écrit dans le message de news: 4aa25551$0$9963$
Merci jacky, par contre je viens de me rendre compte que ça marche pas à tous les coups je m'explique
Si ce qu'il y a dans ma cells(1,1) est copié dans les cells(10,1), cells(11,1), cells(12,1) ça marche. Mon événement Worksheet_Change me donne le bon nombre de target.count ainsi que les bonnes adresses des cellules modifiées.
Par contre si je ne copie pas le contenu de ma cells(1,1) dans des cellules adjacentes (par exemple si je copie dans les cellules cells(10,1),cells(12,1), cells(14,1))mon événement Worksheet_Change me donne le bon nombre de target.count mais pas les bonnes adresses des cellules modifiées.(il donne les adresses des cells((10,1), cells(11,1) et cells(12,1))
j'aurais loupé un truc ?
Jacky a écrit :
Bonjour,
Y a t-il une astuce pour prendre en compte le changement des autres cellules ?
par exemple, l'événement Worksheet_Change se déclenche au changement de a1,a10,c1,c10 '------------------------ Private Sub Worksheet_Change(ByVal Target As Range) Set plage = Range("a1,a10,c1,c10") If Not Intersect(Target, plage) Is Nothing And Target.Count = 1 Then MsgBox Target.Address End If End Sub '--------------------------
Re...
Je ne suis pas sur d'avoir compris ce que tu souhaites faire.
La copie d'une cellule comme démontrée dans le code exemple ne déclenche pas
l'événement Worksheet_Change.
Donne un exemple précis de ce que doit faire l'événement "Worksheet_Change"
d'une de ces cellules sur:
http://www.cijoint.fr/
--
Salutations
JJ
"Xavier" <Xavierpowaga@free.fr> a écrit dans le message de news:
4aa25551$0$9963$426a74cc@news.free.fr...
Merci jacky,
par contre je viens de me rendre compte que ça marche pas à tous les coups
je m'explique
Si ce qu'il y a dans ma cells(1,1) est copié dans les cells(10,1),
cells(11,1), cells(12,1) ça marche. Mon événement Worksheet_Change me
donne le bon nombre de target.count ainsi que les bonnes adresses des
cellules modifiées.
Par contre si je ne copie pas le contenu de ma cells(1,1) dans des
cellules adjacentes (par exemple si je copie dans les cellules
cells(10,1),cells(12,1), cells(14,1))mon événement Worksheet_Change me
donne le bon nombre de target.count mais pas les bonnes adresses des
cellules modifiées.(il donne les adresses des cells((10,1), cells(11,1) et
cells(12,1))
j'aurais loupé un truc ?
Jacky a écrit :
Bonjour,
Y a t-il une astuce pour prendre en compte le changement des autres
cellules ?
par exemple, l'événement Worksheet_Change se déclenche au changement de
a1,a10,c1,c10
'------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Set plage = Range("a1,a10,c1,c10")
If Not Intersect(Target, plage) Is Nothing And Target.Count = 1 Then
MsgBox Target.Address
End If
End Sub
'--------------------------
Re... Je ne suis pas sur d'avoir compris ce que tu souhaites faire. La copie d'une cellule comme démontrée dans le code exemple ne déclenche pas l'événement Worksheet_Change. Donne un exemple précis de ce que doit faire l'événement "Worksheet_Change" d'une de ces cellules sur: http://www.cijoint.fr/
-- Salutations JJ
"Xavier" a écrit dans le message de news: 4aa25551$0$9963$
Merci jacky, par contre je viens de me rendre compte que ça marche pas à tous les coups je m'explique
Si ce qu'il y a dans ma cells(1,1) est copié dans les cells(10,1), cells(11,1), cells(12,1) ça marche. Mon événement Worksheet_Change me donne le bon nombre de target.count ainsi que les bonnes adresses des cellules modifiées.
Par contre si je ne copie pas le contenu de ma cells(1,1) dans des cellules adjacentes (par exemple si je copie dans les cellules cells(10,1),cells(12,1), cells(14,1))mon événement Worksheet_Change me donne le bon nombre de target.count mais pas les bonnes adresses des cellules modifiées.(il donne les adresses des cells((10,1), cells(11,1) et cells(12,1))
j'aurais loupé un truc ?
Jacky a écrit :
Bonjour,
Y a t-il une astuce pour prendre en compte le changement des autres cellules ?
par exemple, l'événement Worksheet_Change se déclenche au changement de a1,a10,c1,c10 '------------------------ Private Sub Worksheet_Change(ByVal Target As Range) Set plage = Range("a1,a10,c1,c10") If Not Intersect(Target, plage) Is Nothing And Target.Count = 1 Then MsgBox Target.Address End If End Sub '--------------------------
Re... Je ne suis pas sur d'avoir compris ce que tu souhaites faire. La copie d'une cellule comme démontrée dans le code exemple ne déclenche pas l'événement Worksheet_Change. Donne un exemple précis de ce que doit faire l'événement "Worksheet_Change" d'une de ces cellules sur: http://www.cijoint.fr/
Re...
Je ne suis pas sur d'avoir compris ce que tu souhaites faire.
La copie d'une cellule comme démontrée dans le code exemple ne déclenche pas
l'événement Worksheet_Change.
Donne un exemple précis de ce que doit faire l'événement "Worksheet_Change"
d'une de ces cellules sur:
http://www.cijoint.fr/
Re... Je ne suis pas sur d'avoir compris ce que tu souhaites faire. La copie d'une cellule comme démontrée dans le code exemple ne déclenche pas l'événement Worksheet_Change. Donne un exemple précis de ce que doit faire l'événement "Worksheet_Change" d'une de ces cellules sur: http://www.cijoint.fr/
FS
Bonsoir,
Ça se complique ton affaire ! Est-ce qu'il peut arriver que tu copies, par exemple, en sélectionnant A10, A12:A14 et A16 ? Ou est-ce que tu copies soit sur une plage d'un seul tenant (A10:A16) soit sur des cellules uniques séparées (A10, A12, A14, A16) ? Dans le deuxième cas de figure on peut trouver une solution simple mais dans le premier ça va être plus difficile.
FS -- Frédéric SIGONNEAU Modules et modèles pour Excel : http://frederic.sigonneau.free.fr/
Re... Je ne suis pas sur d'avoir compris ce que tu souhaites faire. La copie d'une cellule comme démontrée dans le code exemple ne déclenche pas l'événement Worksheet_Change. Donne un exemple précis de ce que doit faire l'événement "Worksheet_Change" d'une de ces cellules sur: http://www.cijoint.fr/
Bonsoir,
Ça se complique ton affaire !
Est-ce qu'il peut arriver que tu copies, par exemple, en sélectionnant
A10, A12:A14 et A16 ?
Ou est-ce que tu copies soit sur une plage d'un seul tenant (A10:A16)
soit sur des cellules uniques séparées (A10, A12, A14, A16) ?
Dans le deuxième cas de figure on peut trouver une solution simple mais
dans le premier ça va être plus difficile.
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
Re...
Je ne suis pas sur d'avoir compris ce que tu souhaites faire.
La copie d'une cellule comme démontrée dans le code exemple ne
déclenche pas l'événement Worksheet_Change.
Donne un exemple précis de ce que doit faire l'événement
"Worksheet_Change" d'une de ces cellules sur:
http://www.cijoint.fr/
Ça se complique ton affaire ! Est-ce qu'il peut arriver que tu copies, par exemple, en sélectionnant A10, A12:A14 et A16 ? Ou est-ce que tu copies soit sur une plage d'un seul tenant (A10:A16) soit sur des cellules uniques séparées (A10, A12, A14, A16) ? Dans le deuxième cas de figure on peut trouver une solution simple mais dans le premier ça va être plus difficile.
FS -- Frédéric SIGONNEAU Modules et modèles pour Excel : http://frederic.sigonneau.free.fr/
Re... Je ne suis pas sur d'avoir compris ce que tu souhaites faire. La copie d'une cellule comme démontrée dans le code exemple ne déclenche pas l'événement Worksheet_Change. Donne un exemple précis de ce que doit faire l'événement "Worksheet_Change" d'une de ces cellules sur: http://www.cijoint.fr/
Jacky
Bonsoir Fréderic,
A un moment j'ai pensé à un "Application.InputBox("Sélectionnez une cellule", Type:=8)" pour la plage à coller à condition qu'il n'y ait qu'un copier à la fois. Je n'arrive pas a séparer les plages de cette sélection exemple : Set CelluleAcoller = Application.InputBox("Sélectionnez une cellule", Type:=8) pour une sélection de (A10, A12, A14, A16) msgbox CelluleAcoller.address retourne $A$10, $A$12, $A$14, $A$16 sur une ligne As-tu une solution pour récupérer $a$10 dans une cellule et $a$12 dans une autre, etc..?? -- Salutations JJ
"FS" a écrit dans le message de news: OWjC%
Bonsoir,
Ça se complique ton affaire ! Est-ce qu'il peut arriver que tu copies, par exemple, en sélectionnant A10, A12:A14 et A16 ? Ou est-ce que tu copies soit sur une plage d'un seul tenant (A10:A16) soit sur des cellules uniques séparées (A10, A12, A14, A16) ? Dans le deuxième cas de figure on peut trouver une solution simple mais dans le premier ça va être plus difficile.
FS -- Frédéric SIGONNEAU Modules et modèles pour Excel : http://frederic.sigonneau.free.fr/
Re... Je ne suis pas sur d'avoir compris ce que tu souhaites faire. La copie d'une cellule comme démontrée dans le code exemple ne déclenche pas l'événement Worksheet_Change. Donne un exemple précis de ce que doit faire l'événement "Worksheet_Change" d'une de ces cellules sur: http://www.cijoint.fr/
Bonsoir Fréderic,
A un moment j'ai pensé à un "Application.InputBox("Sélectionnez une
cellule", Type:=8)" pour la plage à coller
à condition qu'il n'y ait qu'un copier à la fois.
Je n'arrive pas a séparer les plages de cette sélection
exemple :
Set CelluleAcoller = Application.InputBox("Sélectionnez une cellule",
Type:=8)
pour une sélection de (A10, A12, A14, A16)
msgbox CelluleAcoller.address retourne $A$10, $A$12, $A$14, $A$16 sur une
ligne
As-tu une solution pour récupérer $a$10 dans une cellule et $a$12 dans une
autre, etc..??
--
Salutations
JJ
"FS" <fs@news.group> a écrit dans le message de news:
OWjC%23kkLKHA.4516@TK2MSFTNGP02.phx.gbl...
Bonsoir,
Ça se complique ton affaire !
Est-ce qu'il peut arriver que tu copies, par exemple, en sélectionnant
A10, A12:A14 et A16 ?
Ou est-ce que tu copies soit sur une plage d'un seul tenant (A10:A16) soit
sur des cellules uniques séparées (A10, A12, A14, A16) ?
Dans le deuxième cas de figure on peut trouver une solution simple mais
dans le premier ça va être plus difficile.
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
Re...
Je ne suis pas sur d'avoir compris ce que tu souhaites faire.
La copie d'une cellule comme démontrée dans le code exemple ne déclenche
pas l'événement Worksheet_Change.
Donne un exemple précis de ce que doit faire l'événement
"Worksheet_Change" d'une de ces cellules sur:
http://www.cijoint.fr/
A un moment j'ai pensé à un "Application.InputBox("Sélectionnez une cellule", Type:=8)" pour la plage à coller à condition qu'il n'y ait qu'un copier à la fois. Je n'arrive pas a séparer les plages de cette sélection exemple : Set CelluleAcoller = Application.InputBox("Sélectionnez une cellule", Type:=8) pour une sélection de (A10, A12, A14, A16) msgbox CelluleAcoller.address retourne $A$10, $A$12, $A$14, $A$16 sur une ligne As-tu une solution pour récupérer $a$10 dans une cellule et $a$12 dans une autre, etc..?? -- Salutations JJ
"FS" a écrit dans le message de news: OWjC%
Bonsoir,
Ça se complique ton affaire ! Est-ce qu'il peut arriver que tu copies, par exemple, en sélectionnant A10, A12:A14 et A16 ? Ou est-ce que tu copies soit sur une plage d'un seul tenant (A10:A16) soit sur des cellules uniques séparées (A10, A12, A14, A16) ? Dans le deuxième cas de figure on peut trouver une solution simple mais dans le premier ça va être plus difficile.
FS -- Frédéric SIGONNEAU Modules et modèles pour Excel : http://frederic.sigonneau.free.fr/
Re... Je ne suis pas sur d'avoir compris ce que tu souhaites faire. La copie d'une cellule comme démontrée dans le code exemple ne déclenche pas l'événement Worksheet_Change. Donne un exemple précis de ce que doit faire l'événement "Worksheet_Change" d'une de ces cellules sur: http://www.cijoint.fr/
Xavier
bonsoir frederic, ben oui je crains que cela se complique car je peux copier une cellule vers plusieurs celles en même temps mais qui peuvent être répartie aléatoirement A10, A16, A17, A32,...
Je pensais (naïvement) que le range target de l'événement Worksheet_Change avait les références de toutes les cellules modifiées mais bizarement il me sort le bon nombre mais pas les bonnes références (sauf quand les cellules modifiées sont adjacentes). Bug d'Excel ?
Pensez vous qu'il existe une solution ou dois je abandonner l'idée d'utiliser l'événement Worksheet_change pour répondre à mon pb?
Merci pour tout
Xavier
FS a écrit :
Bonsoir,
Ça se complique ton affaire ! Est-ce qu'il peut arriver que tu copies, par exemple, en sélectionnant A10, A12:A14 et A16 ? Ou est-ce que tu copies soit sur une plage d'un seul tenant (A10:A16) soit sur des cellules uniques séparées (A10, A12, A14, A16) ? Dans le deuxième cas de figure on peut trouver une solution simple mais dans le premier ça va être plus difficile.
FS
bonsoir frederic,
ben oui je crains que cela se complique car je peux copier une cellule
vers plusieurs celles en même temps mais qui peuvent être répartie
aléatoirement A10, A16, A17, A32,...
Je pensais (naïvement) que le range target de l'événement
Worksheet_Change avait les références de toutes les cellules modifiées
mais bizarement il me sort le bon nombre mais pas les bonnes références
(sauf quand les cellules modifiées sont adjacentes). Bug d'Excel ?
Pensez vous qu'il existe une solution ou dois je abandonner l'idée
d'utiliser l'événement Worksheet_change pour répondre à mon pb?
Merci pour tout
Xavier
FS a écrit :
Bonsoir,
Ça se complique ton affaire !
Est-ce qu'il peut arriver que tu copies, par exemple, en sélectionnant
A10, A12:A14 et A16 ?
Ou est-ce que tu copies soit sur une plage d'un seul tenant (A10:A16)
soit sur des cellules uniques séparées (A10, A12, A14, A16) ?
Dans le deuxième cas de figure on peut trouver une solution simple mais
dans le premier ça va être plus difficile.
bonsoir frederic, ben oui je crains que cela se complique car je peux copier une cellule vers plusieurs celles en même temps mais qui peuvent être répartie aléatoirement A10, A16, A17, A32,...
Je pensais (naïvement) que le range target de l'événement Worksheet_Change avait les références de toutes les cellules modifiées mais bizarement il me sort le bon nombre mais pas les bonnes références (sauf quand les cellules modifiées sont adjacentes). Bug d'Excel ?
Pensez vous qu'il existe une solution ou dois je abandonner l'idée d'utiliser l'événement Worksheet_change pour répondre à mon pb?
Merci pour tout
Xavier
FS a écrit :
Bonsoir,
Ça se complique ton affaire ! Est-ce qu'il peut arriver que tu copies, par exemple, en sélectionnant A10, A12:A14 et A16 ? Ou est-ce que tu copies soit sur une plage d'un seul tenant (A10:A16) soit sur des cellules uniques séparées (A10, A12, A14, A16) ? Dans le deuxième cas de figure on peut trouver une solution simple mais dans le premier ça va être plus difficile.
FS
FS
Bonsoir,
Oui, pour ça tu peux utiliser Split.
Sub essai() Dim Plage As Range Set Plage = Range("A10,A12,A14,A16") MsgBox Split(Plage.Address, ",")(0) MsgBox Split(Plage.Address, ",")(1) 'etc. End Sub
Ça se corse avec les plages comme Range("A10,A12:A14,A16")
Attendons peut-être que Xavier précise son besoin.
FS -- Frédéric SIGONNEAU Modules et modèles pour Excel : http://frederic.sigonneau.free.fr/
Jacky a écrit :
Bonsoir Fréderic,
A un moment j'ai pensé à un "Application.InputBox("Sélectionnez une cellule", Type:=8)" pour la plage à coller à condition qu'il n'y ait qu'un copier à la fois. Je n'arrive pas a séparer les plages de cette sélection exemple : Set CelluleAcoller = Application.InputBox("Sélectionnez une cellule", Type:=8) pour une sélection de (A10, A12, A14, A16) msgbox CelluleAcoller.address retourne $A$10, $A$12, $A$14, $A$16 sur une ligne As-tu une solution pour récupérer $a$10 dans une cellule et $a$12 dans une autre, etc..??
Bonsoir,
Oui, pour ça tu peux utiliser Split.
Sub essai()
Dim Plage As Range
Set Plage = Range("A10,A12,A14,A16")
MsgBox Split(Plage.Address, ",")(0)
MsgBox Split(Plage.Address, ",")(1)
'etc.
End Sub
Ça se corse avec les plages comme
Range("A10,A12:A14,A16")
Attendons peut-être que Xavier précise son besoin.
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
Jacky a écrit :
Bonsoir Fréderic,
A un moment j'ai pensé à un "Application.InputBox("Sélectionnez une
cellule", Type:=8)" pour la plage à coller
à condition qu'il n'y ait qu'un copier à la fois.
Je n'arrive pas a séparer les plages de cette sélection
exemple :
Set CelluleAcoller = Application.InputBox("Sélectionnez une cellule",
Type:=8)
pour une sélection de (A10, A12, A14, A16)
msgbox CelluleAcoller.address retourne $A$10, $A$12, $A$14, $A$16 sur une
ligne
As-tu une solution pour récupérer $a$10 dans une cellule et $a$12 dans une
autre, etc..??
Sub essai() Dim Plage As Range Set Plage = Range("A10,A12,A14,A16") MsgBox Split(Plage.Address, ",")(0) MsgBox Split(Plage.Address, ",")(1) 'etc. End Sub
Ça se corse avec les plages comme Range("A10,A12:A14,A16")
Attendons peut-être que Xavier précise son besoin.
FS -- Frédéric SIGONNEAU Modules et modèles pour Excel : http://frederic.sigonneau.free.fr/
Jacky a écrit :
Bonsoir Fréderic,
A un moment j'ai pensé à un "Application.InputBox("Sélectionnez une cellule", Type:=8)" pour la plage à coller à condition qu'il n'y ait qu'un copier à la fois. Je n'arrive pas a séparer les plages de cette sélection exemple : Set CelluleAcoller = Application.InputBox("Sélectionnez une cellule", Type:=8) pour une sélection de (A10, A12, A14, A16) msgbox CelluleAcoller.address retourne $A$10, $A$12, $A$14, $A$16 sur une ligne As-tu une solution pour récupérer $a$10 dans une cellule et $a$12 dans une autre, etc..??
Jacky
Re... Avec l'aide du code de Frédéric et en modifiant la cellules A1 Essaie ceci: '---------------------- Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Target.Address = "$A$1" Then Application.EnableEvents = False Columns(3).Clear Cells(1, 5) = "" CelluleAcopier = [a1] On Error Resume Next 'Set CelluleAcopier = Application.InputBox("Sélectionnez la cellule à copier", Type:=8) Set CelluleAcoller = Application.InputBox("Sélectionnez la plage de cellules pour le collage", Type:=8) Cells(1, 5) = CelluleAcoller.Count For i = 0 To CelluleAcoller.Count - 1 Cells(i + 1, 3) = Split(CelluleAcoller.Address, ",")(i) Range(Split(CelluleAcoller.Address, ",")(i)) = CelluleAcopier Next End If Application.EnableEvents = True End Sub '------------------- Ton classeur modifié ici http://www.cijoint.fr/cjlink.php?file=cj200909/cijBRYdvuP.xls -- Salutations JJ
"Xavier" a écrit dans le message de news: 4aa2b117$0$748$
bonsoir frederic, ben oui je crains que cela se complique car je peux copier une cellule vers plusieurs celles en même temps mais qui peuvent être répartie aléatoirement A10, A16, A17, A32,...
Je pensais (naïvement) que le range target de l'événement Worksheet_Change avait les références de toutes les cellules modifiées mais bizarement il me sort le bon nombre mais pas les bonnes références (sauf quand les cellules modifiées sont adjacentes). Bug d'Excel ?
Pensez vous qu'il existe une solution ou dois je abandonner l'idée d'utiliser l'événement Worksheet_change pour répondre à mon pb?
Merci pour tout
Xavier
FS a écrit :
Bonsoir,
Ça se complique ton affaire ! Est-ce qu'il peut arriver que tu copies, par exemple, en sélectionnant A10, A12:A14 et A16 ? Ou est-ce que tu copies soit sur une plage d'un seul tenant (A10:A16) soit sur des cellules uniques séparées (A10, A12, A14, A16) ? Dans le deuxième cas de figure on peut trouver une solution simple mais dans le premier ça va être plus difficile.
FS
Re...
Avec l'aide du code de Frédéric et en modifiant la cellules A1
Essaie ceci:
'----------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$A$1" Then
Application.EnableEvents = False
Columns(3).Clear
Cells(1, 5) = ""
CelluleAcopier = [a1]
On Error Resume Next
'Set CelluleAcopier = Application.InputBox("Sélectionnez la cellule à
copier", Type:=8)
Set CelluleAcoller = Application.InputBox("Sélectionnez la plage de
cellules pour le collage", Type:=8)
Cells(1, 5) = CelluleAcoller.Count
For i = 0 To CelluleAcoller.Count - 1
Cells(i + 1, 3) = Split(CelluleAcoller.Address, ",")(i)
Range(Split(CelluleAcoller.Address, ",")(i)) = CelluleAcopier
Next
End If
Application.EnableEvents = True
End Sub
'-------------------
Ton classeur modifié ici
http://www.cijoint.fr/cjlink.php?file=cj200909/cijBRYdvuP.xls
--
Salutations
JJ
"Xavier" <Xavierpowaga@free.fr> a écrit dans le message de news:
4aa2b117$0$748$426a74cc@news.free.fr...
bonsoir frederic,
ben oui je crains que cela se complique car je peux copier une cellule
vers plusieurs celles en même temps mais qui peuvent être répartie
aléatoirement A10, A16, A17, A32,...
Je pensais (naïvement) que le range target de l'événement Worksheet_Change
avait les références de toutes les cellules modifiées mais bizarement il
me sort le bon nombre mais pas les bonnes références (sauf quand les
cellules modifiées sont adjacentes). Bug d'Excel ?
Pensez vous qu'il existe une solution ou dois je abandonner l'idée
d'utiliser l'événement Worksheet_change pour répondre à mon pb?
Merci pour tout
Xavier
FS a écrit :
Bonsoir,
Ça se complique ton affaire !
Est-ce qu'il peut arriver que tu copies, par exemple, en sélectionnant
A10, A12:A14 et A16 ?
Ou est-ce que tu copies soit sur une plage d'un seul tenant (A10:A16)
soit sur des cellules uniques séparées (A10, A12, A14, A16) ?
Dans le deuxième cas de figure on peut trouver une solution simple mais
dans le premier ça va être plus difficile.
Re... Avec l'aide du code de Frédéric et en modifiant la cellules A1 Essaie ceci: '---------------------- Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Target.Address = "$A$1" Then Application.EnableEvents = False Columns(3).Clear Cells(1, 5) = "" CelluleAcopier = [a1] On Error Resume Next 'Set CelluleAcopier = Application.InputBox("Sélectionnez la cellule à copier", Type:=8) Set CelluleAcoller = Application.InputBox("Sélectionnez la plage de cellules pour le collage", Type:=8) Cells(1, 5) = CelluleAcoller.Count For i = 0 To CelluleAcoller.Count - 1 Cells(i + 1, 3) = Split(CelluleAcoller.Address, ",")(i) Range(Split(CelluleAcoller.Address, ",")(i)) = CelluleAcopier Next End If Application.EnableEvents = True End Sub '------------------- Ton classeur modifié ici http://www.cijoint.fr/cjlink.php?file=cj200909/cijBRYdvuP.xls -- Salutations JJ
"Xavier" a écrit dans le message de news: 4aa2b117$0$748$
bonsoir frederic, ben oui je crains que cela se complique car je peux copier une cellule vers plusieurs celles en même temps mais qui peuvent être répartie aléatoirement A10, A16, A17, A32,...
Je pensais (naïvement) que le range target de l'événement Worksheet_Change avait les références de toutes les cellules modifiées mais bizarement il me sort le bon nombre mais pas les bonnes références (sauf quand les cellules modifiées sont adjacentes). Bug d'Excel ?
Pensez vous qu'il existe une solution ou dois je abandonner l'idée d'utiliser l'événement Worksheet_change pour répondre à mon pb?
Merci pour tout
Xavier
FS a écrit :
Bonsoir,
Ça se complique ton affaire ! Est-ce qu'il peut arriver que tu copies, par exemple, en sélectionnant A10, A12:A14 et A16 ? Ou est-ce que tu copies soit sur une plage d'un seul tenant (A10:A16) soit sur des cellules uniques séparées (A10, A12, A14, A16) ? Dans le deuxième cas de figure on peut trouver une solution simple mais dans le premier ça va être plus difficile.