Une macro pour plusieurs colonnes
Bonjour, voila,
J'ai fait une macro pour servir de chrono et compte tour, maintenant j'aimerai pouvoir associer cette macro à chaque bouton situé dans chaque colonne sans toucher au code , une sorte de :
Si j'appuie sur le bouton en E8, la macro s'applique pour cette colonne, sans recopier le code et changer les noms de colonnes dans le code...
J'aimerai aussi un coup de main pour savoir comment faire une macro qui ajoute autant de bouton que je veux sur une meme ligne, ici la 8
J'avais ca , mais ca ne marche pas
ublic i As Long
Public V As Long
Sub MacroXX()
Dim DL As Long, Obj As Object, Code As String
DL = Cells(Application.Columns.Count, 1).End(xlToLeft).Column
For i = 1 To 8
'crée le bouton
With Range("A" & 1 & ":L" & 1)
Set Obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
Link:=False, DisplayAsIcon:=False, Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height)
Obj.Name = i
End With
'texte du bouton
Obj.Object.Caption = i
'Le texte de la macro
Code = "Sub i" & i & "_Click()" & vbCrLf
Code = Code & "Columns(" & i & ").Interior.Color = RGB(146, 208, 80)" & vbCrLf
Code = Code & "End Sub"
'Ajoute la macro en fin de module feuille
With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
.insertlines .CountOfLines + 1, Code
End With
Next i
End Sub
SUper
Mais, pourquoi l'appli "creer bouton" s’arrête à 11 boutons ?
Et comment faire pour appliquer cette macro :
Sub bouton_Cliquer()
Nom = Application.Caller
MsgBox "colonne: " & ActiveSheet.Shapes(Nom).TopLeftCell.Column
' cl = ActiveSheet.Shapes(Nom).TopLeftCell.Column
' Columns(cl).Interior.Color = RGB(146, 208, 80)
End Sub
Non seulement pour qu'elle lance non pas le msg mais cette macro :
Sub ClicTourN°1()
Range("C11") = Now()
Range("C11").NumberFormat = "h:mm:ss"
Range("C12").Formula = "=C11-B3-Sum(C14:C1000)"
Range("C13").Value = Range("C12").Value
Rows("13:13").Insert Shift:=xlDown
Range("C10") = Range("C10") + 1
End Sub
et non pas pour la colonne c mais pour toutes les colonnes associées à leur bouton , je clique en C8 et j'obtiens les résultats en C, je clique en D8 et j'obtiens les résultats en D , tout ca en appliquant une seule macro à tous les boutons ?
Bonjour,
Mais, pourquoi l'appli "creer bouton" s’arrête à 11 boutons ?
j'ai mit une donnée en cellule M1
et vous aviez écrit cette commande,
DL = Cells(1, Columns.Count).End(xlToLeft).Column
Merci, mais cela ne fonctionne pas,
Lorsque je clique sur un bouton autre que dossard 1, les temps des tours se cumulent dans "temps du dernier tour" au lieu de passer l'avant dernier chrono en ligne 14
SINON si j'appuie sur le bouton 1, la macro marche parfaitement, mais lorsque j'appuie sur un autre chrono, le temps qui apparait en ligne 12 est toujours le cumulé des chrono, et celui qui apparait en ligne 14 est LE MEME que celui en ligne 15 de la colonne du dossard 1
ce que je voudrais ce sont des chronos indépendants, avec les chronos des anciens tours en dessous.
Votre macro etait quasi parfaite , j'ai juste changé un petit truc, mais maintenant comment faire pour que le bouton de la colonne fasse apparaître des résultats indépendants de ceux de la colonne du dossard n°1, car c'est ca le probleme
Je débute avec VBA mais je comprends parfaitement la logique de ce que vous avez ecrit, merci beaucoup ca me fait connaitre ce codage.
Bonjour,
Sub ClicTourN°1()
Dim cl As Integer
cl = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Column
Cells(11, cl) = Now()
Cells(11, cl).NumberFormat = "h:mm:ss"
Cells(12, cl).Formula = "=" & Cells(11, cl).Address & "-B3-Sum(" & Range(Cells(14, cl), Cells(1000, cl)).Address & ")"
Cells(13, cl).Value = Range("C12").Value
Rows("13:13").Insert Shift:=xlDown
Cells(10, cl) = Cells(10, cl) + 1
End Subje ne comprend pas,
lors du clic sur un des boutons, la cellules ( ligne 11 et colonne du bouton est = à maintenant (hh:mm:ss)
faut t'il mettre autre chose ?
