[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

  • Votes
  • Date
  • Date décroissante
  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.
    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
      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.
        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.
          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


            1. ou bien il suffit de mettre les cellules en forme conditionnelle
              est c'est tout
              1. sauf que la demande est de le faire par macro ... et c'est tout ^^
            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 !