Ajout/Retrait valeur cellule dans colonne annexe via boutons

Bonjour à tous,

Dans le cadre professionnel je voudrais modifier dynamiquement une liste de valeurs présentes dans la colonne B:B en fonction d'une cellule «input» en A1, en utilisant 4 boutons.

Je n'ai vraiment aucune connaissance en macro malheureusement.

Je voudrais créer 4 boutons:

  • Check: Si la valeur en A1 est déjà dans B:B, alors message en C1 «la valeur est déjà dans la liste», sinon «la valeur n'est pas dans la liste»
  • Ajouter: Si la valeur entrée dans A1 n'est pas présente dans la liste en B:B, alors le bouton l'ajoute à la suite, sinon message dans C1 «la valeur est déjà dans la liste»
  • Archive: Si la valeur est déjà dans la liste B:B, alors on la bascule sur une colonne D:D (d'archivage) à la suite, sinon message en C1 «la valeur n'est pas dans la liste»
  • Supprimer: Si la valeur est déjà dans la liste B:B alors on la supprime, sinon message en C1 «la valeur n'est pas dans la liste»

Quelqu'un saurait-il m'aider SVP?

Je vous remercie par avance!

Bonjour,

Voici un exemple avec les 4 procédures

A+

19guiguiqa.xlsm (20.59 Ko)

Bonjour Guigui, Frangy, bonjour le forum,

Ça ne répond pas vraiment à ta demande mais peut-être ça conviendra. Un seul bouton pour les 4 actions avec le code ci-dessous à appliquer à un bouton :

Sub Macro1()
Dim R As Range 'décalre la variable R (Recherche)
Dim DEST As Range 'décalre la variable DEST (cellule de DESTination)

ActiveCell.Select 'enlève le focus au bouton
If Range("A1").Value = "" Then Exit Sub 'si A1 est vide, sort de la procédure
'définikt la recherche R (recherche la valeur entière de A1 dans la colonne 2 (=B))
Set R = Columns(2).Find(Range("A1").Value, , xlValues, xlWhole)
If R Is Nothing Then 'condition 1 : si aucune occurrence n'est trouvée
    'condition 2 : si "Oui" au message
    If MsgBox("La valeur n'est pas dans la liste ! Voulez-vous l'ajouter ?", vbYesNo, "ATTENTION") = vbYes Then
        'définit la cellule de destination DEST (B1 si B1 est vide, sinon la première cellule vide de la colonne B)
        Set DEST = IIf(Range("B1").Value = "", Range("B1"), Range("B" & Application.Rows.Count).End(xlUp).Offset(1, 0))
        DEST.Value = Range("A1").Value 'récupère dans DEST la valeur de A1
        With Range("A1") 'prend en compte la cellule A1
            .Value = "" 'efface son contenu
            .Select 'sélectionne
        End With 'fin de la prise en compte de la cellule A1
    End If 'fin de la condition 2
Else 'sinon (condition 1)
    'condition 3 : si "Oui" au message
    If MsgBox("La valeur est déja pas dans la liste ! Voulez-vous la supprimer ?", vbYesNo, "ATTENTION") = vbYes Then
        R.Delete xlShiftUp 'supprime la cellule en faisant remonter celles en-dessous
        With Range("A1") 'prend en compte la cellule A1
            .Value = "" 'efface son contenu
            .Select 'sélectionne
        End With 'fin de la prise en compte de la cellule A1
    Else 'sinon (condition 3)
        'condition 4 : si "Oui" au message
        If MsgBox("Voulez-vous l'archiver ?", vbYesNo, "ATTENTION") = vbYes Then
            'définit la cellule de destination DEST (B1 si B1 est vide, sinon la première cellule vide de la colonne B)
            Set DEST = IIf(Range("D1").Value = "", Range("D1"), Range("D" & Application.Rows.Count).End(xlUp).Offset(1, 0))
            DEST.Value = Range("A1").Value 'récupère dans DEST la valeur de A1
            R.Delete xlShiftUp 'supprime la cellule en faisant remonter celles en-dessous
            With Range("A1") 'prend en compte la cellule A1
                .Value = "" 'efface son contenu
                .Select 'sélectionne
            End With 'fin de la prise en compte de la cellule A1
        End If 'fin de la condition 4
    End If 'fin de la condition 3
End If 'fin de la condition 1
End Sub

C'est juste parfait.

Merci beaucoup!

Rechercher des sujets similaires à "ajout retrait valeur colonne annexe via boutons"