Ajout/Retrait valeur cellule dans colonne annexe via boutons
G
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!
f
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 SubG
C'est juste parfait.
Merci beaucoup!