Je voulais ajouter Button à chaque ligne contre chaque activité de 11 à 35, le bouton est dans la colonne 'K11' tandis que cliquer sur la macro de bouton ajoutera automatiquement le nom d'utilisateur et l'heure dans la cellule Q11 et saisira le texte comme réussite dans la cellule N11 J'ai créé le bouton ci-dessous sur la ligne 11.
Sub addDetail()
Sheets("sheet1").Range("Q11").Value = _
Environ("username") & " - " & Format(Now, "mm/dd/yyyy HH:mm:ss")
Range("N11").Value = "Success"
End Sub
Dois-je créer ce code 25 fois pour ajouter du code à chaque bouton de chaque ligne ou il y en a un autre méthode?
3 Réponses :
Avoir 25 boutons côte à côte n'est probablement pas la meilleure approche. Si vous en avez besoin, chaque Shape a l'attribut TopLeftCell , vous pouvez donc utiliser le même code pour les 25 boutons et remplacer la ligne des deux plages par cet attribut. Si vous êtes satisfait d'un seul bouton, que diriez-vous de créer une configuration comme celle-ci?
Pour que vous pouvez-vous modifier la ligne que vous souhaitez modifier et n'avez besoin que d'un bouton?
Sub addDetail()
dim rowA as string
rowA = range("B2").value
Sheets("sheet1").Range("Q" & rowA).Value = _
Environ("username") & " - " & Format(Now, "mm/dd/yyyy HH:mm:ss")
Range("N" & rowA).Value = "Success"
End Sub
Merci, mais toutes ces activités sont effectuées par une personne différente, il faut donc un bouton différent pour chaque activité.
Pensez à utiliser une boucle:
Sub addDetail(roww As Long)
With Sheets("sheet1")
.Range("Q" & roww).Value = Environ("username") & " - " & Format(Now, "mm/dd/yyyy HH:mm:ss")
.Range("N" & roww).Value = "Success"
End With
End Sub
De la même manière, vous pouvez créer une routine de création de boutons qui utilise une boucle pour placer des boutons sur les lignes 11 à 35.
EDIT # 1:
J'ai mis un petit bouton Forms sur la ligne # 11 et lui ai assigné cette macro:
Sub Button1_Click()
Dim s As Shape
shapename = Application.Caller
Set s = ActiveSheet.Shapes(shapename)
Call addDetail(s.TopLeftCell.Row)
End Sub
La macro peut être utilisée pour tous les boutons.
La macro détermine la ligne sur laquelle elle se trouve et appelle le sous addDetails () avec le bon informations de ligne. Nous devons modifier addDetails () pour accepter la ligne:
Sub addDetail()
Dim roww As Long
With Sheets("sheet1")
For roww = 11 To 35
.Range("Q" & roww).Value = Environ("username") & " - " & Format(Now, "mm/dd/yyyy HH:mm:ss")
.Range("N" & roww).Value = "Success"
Next roww
End With
End Sub
Salut quand je clique sur le 1er bouton, il ajoute des données à chaque ligne et non sur une seule ligne
@khyatidedhia Voulez-vous que chaque bouton ne modifie que les cellules de la même ligne qu'il réside ??
Salut Gary, Oui, j'ai besoin que chaque bouton ne change que la même ligne
@khyatidedhia Voir ma MODIFICATION # 1
Option Explicit
Sub addDetail_Click()
On Error GoTo CleanExit
Dim btnRow As Long
With ActiveSheet
btnRow = .Shapes(Application.Caller).TopLeftCell.Row
.Cells(btnRow, "Q").Value = _
Environ("username") & " - " & Format(Now, "mm/dd/yyyy HH:mm:ss")
.Cells(btnRow, "N").Value = "Success"
End With
CleanExit:
End Sub