Recupérer le numéro de ligne d'une forme

DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention   -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un tableau d'environ 150 lignes avec dans la colonne L, et pour chaque ligne un bouton. ( une forme carré avec écrit ok dessus)

Je voudrais qu'a chaque fois que l'on clique sur le bouton d'une ligne, il agisse sur la ligne. (qu'il vide la case "I" de cette ligne )

Je ne sais pas comment effectuer cette commande, il faudrait que je récupères le numéro de ligne du bouton. Une idée ?

Autre chose, j'aimerai insérer un bouton "Ok" type windows, plutot qu'une forme avec écrit ok dessus, quelqu'un peut m'éclairer ?

Merci d'avance,
DGVDR

2 réponses

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour,

    Pas besoin de forme ni de bouton !
    Écris directement les Ok dans les cellules de la colonne L (avec les bordures et la couleur tu peux simuler la forme d'un bouton)

    Utilises le code suivant (il suffit de cliquer sur le ok) :
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Intersect(Target, Columns("L:L")) Is Nothing Then Exit Sub
    If Not Target.Value = "Ok" Then Exit Sub
    Target.Offset(, -3).ClearContents
    End Sub

    Copier le code ci-dessus / Clic droit sur l'onglet de feuille / visualiser le Code / Coller
    0
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      PS : Utilises plutôt ce code :
      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Dim cel As Range
      If Intersect(Target, Columns("L:L")) Is Nothing Then Exit Sub
      For Each cel In Intersect(Target, Columns("L:L")).Cells
        If cel.Value = "Ok" Then cel.Offset(, -3).ClearContents
      Next cel
      End Sub
      0
  2. DGVDR Messages postés 158 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour Patrice33740,

    Merci pour ton code que je vais mettre en application !

    Quelques questions :

    Quel est l'interet de / à quoi sert :

    (ByVal Target As Range)


    cel.Offset(, -3).ClearContents
    


    Merci,

    DGVDR
    0
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Re,

      Worksheet_SelectionChange(ByVal Target As Range) est une procédure évènementielle de la feuille de calcul Excel qui s'exécute automatiquement lorsque la sélection change ((changement de cellule active). Excel envoi la plage des cellules sélectionnées à cette procédure à l'aide de l'argument Target.

      cel.Offset(, -3).ClearContents efface le contenu de la cellule située 3 colonnes avant la cellule cel

      Patrice

      PS : Dans l'éditeur Visual Basic, il suffit de placer le curseur texte dans un mot et d'appuyer sur F1 pour obtenir l'aide concernant ce mot.
      0