Excel 2003 macro

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
Configuration: Windows XP
Firefox 2.0.0.5

3 réponses

  1. Modérateur
    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
    1. 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 !!!
    2. 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
  2. Modérateur
    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
    1. 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 ?
  3. Modérateur
    Bonjour,

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

    Il faudrait que tu nous donnes le code.

    m@rina
    1. 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