Insérer automatiquement un bouton pour chaque ligne

sednanref

XLDnaute Nouveau
Bonjour à tous,

Je suis nouveau sur le forum et je bloque sur un point. J'espère que vous pourrez m'aider.

Je souhaite faire un fichier qui Excel qui comportera plusieurs lignes.
Sur chaque ligne, j'aurais une celulle (toujours sur la même colonne) qui comportera du texte.

Je souhaite copier dans le presse papier ce texte à l'aide d'un bouton sur chacune des lignes.
Pour cette première étape, j'ai réussi à me débrouiller en parcourant le forum.

Mais je bloque sur la deuxième étape. En effet, je souhaiterais que le bouton soit généré automatiquement si une ligne et non vide et que la fonction VBA s'adapte en fonction de la ligne.

Ainsi,
si A1 non vide alors créer bouton1 = copier A1 sinon pas de bouton
si A2 non vide alors créer bouton2 = copier A1 sinon pas de bouton
si A3 non vide alors créer bouton3 = copier A1 sinon pas de bouton
si A4 non vide alors créer bouton4 = copier A1 sinon pas de bouton


Actuellement je suis obligé de faire ca manuellement (créer une macro VBA et un bouton pour chaque ligne) et ca assez pénible... J'aimerais savoir s'il est possible d'automatiser cela à l'ouverture du fichier (ou en lancer une macro manuellement).

J'ai trouvé ce topic (Insérer un bouton excel par cellule - Forum des professionnels en informatique) et j'ai réussi à créer automatiquemnt des boutons mais je n'arrive pas à leur attribuer une fonction (copier cellule A1 / A2 / A3 / etc)... ;S

Je vous met en copie un fichier exemple.

Merci de votre aide :)
 

Pièces jointes

  • Test copie.xlsm
    17.5 KB · Affichages: 222
  • Test copie.xlsm
    17.5 KB · Affichages: 246

tototiti2008

XLDnaute Barbatruc
Re : Insérer automatiquement un bouton pour chaque ligne

Bonjour sednanref,

Bienvenue sur XLD,

déjà, tu peux te contenter d'une seule macro

Code:
Sub Copy()
    Dim MyData As DataObject
    Set MyData = New DataObject
    MyData.SetText Range("A" & ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row).Value
    MyData.PutInClipboard
End Sub

et tous les boutons associés à cette même macro
Dans ces conditions, si tu copie un bouton et que tu le colles dans la nouvelle ligne, il devrait encore être associé à ta macro
Si ça ne marche pas, c'est la propriété OnAction du Shape copié que tu dois modifier pour l'associer à une macro

Edit : maintenant, un bouton par ligne c'est peut-être un peu lourd, il y a d'autres solution comme par exemple une macro qui se lancerais par double-clic sur une cellule

Edit : Ah que coucou Misange ;)
 
Dernière édition:

sednanref

XLDnaute Nouveau
Re : Insérer automatiquement un bouton pour chaque ligne

Merci beaucoup. Ca me simplifie énormément la tâche déjà ! ;)

Pour les boutons, oui c'est vrai que c'est peut être un peu lourd mais je n'ai pas non plus 200 lignes....

Mais je suis curieux de connaitre la solution pour le double clic quand même si vous avez :)

Merci.
 

Misange

XLDnaute Barbatruc
Re : Insérer automatiquement un bouton pour chaque ligne

Bonjour

un exemple qui met un X dans une cellule quand on double clic dessus et efface le X quand on redouble clic dessus.

Code:
Private sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)    
On Error Resume Next    
If IsEmpty(ActiveCell.Value) Then       
     ActiveCell.Value = "X"    
ElseIf ActiveCell.Value = "X" Then       
     ActiveCell.Value = ""    
End If  
Cancel = True  
end sub

après tu ajustes avec ton propre code.
 

sednanref

XLDnaute Nouveau
Re : Insérer automatiquement un bouton pour chaque ligne

Merci =)


Du coup j'ai mis ça comme code sur ma feuille :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    On Error Resume Next
    If Not IsEmpty(ActiveCell.Value) Then
         Dim MyData As DataObject
         Set MyData = New DataObject
         MyData.SetText ActiveCell.Value
         MyData.PutInClipboard
    End If
    Cancel = True
End Sub
 

raphde

XLDnaute Nouveau
Re : Insérer automatiquement un bouton pour chaque ligne

Bonjour,

je suis en charge du développement d'un macro, et je souhaiterais que dès qu'une ligne est renseigné faire apparaitre en bout de ligne (colonne I et J) deux boutons (Acheter et Vendre).
Par la même occasion, dès que la ligne est supprimé faire disparaitre les deux boutons.

Je vous remercie pour votre aide.

Cordialement,

Raphael
 

raphde

XLDnaute Nouveau
Re : Insérer automatiquement un bouton pour chaque ligne

Bonjour raphde,

Bienvenue sur XLD,

et que penses-tu de la solution en double-clic sur une cellule ?
ça résout déjà les problèmes de suppression

Bonjour,

Merci de votre réponse. Concernant la solution du double click je n'y ai pas pensé,
voous voulez dire par la, que si je double click sur la ligne, deux bouttons apparaissent a ce moment la?
 

tototiti2008

XLDnaute Barbatruc
Re : Insérer automatiquement un bouton pour chaque ligne

Re,

Non, si tu as lu le fil, plutôt qu'un bouton on a simplement proposé une cellule sur laquelle il faudra double-cliquer pour lancer l'action associée
ça évite tous ces objets insérés dans la feuille, puisque c'est la cellule qui lance la macro
Misange :))) a proposé un code pour expliquer comment lancer une macro par double-clic sur une cellule
 

tototiti2008

XLDnaute Barbatruc
Re : Insérer automatiquement un bouton pour chaque ligne

Re,

En général, c'est le demandeur qui devrait fournir un fichier pour qu'on comprenne bien son problème

un exemple, saisir en colonne A pour faire apparaître Acheter et Vendre, Double-clic sur les cellules pour lancer l'action
 

Pièces jointes

  • Classeur2.xls
    22 KB · Affichages: 266
  • Classeur2.xls
    22 KB · Affichages: 275
  • Classeur2.xls
    22 KB · Affichages: 315

Misange

XLDnaute Barbatruc
Re : Insérer automatiquement un bouton pour chaque ligne

Bonjour
tu copies le code
alt+F11 pour ouvrir l'éditeur VBA
tu repères le projet VBA correspondant à ton classeur et dans celui-ci la feuille ou tu veux agir
tu colles le code et tu enregistres sous le format xlsm pour autoriser les macros.
Dans la feuille, si la cellule contient quelque chose d'autre qu'un X il ne se passe rien. Si elle est vide quand tu doubles cliques ça met un X. Si elle contient un X quand tu doubles cliques ça l'enlève. PAs très compliqué.

A la place du X tu peux aussi bien sur mettre un code qui fasse apparaitre tes deux boutons ou qui les enlève. Ca t'évite d'avoir la varicelle...

hello Camarade, j'avais pas vu ton fichier (on a répondu en même temps :) )
 

raphde

XLDnaute Nouveau
Re : Insérer automatiquement un bouton pour chaque ligne

Merci beaucoup pour votre aide tototiti2008 et Misange, ca devrait m'aider.
Pour info veuillez trouver ci-joint mon fichier.
Je vous remercie encore!!
 

Pièces jointes

  • macro portef.xlsm
    61 KB · Affichages: 217
  • macro portef.xlsm
    61 KB · Affichages: 245
  • macro portef.xlsm
    61 KB · Affichages: 299

raphde

XLDnaute Nouveau
Re : Insérer automatiquement un bouton pour chaque ligne

Re,

En général, c'est le demandeur qui devrait fournir un fichier pour qu'on comprenne bien son problème

un exemple, saisir en colonne A pour faire apparaître Acheter et Vendre, Double-clic sur les cellules pour lancer l'action

Merci pour le module, et correspond tout à fait à mes attentes.
Cependant des que je colle le code dans la Feull2(Positions) ce dernier m'affiche une erreur lorsque je le teste.

Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 276
Messages
2 086 713
Membres
103 377
dernier inscrit
fredy45