Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Déplacer des cellules d'un tableau au moyen d'un SpinButton

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 !

Magic_Doctor

XLDnaute Barbatruc
Supporter XLD
Bonjour,

J'ai un tableau avec des items. Je voudrais pouvoir déplacer certains items de ce tableau vers le haut ou le bas au moyen d'un SpinButton. Je pense que les explications sont nettement plus claires sur la feuille.

Merci pour toute aide.
 

Pièces jointes

Re : Déplacer des cellules d'un tableau au moyen d'un SpinButton

Bonjour,
une proposition la plus simple possible pour que tu puisses la comprendre et l'adapter (elle suppose que la colonne à gauche de la plage est vide comme dans ton fichier mais sinon tu peux incorporer dans la macro la création d'une colonne temporaire et sa suppression en fin de macro) :
Code:
Option Explicit
Private Sub SpinButton1_SpinDown()
Dim Pl As Range
Set Pl = Range("B5:B13")
If Application.WorksheetFunction.CountIf(Pl, Selection) > 0 Then
    Application.ScreenUpdating = False
    Selection.Cut Destination:=Selection.Offset(0, -1)
    Selection.Offset(1, 0).Cut Destination:=Selection
    Selection.Offset(0, -1).Cut Destination:=Selection.Offset(1, 0)
    Selection.Offset(1, 0).Select
End If
Application.ScreenUpdating = True
End Sub

Private Sub SpinButton1_SpinUp()
Dim Pl As Range
Set Pl = Range("B6:B14")
If Application.WorksheetFunction.CountIf(Pl, Selection) > 0 Then
    Application.ScreenUpdating = False
    Selection.Cut Destination:=Selection.Offset(0, -1)
    Selection.Offset(-1, 0).Cut Destination:=Selection
    Selection.Offset(0, -1).Cut Destination:=Selection.Offset(-1, 0)
    Selection.Offset(-1, 0).Select
    Application.ScreenUpdating = True
End If
End Sub
Code à incorporer à ton SpinButton
A+
Edit : salut pierrejean
 
Dernière édition:
Re : Déplacer des cellules d'un tableau au moyen d'un SpinButton

Bonjour David84,

Merci pour ta réponse. Ça marche, mais je ne comprends pas pourquoi, quand je déplace un item, celui-ci, au cours de son déplacement, n'est sélectionné qu'une fois sur deux.
 

Pièces jointes

Re : Déplacer des cellules d'un tableau au moyen d'un SpinButton

Bonsoir pierrejean,

Idem, je n'avais pas rafraîchi...
Ta solution marche aussi. Bizarrement, comme avec celle de david84, lors du déplacement d'un item, il n'est sélectionné qu'une fois tous les 2 clics sur le SpinButton. Pourrait-on faire en sorte qu'il soit à chaque fois sélectionné ; ce serait, disons, moins "déconcertant" visuellement parlant.
Quoi qu'il en soit, merci pour ton intervention.
 
Re : Déplacer des cellules d'un tableau au moyen d'un SpinButton

Re
Ça marche, mais je ne comprends pas pourquoi, quand je déplace un item, celui-ci, au cours de son déplacement, n'est sélectionné qu'une fois sur deux.
je pense que c'est dû au comportement du contrôle en lui-même car la cellule est sélectionnée à chaque fois et non une fois sur deux.
Le plus simple à mon avis est d'utiliser un contrôle de formulaire plutôt qu'un ActiveX.
En adaptant la solution proposée par pierrejean cela semble donner le résultat escompté.
A+
 

Pièces jointes

Re : Déplacer des cellules d'un tableau au moyen d'un SpinButton

Bonsoir david84,

Effectivement, avec un contrôle de formulaire c'est, disons, plus élégant (même si ça ne change strictement rien quant au résultat).
Le problème est que, pour des raisons techniques et surtout afin d'éviter de cumuler des boutons sur la feuille, je ferai appel à un USF dans lequel il y aura ce SpinButton et d'autres choses (comme la possibilité de trier la liste -hors 2 derniers items- par ordre alphabétique). Voilà pourquoi je tenais à utiliser un ActiveX que j'inclurai dans l'USF.
Je me demandais si ce "tri" ne pourrait pas être éventuellement fait virtuellement dans un tableau ou un dictionnaire. Mais là je me mélange encore un peu les pinceaux.

Bonne soirée à tous.
 
Dernière édition:
Re : Déplacer des cellules d'un tableau au moyen d'un SpinButton

Bonsoir Si...,

J'ai l'impression, à moins que je ne me trompe, que votre solution fait appel à un contrôle de formulaire et non un ActiveX.
 
Re : Déplacer des cellules d'un tableau au moyen d'un SpinButton

Bonjour Magic_Doctor, salut David, Pierre, Si...

J'y vais de ma solution avec un contrôle de formulaire :

Code:
Sub Déplace()
Dim P As Range
Set P = [Liste].Offset(IIf([Liée], 2, 1)).Resize([Liste].Count - 4)
If Intersect(ActiveCell, P) Is Nothing Then Exit Sub
With ActiveCell
  .Cut
  .Offset(IIf([Liée], -1, 2)).Insert
  .Select
End With
End Sub
Voir les noms définis Liste et Liée.

Le "- 4" dépend bien sûr du nombre de cellules non déplaçables dans Liste.

Fichier joint.

A+
 

Pièces jointes

Re : Déplacer des cellules d'un tableau au moyen d'un SpinButton

Re

Cela offre l'avantage de supprimer l'alternance irritante de l'affichage de la sélection
On peut s'affranchir du -4 en définissant Liste de B4 à B12
 
Re : Déplacer des cellules d'un tableau au moyen d'un SpinButton

Salut 😀

Bonsoir Si...,

J'ai l'impression, à moins que je ne me trompe, que votre solution fait appel à un contrôle de formulaire et non un ActiveX.

voir l'onglet explicatif dans le fichier joint (exemple avec UsF).
 

Pièces jointes

- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…