XL 2019 Optimisation code VBA (Icônes flottantes)

  • Initiateur de la discussion Initiateur de la discussion Amilo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Amilo

XLDnaute Accro
Bonjour à tous,

J'aurais svp besoin de votre aide pour optimiser un code VBA récupéré sur le net (voir fichier en pièce jointe).
Voici les 2 points que je souhaiterais modifier :
1. Afficher les icônes sur l'ensemble du tableau nommé "employees_tbl" et non pas uniquement lors de la sélection de l'une des cellules de la première colonne
2. Supprimer/Ajouter une ligne à l'intérieur du tableau nommé "employees_tbl" et non pas la ligne entière de la feuille.

En vous remerciant par avance

Cordialement
 

Pièces jointes

Re @Dranreb ,

Je viens de tester le fichier, cela répond à ce que je souhaitais et merci.
Le seul inconvénient est que mon fichier réel comporte une dizaine de colonnes, dont certaines plutôt large.
Aussi, il est plus pratique d'avoir les 2 icônes à gauche du tableau
Je vais essayer de trouver comment adapter votre code à mon fichier.

P.S : pour faire fonctionner le fichier, j'ai dû modifier la source/chemin dans l'onglet "Insertion"=> "Lien hyperlink"
Je vais tenter de comprendre tout ça....et reviendrai certainement sur ce fil

Merci encore

Cordialement
 
J'ai corrigé à peu près le positionnement du bouton de suppression pour qu'il reste visible à droite.
J'ai aussi corrigé l'oubli d'affecter les macros ImageInsérer et ImageSupprimer de ce classeur au lieu de celles du classeur d'origine …
 

Pièces jointes

Dernière édition:
Bonsoir @Phil69970 ,
Re @Dranreb ,

Phil69970 merci beaucoup pour votre réponse,
C'est parfait pour l'adaptation du code qui fonctionne très bien
J'ai vu que vous avez supprimé quelques lignes inutiles.
Par contre, un évènement que je n'avais pas indiqué dans mon 1er message, est que les icônes disparaissent lors d'une suppression.
Puis elles s'affichent à nouveau en cliquant dans une autre cellule du tableau.
Pas très gênant mais avec une préférence à ce que les icônes restent toujours visibles.
Comment y remédier svp ?

Dranreb , un grand merci pour vos 2 autres propositions, la dernière répond à ma demande avec notamment 2 remarques :
- la forme des icônes est sympa mais effectivement cela donne une impression de surcharge lorsqu'elles sont à gauche.
- les icônes sont toujours visibles même lorsque la ligne active est supprimée, c'est un point positif

Merci

Cordialement
 
@Amilo

Par contre, un évènement que je n'avais pas indiqué dans mon 1er message, est que les icônes disparaissent lors d'une suppression.
Puis elles s'affichent à nouveau en cliquant dans une autre cellule du tableau.

C'est un comportement normal car quand la ligne du tableau est supprimée les icônes "+" et "-" n'ont plus lieu d'exister car ils correspondent à la ligne supprimée

Donc le principe :
1) Tu choisis une ligne du TS
2) les icônes apparaissent à gauche de la ligne du TS choisi
3) Soit tu ajoutes une ligne et elle s’insère juste au dessous de la ligne sélectionnée
4) Soit tu supprimes la ligne et uniquement la ligne du TS est supprimée et les icônes qui correspondent à la ligne supprimée disparaisse aussi
Il faut bien comprendre que les icônes correspondent à la ligne du TS que tu viens de supprimer

Chaque fois que tu cliques sur une ligne du TS un calcul se fait pour connaitre le N° de la ligne du TS et positionner les icônes à gauche de la ligne du TS que tu viens de cliquer
 
Bonjour à tous,
@Phil69970 , @Dranreb un grand merci pour votre aide,

Phil69970, la version V2 est parfaite, j'ai vu qu'il fallait désactiver 2 lignes pour la solution.
Je reviendrai certainement dans une nouvelle discussion avec un sujet similaire mais plus élaboré concernant les icônes "flottantes"

Mille mercis encore à vous 2
Bonne journée

Cordialement
 
Bonjour à tous,

Pour simplifier le code on peut grouper les Shapes :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Sheet1.Shapes.Range(Array("addBtn", "deleteBtn"))
    If Not Intersect(Target, [employees_tbl]) Is Nothing Then
        .Group
        .Left = Target(1, 2 - Target.Column).Left + 20
        .Top = Target.Top
        .Visible = msoCTrue
        .Ungroup
    Else
        .Visible = msoFalse
    End If
End With
End Sub
Quant aux macros des boutons :
VB:
Sub addNewRow()
Dim Ligne&
With [employees_tbl].ListObject
    If .Active Then Ligne = ActiveCell.Row - .Range.Row: .ListRows.Add Ligne + 1
End With
End Sub

Sub deleteRow()
Dim Ligne&
With [employees_tbl].ListObject
    If .Active Then Ligne = ActiveCell.Row - .Range.Row: .ListRows(Ligne).Delete
End With
End Sub
A+
 

Pièces jointes

Dernière édition:
Re,
@job75 , merci d'avoir simplifier le code, c'est parfait
Par ailleurs, j'utilise beaucoup les raccourcis clavier et par curiosité, j'ai testé Ctrl + "+" et le Ctrl + "-"
Cela mène exactement au même résultat que les Shapes.
Je n'avais pas vraiment conscience que ces raccourcis "ajout/suppression" opèrent uniquement à l'intérieur du TS

Bonne fin de journée à tous

Cordialement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
863
Retour