Excel 2003 macro

Fermé
abyssus Messages postés 29 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 23 juillet 2007 - 23 juil. 2007 à 10:21
abyssus Messages postés 29 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 23 juillet 2007 - 23 juil. 2007 à 16:53
bjr,
ma question : j'ai 5 cellules sur une feuille excel. comment faire pour qu'en changeant le contenu d'une des 5 cellules les 4 autres soient mises à jour automatiquement svp ? j'ai utilisé une macro avec <Private Sub Worksheet_Change(ByVal Target As Range)> mais ça ne marche que pour 3 cellules.
merci
A voir également:

3 réponses

m@rina Messages postés 21235 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 7 janvier 2025 11 376
23 juil. 2007 à 11:19
Bonjour,

Si ça marche pour trois, pourquoi ça ne marchait pas pour quatre ?.. ;))

Il faudrait que tu nous donnes le code.

m@rina
0
abyssus Messages postés 29 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 23 juillet 2007 1
23 juil. 2007 à 11:49
voici le code pour 3. je pense qu'il existe un code bcp + compressé
merci d'avance


Private Sub Worksheet_Change(ByVal Target As Range)
x = Range("O4").Value
y = Range("V3").Value
z = Range("V32").Value
If x = y And y = z Then Exit Sub
If Target.Address = "$O$4" Then
Range("V3") = Target
Range("V32") = Target
ElseIf Target.Address = "$V$3" Then
Range("O4") = Target
Range("V32") = Target
ElseIf Target.Address = "$V$32" Then
Range("O4") = Target
Range("V3") = Target
End If
0
m@rina Messages postés 21235 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 7 janvier 2025 11 376
23 juil. 2007 à 14:39
Rebonjour,

Je t'ai écrit une autre macro, plus légère. Les imbrications de IF ne servent à rien.

Pour plus de facilité, j'ai utilisé les cellules A1, B1 et C1. A toi de modifier par les tiennes. Tu peux utiliser autant de cellules que tu veux.

Private Sub Worksheet_Change(ByVal Target As Range)

x = Range("A1").Value
y = Range("B1").Value
z = Range("C1").Value
If x = y And y = z Then Exit Sub

If Target.Address = "$A$1" Then Range("B1", "C1") = x
If Target.Address = "$B$1" Then Range("A1", "C1") = y
If Target.Address = "$C$1" Then Range("A1", "B1") = z

End Sub


m@rina
0
abyssus Messages postés 29 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 23 juillet 2007 1
23 juil. 2007 à 15:20
merci pour la réponse, j'ai essayé et ça ne marche que pour un bloc. j'ai plusieurs blocs pareils, je pense que ç'est à cause de "Exit Sub" parce que chaque bloc a un "Exit Sub" alors cmt faire ?
0
m@rina Messages postés 21235 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 7 janvier 2025 11 376
23 juil. 2007 à 16:04
En fait, il me semble que la ligne
If x = y And y = z Then Exit Sub
ne sert à rien

puisque, automatiquement, les cellules changent en fonction d'une qui est modifiée... Donc, elles seront forcément identiques...
A moins que tu ne m'aies pas tout dit ! ;)

m@rina
0
abyssus Messages postés 29 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 23 juillet 2007 1
23 juil. 2007 à 16:24
parce que sans cette condition, le pgm tourne indéfiniment !!!!
et justement j'ai essayé ton pgm avec 4 cells et ça ne marche pas parce que Range() ne prend que 2 arguments : If Target.Address = "$A$1" Then Range("B1", "C1") = x
si je fais Union(Range(), Range(),...), ça sélection une plage et non des cellules !!!
0
abyssus Messages postés 29 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 23 juillet 2007 1
23 juil. 2007 à 16:53
excuses-moi, je pose le pb autrement :
comment mettre à jour des cellules d'une colonne "ok/nok" en fonction des col_A et col_C ?
càd si je mets "ok" sur la cellule à droite de nom2, la macro cherche toutes les cellules "nom2" et mets ok sur les cellules correspondantes, comme sur l'exemple ci-dessous.

merci pour ta réponse

col_A ok/nok col_C ok/nok
nom1 nom2 ok
nom2 ok nom5
nom3 nom2 ok
nom4 nom3
nom4 nom4
0