Déplacement d'un bouton dans un modèle Word

Signaler
Messages postés
3
Date d'inscription
jeudi 12 mai 2011
Statut
Membre
Dernière intervention
30 août 2011
-
Messages postés
3
Date d'inscription
jeudi 12 mai 2011
Statut
Membre
Dernière intervention
30 août 2011
-
Bonjour,
Je sélectionne la ligne qui contient un bouton (inlineshape) suivi de texte,
je coupe la sélection (.cut),
je descends de quelques lignes,
je colle ma sélection (.paste).
Tout se passe bien apparemment sauf que le bouton a changé de nom !?
Le nom du bouton est incrémenté !? ex: BtnTest10 -> BtnTest101
Ce qui est gênant quand on essaie d'y faire référence et notamment son code.
Y-aurait-il quelque chose à faire pour cela ?
Quand je tente de renommer le bouton, j'ai une erreur 'La commande 'Name' de l'objet x a échoué...'
Merci pour vos conseils.
Word 2003, VBA

4 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut

"inlineshape" connais pô
Pourquoi ne déplaces-tu pas les lignes qui suivent et les remttre au dessus de ta ligne ? de cette manière tu ne toucherais pas à ce bouton.
Autre piste : Essaye de faire un copier-coller, puis une suppression de l'original, pour voir ce qu'il fait.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
3
Date d'inscription
jeudi 12 mai 2011
Statut
Membre
Dernière intervention
30 août 2011

Il y a un bouton par ligne et le but est de les trier.
Le copier-coller crée forcément un nouveau nom, j'avais déjà essayé cette solution.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Autre solution : Laisse les boutons en place et gère le nom affiché dans un tableau (Caption ou Text, je ne sais plus) de correspondance, par exemple; tu vois ce que je veux dire ?
Messages postés
3
Date d'inscription
jeudi 12 mai 2011
Statut
Membre
Dernière intervention
30 août 2011

Les captions des boutons sont en fait des compteurs dynamiques alignés sur les textes qui les suivent (chaque ligne commence par un signet qui me permet de me repérer) :
Quand le bouton est à zéro, il récupère la plus haute valeurs des autres boutons auquel il ajoute 1 et se l'attribue.
Quand la bouton est > zéro, il prend la valeur zéro et décrémente tous les autres de 1.
Quand on a fini, on élimine tous les boutons à zéro et on trie les boutons par valeur du bouton.
Quand on revient, on trie les boutons par ordre initial et on ajoute les boutons zéros manquants.
Tout se passe bien 1 fois sur 4 (en moyenne) : on dirait que VB garde le nom du bouton quelque part au moment du selection.cut, du coup ,au moment du selection.paste, il en crée un nouveau.
J'ai fait une fonction qui balaie et corrige ce défaut éventuel en fin de tri mais le Selection.InlineShapes(1).OLEFormat.Object.Name = sNomBtn échoue avec l'erreur VB.
Pourquoi cela ne fonctionne-t-il pas à chaque fois ?
La référence au nom du bouton est importante à cause du code lié au bouton.

Au départ :
(btn1:0) texte A
(btn2:0) texte B
(btn3:0) texte C
(btn4:0) texte D

En fin de choix :
(btn1:2) texte A
(btn2:3) texte B
(btn3:0) texte C
(btn4:1) texte D

Disposition finale :
(btn4:1) texte D
(btn1:2) texte A
(btn2:3) texte B

Quand on revient sur les choix :
(btn1:2) texte A
(btn2:3) texte B
(btn3:0) texte C
(btn4:1) texte D