Affecter une macro à une cellule

Bonsoir à tous,

J'ai un petit fichier que j'ai réalisé avec mes petites compétences.

Je vous joint le fichier c'est plus parlant.

Aujourd'hui, il faut que je soit sur la dernière case non vide de la colonne F (rouge)pour pouvoir affecté un nom en cliquant sur le bouton du nom voulu.

Je souhaiterais que je n'ai pas besoin d'être sur cette fameuse case "rouge" et qu'en cliquant sur le bouton du nom voulu il s'ajoute automatiquement à la dernière case non vide de la colonne F.

Merci de vos futur retour!

8824h-test.xlsm (53.94 Ko)

bonjour,

Voir pièce jointe.

Je n'utilise pas les boutons car je ne sais pas que faire des macros rattachées...

En plus c'est crade, ça oblige à faire une macro par bouton !

Il suffit de cliquer sur la cellule du gars.

A+

38724h-test-vg.xlsm (50.18 Ko)

Merci du retour!

Par contre comment ajouter la macro qui était affecté a chaque boutons? je perd toute l'utilité de mon tableur sans le remplissage auto de la colonne C

Bonjour,

Une autre proposition pour l'ajout des noms en colonne F.

Pour le reste, j'avoue ne pas comprendre ce que tu veux faire.

A te relire.

Cdlt.

3724h-test.xlsm (51.69 Ko)
Public Sub Main()
Dim shp As Shape
Dim shpName As String
Dim lastRow As Long

    shpName = Application.Caller

    With ActiveSheet
        Set shp = .Shapes(shpName)
        lastRow = .Cells(.Rows.Count, 6).End(xlUp).Row + 1
        .Cells(lastRow, 6).Value = shp.TopLeftCell.Value
    End With

    Select Case shp.TopLeftCell.Address
        Case "$B$8":    'à définir
        Case "$B$9":    'à définir
        Case "$B$10":   'à définir
        Case "$B$11":   'à définir
        Case "$B$12":   'à définir
        Case "$B$13":   'à définir
    End Select

End Sub

Merci de ton retour également!

Aujourd'hui pour ajouter un nom il faut que je soit sur la dernière cellule non vide de la colonne F et que je clique sur le bouton qui est associé au nom à chaque changement de pilote.

Se que je souhaiterais, c'est que je n'es pas besoin d'être sur cette cellule pour faire fonctionner la macro, que j'ai nimporte quel cellule de sélectionné, lorsque je clique sur le bouton bleu, la macro associé au bouton s'applique automatiquement à la dernière cellule non vide de la colone F.

Personne n'a une idée?

En fait je pense que personne (en cas surtout moi) n'a rien compris à ce que tu veux faire.

Le titre du sujet c'est affecter une macro à une cellule, maintenant il faudrait l'affecter à un bouton, mais on ne sait pas quoi faire des macros existantes.

Il faut être plus précis : Ce qui se conçoit bien s'énonce clairement... On va pas te pondre une macro par jour jusqu'à ce que tu aies fini de nous expliquer ce que tu veux réellement...

A+

Bonsoir,

galopin01 avez bien compris le problème sans pour autant aller au bout, je crois.

J'ai repris son principe de clic dans la cellule avec un code événementielle sur la feuille afin de surveiller les cellules comportant le noms des pilotes, soit de B8 à B13, et en écartant la sélection multiple.

Si tel est le cas c'est à dire un clic sur une des cellules de cette plage alors le code suivant est lancé :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("B8:B13")) Is Nothing And Target.CountLarge < 2 Then
        Call Unique(Target.Value)
    End If
End Sub

Code qui appelle la SUB Unique avec en paramètre le nom du pilote qui se trouve dans la cellule cliquée.

Le code Unique est là pour vous montrer la simplification de votre VBA :

Sub Unique(Nom As String)
    ' définition d'une variable en Long (pour les lignes c'est mieux bien que dans votre cas ce n'est pas utile)
    Dim Der_ligne As Long
    ' détermination de la dernière cellule pleine de la colonne F à laquelle on ajoute 1 afin de tomber sur la première cellule vide suivnat la dernière pleine
    Der_ligne = Cells(Cells.Rows.Count, 6).End(xlUp).Row + 1

    ' Avec la cellule trouvée
    With Cells(Der_ligne, 6)
        ' on affiche le nom du pilote
        .Value = Nom
        ' on affiche l'heure de maintenant
        .Offset(0, -3).Value = Now
    'fin d'utiliser la cellule
    End With
End Sub

Le code est commenté, mais le principe est simple :

on trouve la dernière cellule pleine de la colonne F puis on prend la cellule du dessous, on y inscrit le nom de la cellule cliquée, puis 3 colonnes avant on inscrit la date de "maintenant".

Alors évidemment il faut faire attention à ne pas cliquer à outrance sur cette zone !

Le fichier :

@ bientôt

LouReeD

Bonjour à tous,

Je continue avec mon idée d'une seule procédure au clic d'un bouton.

Mais j'attends toujours un complément d'informations de maxXx39 pour la suite.

Que sont supposées effectuer les différentes macros ?

Cdlt.

1824h-test.xlsm (51.56 Ko)
Public Sub Main()
Dim shp As Shape, shpName As String, lastRow As Long
    shpName = Application.Caller
    With ActiveSheet
        Set shp = .Shapes(shpName)
        If shp.Name <> "Rectangle 1" Then
            lastRow = .Cells(.Rows.Count, 6).End(xlUp).Row + 1
            With .Cells(lastRow, 6)
                .Value = shp.TopLeftCell.Value
                .Offset(, -3).Value = VBA.Time
            End With
        End If
    End With
End Sub
Rechercher des sujets similaires à "affecter macro"