0
votes

Bouton multiple à ajouter dans Excel

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?


0 commentaires

3 Réponses :


1
votes

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?

entrez la description de l'image ici

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


1 commentaires

Merci, mais toutes ces activités sont effectuées par une personne différente, il faut donc un bouton différent pour chaque activité.



2
votes

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


4 commentaires

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



1
votes

Application Caller feat. Boutons
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


0 commentaires