[Résolu] Question Excel Macros

Résolu
Bonjour tout le monde,

je souhaiterais savoir s'il est possible sur une feuille excel grâce à une macro d'ajouter 1 dans une cellule si elle est égale à 0 et de mettre 0 si elle est égale à 1 et pour finir mettre une couleur dans la case si elle est égale à 1 ou à 0?

J'espère que j'ai bien expliqué...

Merci pour votre aide

9 réponses

  1. bonjour,

    Oui, il est possible.
    Va dans outils, macro, visual basic et copie ce code :

    sub macro ()

    if sheets("Feuil1").cells(1,2) = 1 then ' si ta cellule de la première ligne 2e colonne (b1) de la feuille nommée Feuil1 est égale à 1 alors :

    cells(1,3) = 0 ' alors ta cellule 1ere ligne 3e colonne = 0
    else
    if sheets("Feuil1").cells(1,2) = 0 then
    cells(1,3) = 1
    end if
    end if
    end sub

    'remplaces les valeurs par ce dont tu as besoin.
    'Pour les couleurs, choisis ta cellule et vas dans format, mise en forme conditionnelle, et mets si c'est égale à 1 choisis le format.
    0
    1. merci pour ta réponse très rapide mais j'ai oublié de mettre l'essentiel dans ma question je souhaiterais que cette action se face au clic... en gros si j'ai 0 dans ma cellule je veux que le fond soir rouge et si je clique dessus je veux qu'elle passe à 1 et que le fond soit vert et vis et versa...

      Merci
      0
      1. Bonjour,

        Alors ca dépasse mes compétences, je ne sais pas déclencher une macro par un clic sur une cellule.

        Par contre, si ca t'intéresse, je peux te donner le code lorsque ta valeur de cellule est changée.
        0
        1. oui je veux bien merci à toi ! si quelqu'un en sait plus....
          0
          1. au passage que ce soit au clic ou au double clic ca m'est égal
            0
            1. re,

              donc voici le code pour le double clic.
              Tu vas dans macro, visualbasic.
              A gauche tu as vbaproject avec toutes tes feuilles, tu choisis la feuille impactée par ce que tu veux.
              tu colles le code suivant :

              Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

              If Target.Address = "$B$1" Then ' définit la cellule concernée par ton but, ligne 1 clonne 2 (B1)
              If Target.Value = "" Then
              Target.Interior.ColorIndex = xlNone
              Else
              If Target.Value = 0 Then
              Target.Interior.ColorIndex = 3 ' permet de changer le couleur de fond 3 = rouge
              Else
              If Target.Value = 1 Then ' permet de changer le couleur de fond 35 = vert
              Target.Interior.ColorIndex = 35
              End If
              End If
              End If
              End If

              If Range("B1") = 1 Then
              Range("B1") = 0
              Else
              If Range("B1") = 0 Then
              Range("B1") = 1
              End If
              End If
              Range("A1").Select

              End Sub

              le bout de code à la fin te permet de changer la valeur de la cellule. Si pas bon, enlèves.
              A chaque que tu double cliqueras sur cette feuille, la macro se lancera. Mais elle ne s'appliquera que si tu double cliques sur la cellule de destination.
              0
              1. Bonjour,

                voilà un exemple à mettre dans l'éditeur VB sur la feuille concernée, ici l'évènement se produit sur n'importe quelle cellue de la feuille:
                Private Sub Worksheet_SelectionChange(ByVal Target As Range)
                
                    If Target.Value = "" Then Exit Sub
                    
                    If Target.Value = 0 Then
                        Target.Value = 1
                        Target.Interior.Color = vbGreen
                        Exit Sub
                    End If
                    
                    If Target.Value = 1 Then
                        Target.Value = 0
                        Target.Interior.Color = vbRed
                        Exit Sub
                    End If
                    
                End Sub


                0
                1. ou bien il suffit de mettre les cellules en forme conditionnelle
                  est c'est tout
                  0
                  1. sauf que la demande est de le faire par macro ... et c'est tout ^^
                    0
                2. merci pour votre aide ca m'a bien aidé!! voici le code que j'ai utilisé :

                  Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
                  If ActiveCell.Value = 0 Then
                  ActiveCell.Value = 1
                  ActiveCell.Interior.ColorIndex = 4
                  Else
                  ActiveCell.Value = 0
                  ActiveCell.Interior.ColorIndex = 3
                  End If
                  End Sub

                  A bientôt !
                  0